> ## Documentation Index
> Fetch the complete documentation index at: https://docs.omneo.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Working with Benefits

> Creating benefit definitions, issuing benefits to profiles, and recording redemptions via the API.

Benefits are non-monetary entitlements, they represent a status, access right, or experience rather than a dollar-value discount. Examples: free shipping, complimentary alterations, VIP access, first-spend discounts, member birthday experiences.

Working with benefits involves up to four steps:

1. Create a Benefit Definition (once per benefit type)
2. Issue the benefit to a profile
3. Record a redemption when the benefit is used
4. Optionally link the redemption to a transaction

## Step 1: Create a benefit definition

A Benefit Definition describes the type of benefit and its rules. You only need to create a definition once per benefit type.

```shell theme={null}
curl -X POST https://api.[tenant].getomneo.com/api/v3/benefit-definitions \
  -H "Authorization: Bearer ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "First Spend Discount",
    "handle": "first-spend",
    "description": "10% off first purchase for new members",
    "short_description": "Get 10% off your first spend with us!",
    "long_description": "<p>Valid for 7 days from issue date.</p>",
    "terms_conditions": "Terms and conditions apply",
    "earn_instructions": "Automatically issued on signup",
    "redeem_instructions_store": "Show to staff at checkout",
    "redeem_instructions_online": "Apply at checkout",
    "period": 7,
    "max_redemptions": 1,
    "is_extendable": false,
    "is_reassignable": false,
    "is_published": true,
    "tags": ["first-spend", "new-member"]
  }'
```

Note down the `id` from the response, you will need it to issue the benefit.

## Step 2: Issue a benefit to a profile

```shell theme={null}
curl -X POST https://api.[tenant].getomneo.com/api/v3/benefits \
  -H "Authorization: Bearer ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "benefit_definition_id": 94,
    "profile_id": "92a7996b-abb6-4c9c-a845-9aaf8202fab6",
    "issued_at": "2025-06-15 09:00:00",
    "timezone": "Australia/Melbourne"
  }'
```

## Reading benefits on a profile

```shell theme={null}
GET /api/v3/profiles/{profileId}/benefits
```

Returns all active benefits for the profile. Use this at POS or checkout to present the customer's available benefits.

```shell theme={null}
GET /api/v3/profiles/{profileId}/benefits/{benefitId}
```

## Step 3: Record a redemption

When a customer uses a benefit, record the redemption:

```shell theme={null}
curl -X POST https://api.[tenant].getomneo.com/api/v3/profiles/{profileId}/benefits/{benefitId}/redemptions \
  -H "Authorization: Bearer ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "issued_at": "2025-06-15 14:30:00",
    "timezone": "Australia/Melbourne",
    "external_id": "POS-REDEMPTION-001"
  }'
```

Note down the redemption `id`.

## Step 4: Link the redemption to a transaction

When the redemption is tied to a purchase, include the `redemption_id` in the transaction payload:

```shell theme={null}
curl -X POST https://api.[tenant].getomneo.com/api/v3/transactions \
  -H "Authorization: Bearer ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "profile_id": "92a7996b-abb6-4c9c-a845-9aaf8202fab6",
    "total": 89.99,
    "total_original": 99.99,
    "transacted_at": "2025-06-15 14:32:00",
    "timezone": "Australia/Melbourne",
    "redemption_id": 159,
    "items": [...]
  }'
```

## Claimable benefits for eCommerce

For benefit redemption flows in eCommerce (rather than POS), see [Claimable Benefits, eCommerce](/dev-guides/incentives/claimable-benefits-ecommerce).
