
Loyalty & Rewards Open APIs let an integration partner, on behalf of its merchant customers, identify a customer, preview the rewards and points for an order, and then redeem rewards, apply the order to earn points, or void it. The platform computes each reward's discount for the cart. The POS applies the returned amounts and does not compute them from reward definitions.
Money amounts are integers in minor units (for example 1250 is $12.50). An order carries its currency once, and
reward amounts carry their own currency.
At checkout, call the endpoints in this order:
Redeem, payment and apply are one unit: if payment fails, call
Void rewards on order with the order_id.
See the checkout flow page for the full steps, and errors and retries for how to handle failures.
Our Loyalty & Rewards integration pipeline is still in development. Prospective partners can apply for API access directly through the DoorDash Developer Portal. New to the Developer Portal? Sign up here to create an account and apply for access. Already have a Developer Portal account? Log in and submit your application from the Integrations tab{' '} before building your integration.
Every request carries a JWT in the Authorization header (Bearer <JWT>). See the JWT
Token guide.
Identifies the customer and returns their loyalty account and rewards. Call it at checkout with order to
check rewards against the cart and get the points preview.
loyalty: points and points-based rewards.available_rewards: non-loyalty rewards the customer can use now.unavailable_rewards: non-loyalty rewards the customer has but cannot use yet, each with a reason.An unknown customer returns 200 with customer.status set to NOT_FOUND, and an empty list means there are
none. An error is returned only if the customer cannot be determined or every part fails.
Every reward carries a reward_type that distinguishes loyalty rewards (LOYALTY_REWARD), in-store rewards
(INSTORE_REWARD) and promotions (LOYALTY_PROMOTIONS).
| location_id required | string Your own store ID. |
required | object The customer's phone number or other agreed unique identifier. |
required | object The order, with its items, discounts and totals. |
{- "location_id": "store-1042",
- "customer": {
- "phone": "+14155550123",
- "locale": "en-US"
}, - "order": {
- "id": "pos-98231",
- "created_at": "2026-10-14T18:30:00Z",
- "subtotal": 1450,
- "currency": "USD",
- "discounts": [
- {
- "amount": 100,
- "discount_type": "MX_PROMO"
}
], - "tax": 116,
- "tip": 200,
- "items": [
- {
- "merchant_supplied_id": "menu-item-burger-combo",
- "name": "Burger Combo",
- "quantity": 1,
- "price": 1200,
- "line_total": 1450,
- "extras": [
- {
- "name": "Size",
- "merchant_supplied_id": "menu-extra-size",
- "options": [
- {
- "merchant_supplied_id": "menu-option-size-large",
- "name": "Large",
- "quantity": 1,
- "price": 100,
- "extras": [
- {
- "name": "Add-ons",
- "merchant_supplied_id": "menu-extra-addons",
- "options": [
- {
- "merchant_supplied_id": "menu-option-bacon",
- "name": "Bacon",
- "quantity": 1,
- "price": 150
}
]
}
]
}
]
}, - {
- "name": "Extras",
- "merchant_supplied_id": "menu-extra-extras",
- "options": [
- {
- "merchant_supplied_id": "menu-option-pickles",
- "name": "Extra pickles",
- "quantity": 1,
- "price": 0
}
]
}
]
}
]
}
}{- "customer": {
- "status": "IDENTIFIED"
}, - "loyalty": {
- "opt_in_status": "OPTED_IN",
- "current_points": 240,
- "earn_preview": {
- "points": 13,
- "points_after_order": 253,
- "program_status": "EARNING"
}, - "rewards": [
- {
- "reward_id": "rw-5off",
- "reward_type": "LOYALTY_REWARD",
- "name": "$5 off",
- "loyalty_program_id": "prog-77",
- "points_cost": 200,
- "definition": {
- "category": "FLAT_AMOUNT_OFF",
- "flat_amount_off": {
- "amount": 500,
- "currency": "USD"
}
}
}
]
}, - "available_rewards": [
- {
- "reward_id": "rw-fries-isr",
- "reward_type": "INSTORE_REWARD",
- "name": "Free fries with a burger",
- "definition": {
- "category": "FREE_ITEM",
- "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "menu-item-fries"
}
]
}
}
}, - {
- "reward_id": "rw-bday-2026",
- "reward_type": "LOYALTY_PROMOTIONS",
- "name": "Birthday dessert",
- "description": "A free dessert on your birthday week",
- "expiration_time": "2026-10-31T23:59:59Z",
- "definition": {
- "category": "FREE_ITEM",
- "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "menu-item-brownie",
- "name": "Brownie"
}
]
}
}
}
], - "unavailable_rewards": [
- {
- "reward": {
- "reward_id": "rw-10off-100",
- "reward_type": "LOYALTY_PROMOTIONS",
- "name": "$10 off $100",
- "definition": {
- "category": "FLAT_AMOUNT_OFF",
- "flat_amount_off": {
- "amount": 1000,
- "currency": "USD"
}
}
}, - "reason": "SUBTOTAL_BELOW_MINIMUM"
}
]
}Signs a customer up for loyalty. Complete the sign-up flow on the POS: collect the customer's phone number.
Call it only when the customer explicitly agrees to sign up, so no separate consent is captured. If the customer already has an account, nothing changes and the call still succeeds.
| location_id required | string Your own store ID. |
| phone required | string The customer's phone number. It is not validated for now: we do not verify that the customer owns it (for example with an SMS code). |
{- "location_id": "store-1042",
- "phone": "+14155550123"
}{- "code": "validation_error",
- "message": "location_id is required"
}Returns how the loyalty program and in-store rewards are set up for the location, and whether each is enabled.
Use loyalty.reward_structures to see what a customer can work towards.
| location-id required | string Example: store-1042 Your own store ID. |
{- "loyalty": {
- "loyalty_program_id": "prog-77",
- "is_enabled": true,
- "reward_structures": [
- {
- "name": "$5 off",
- "description": "Spend 200 points for $5 off",
- "points_cost": 200,
- "definition": {
- "category": "FLAT_AMOUNT_OFF",
- "flat_amount_off": {
- "amount": 500,
- "currency": "USD"
}
}
}
]
}, - "in_store_rewards": true
}Applies loyalty points for the order. Call it once, when the order is finalized, after Redeem rewards on order so loyalty is applied correctly.
order.id is the idempotency key: retry with the same body to get the
original response. A different body for an already applied order returns 409.| location_id required | string Your own store ID. |
required | object The order, with its items, discounts and totals. |
required | object The customer's phone number or other agreed unique identifier. |
| created_at required | string <date-time> When the transaction was created on your side, for example when the customer paid. Rewards are checked for validity as of this time. |
Array of objects (Tender) How the customer paid for the order. | |
| reward_ids | Array of strings IDs of the rewards used on this order, taken from Get customer rewards. |
{- "location_id": "store-1042",
- "customer": {
- "phone": "+14155550123"
}, - "order": {
- "id": "pos-98231",
- "created_at": "2026-10-14T18:30:00Z",
- "subtotal": 1450,
- "currency": "USD",
- "discounts": [
- {
- "amount": 100,
- "discount_type": "MX_PROMO"
}
], - "tax": 116,
- "tip": 200,
- "items": [
- {
- "merchant_supplied_id": "menu-item-burger-combo",
- "name": "Burger Combo",
- "quantity": 1,
- "price": 1450
}
]
}, - "tenders": [
- {
- "tender_type": "CARD",
- "amount": 1450,
- "card_info": {
- "last4": "4242",
- "exp_month": 8,
- "exp_year": 2028
}
}
], - "reward_ids": [
- "rw-5off",
- "rw-bday-2026"
], - "created_at": "2026-10-14T18:31:00Z"
}{- "loyalty": {
- "points_awarded": 8,
- "current_points": 53
}, - "rewards": [
- {
- "reward_id": "rw-bday-2026",
- "reward_type": "INSTORE_REWARD",
- "name": "Birthday dessert",
- "definition": {
- "category": "FREE_ITEM",
- "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "menu-item-brownie"
}
]
}
}
}
]
}Redeems rewards on an order. Loyalty rewards spend points, while promotions and account rewards are simply used. Call it once, when the order is finalized, before Apply rewards on order.
rewards.unavailable_rewards with a reason, and the rest are still redeemed.order.id is the idempotency key: retry with the same body to get the
original response. A different body for an already redeemed order returns 409.| location_id required | string Your own store ID. |
required | object The order, with its items, discounts and totals. |
required | object The customer's phone number or other agreed unique identifier. |
| reward_ids required | Array of strings IDs of the rewards used on this order, taken from Get customer rewards. |
| created_at required | string <date-time> When the transaction was created on your side, for example when the customer paid. Rewards are checked for validity as of this time. |
Array of objects (Tender) How the customer paid for the order. |
{- "location_id": "store-1042",
- "customer": {
- "phone": "+14155550123"
}, - "order": {
- "id": "pos-98231",
- "created_at": "2026-10-14T18:30:00Z",
- "subtotal": 1450,
- "currency": "USD",
- "discounts": [
- {
- "amount": 100,
- "discount_type": "MX_PROMO"
}
], - "tax": 116,
- "tip": 200,
- "items": [
- {
- "merchant_supplied_id": "menu-item-burger-combo",
- "name": "Burger Combo",
- "quantity": 1,
- "price": 1450
}
]
}, - "tenders": [
- {
- "tender_type": "CARD",
- "amount": 1450,
- "card_info": {
- "last4": "4242",
- "exp_month": 8,
- "exp_year": 2028
}
}
], - "reward_ids": [
- "rw-5off",
- "rw-bday-2026"
], - "created_at": "2026-10-14T18:31:00Z"
}{- "rewards": {
- "applied_rewards": [
- {
- "reward_id": "rw-bday-2026",
- "reward_type": "INSTORE_REWARD",
- "name": "Birthday dessert",
- "definition": {
- "category": "FREE_ITEM",
- "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "menu-item-brownie"
}
]
}
}
}
], - "unavailable_rewards": [
- {
- "reward_id": "rw-unknown",
- "reason": "INVALID_REWARD_ID"
}
]
}
}Voids every apply and redeem on the order as a whole: voiding an apply deducts the points earned, and voiding a redeem returns the points spent. Partial voids are not supported.
order_id identifies the order to void. Void the order if payment fails. An unknown order returns 404.order_id is the idempotency key: retry with the same body to get the
original response. A different body for an already voided order returns 409.| location_id required | string Your own store ID. |
| order_id required | string Your order ID: the |
| created_at required | string <date-time> When the void was created. |
{- "location_id": "store-1042",
- "order_id": "pos-98231",
- "created_at": "2026-10-14T18:45:00Z"
}{- "loyalty": {
- "current_points": 254,
- "rewards": [ ]
}, - "voided_rewards": [
- {
- "reward_id": "rw-bday-2026",
- "reward_type": "INSTORE_REWARD",
- "name": "Birthday dessert",
- "definition": {
- "category": "FREE_ITEM",
- "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "menu-item-brownie"
}
]
}
}, - "applied_discount": {
- "amount": 600,
- "currency": "USD",
- "allocations": [
- {
- "merchant_supplied_id": "menu-item-brownie",
- "amount": 600
}
]
}
}
]
}Details
| phone required | string The customer's phone number. It is not validated for now: we do not verify that the customer owns it (for example with an SMS code). |
| redemption_code | string Reserved for future use, as an alternative way to identify the customer. |
{- "phone": "string",
- "redemption_code": "string"
}| status required | string Enum: "IDENTIFIED" "NOT_FOUND" "CODE_NOT_CLAIMED" "CODE_EXPIRED" "CODE_WRONG_STORE"
The |
{- "status": "IDENTIFIED"
}| opt_in_status required | string Enum: "OPTED_IN" "NOT_OPTED_IN"
Customers earn points whether or not they are opted in. |
| current_points required | integer <int64> The customer's current points balance. |
Array of objects (Reward) Rewards the customer can redeem with points. Eligibility is checked again when the order is applied. | |
object A preview of the points this order would add to the account. Set only when |
{- "opt_in_status": "OPTED_IN",
- "current_points": 0,
- "rewards": [
- {
- "reward_id": "string",
- "reward_type": "LOYALTY_REWARD",
- "name": "string",
- "definition": {
- "category": "FLAT_AMOUNT_OFF",
- "flat_amount_off": {
- "amount": 0,
- "currency": "string"
}, - "percent_off": {
- "percent": 0
}, - "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}, - "bogo": {
- "buy_quantity": 0,
- "get_quantity": 0,
- "get_percent_off": 0,
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}, - "spend_x_get_y": {
- "spend_amount": 0,
- "currency": "string",
- "amount_off": 0,
- "percent_off": 0,
- "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}
}
}, - "description": "string",
- "expiration_time": "2019-08-24T14:15:22Z",
- "applied_discount": {
- "amount": 0,
- "currency": "string",
- "allocations": [
- {
- "merchant_supplied_id": "string",
- "amount": 0,
- "options": [
- { }
]
}
]
}, - "loyalty_program_id": "string",
- "points_cost": 0
}
], - "earn_preview": {
- "points": 0,
- "program_status": "EARNING",
- "points_after_order": 0
}
}| id required | string Your order ID, and the idempotency key for apply, redeem and void. An order is applied once and redeemed once: retry with the same ID and body to get the original response. A different body is rejected with 409. |
| created_at required | string <date-time> When the order was created. |
| subtotal required | integer <int64> Item total in minor units, before discounts, tax and tip. Loyalty points are calculated on the subtotal
minus discounts and minus the value of the rewards in |
| currency required | string ISO 4217 currency code (for example |
required | Array of objects (Item) The items on the order. |
Array of objects (Discount) Discounts the merchant applied. Do not list loyalty rewards here: send them in | |
| tax | integer <int64> Total tax in minor units. It does not affect points. |
| tip | integer <int64> Tip in minor units. It does not affect points. |
| alcohol_subtotal | integer <int64> Portion of subtotal that is alcohol, in minor units. Excluded from the points calculation. |
{- "id": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "subtotal": 0,
- "currency": "string",
- "items": [
- {
- "merchant_supplied_id": "string",
- "name": "string",
- "quantity": 0,
- "price": 0,
- "description": "string",
- "line_total": 0,
- "extras": [
- {
- "name": "string",
- "merchant_supplied_id": "string",
- "options": [
- {
- "name": "string",
- "merchant_supplied_id": "string",
- "quantity": 0,
- "price": 0,
- "extras": [
- { }
]
}
]
}
]
}
], - "discounts": [
- {
- "amount": 0,
- "discount_type": "MEMBER_SAVINGS"
}
], - "tax": 0,
- "tip": 0,
- "alcohol_subtotal": 0
}| tender_type required | string Enum: "CARD" "OTHER"
|
| amount required | integer Amount paid with this tender, in minor units of the order's currency. |
required | object Card details used to match in-store rewards (ISR). Set when |
{- "tender_type": "CARD",
- "amount": 0,
- "card_info": {
- "last4": "string",
- "exp_month": 0,
- "exp_year": 0
}
}| last4 required | string Last four digits of the card. |
| exp_month | integer Used only to match the card, never stored. |
| exp_year | integer Used only to match the card, never stored. |
{- "last4": "string",
- "exp_month": 0,
- "exp_year": 0
}| reward_id required | string ID of the reward. Send it in |
| reward_type required | string Enum: "LOYALTY_REWARD" "INSTORE_REWARD" "LOYALTY_PROMOTIONS"
More reward types may be added. |
| name required | string Display name of the reward. |
required | object What the reward is and how it works. |
| description | string A longer description of the reward, suitable for showing to the customer. |
| expiration_time | string <date-time> When the reward expires. |
object Discount this reward produces on the submitted order. Set only when | |
| loyalty_program_id | string The ID of the loyalty program. Set only for loyalty rewards. Matches the |
| points_cost | integer <int64> Points the customer spends to redeem this reward. |
{- "reward_id": "string",
- "reward_type": "LOYALTY_REWARD",
- "name": "string",
- "definition": {
- "category": "FLAT_AMOUNT_OFF",
- "flat_amount_off": {
- "amount": 0,
- "currency": "string"
}, - "percent_off": {
- "percent": 0
}, - "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}, - "bogo": {
- "buy_quantity": 0,
- "get_quantity": 0,
- "get_percent_off": 0,
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}, - "spend_x_get_y": {
- "spend_amount": 0,
- "currency": "string",
- "amount_off": 0,
- "percent_off": 0,
- "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}
}
}, - "description": "string",
- "expiration_time": "2019-08-24T14:15:22Z",
- "applied_discount": {
- "amount": 0,
- "currency": "string",
- "allocations": [
- {
- "merchant_supplied_id": "string",
- "amount": 0,
- "options": [
- { }
]
}
]
}, - "loyalty_program_id": "string",
- "points_cost": 0
}| name required | string Display name of the reward. |
required | object What the reward is and how it works. |
| points_cost required | integer <int64> Points the customer spends to redeem this reward. |
| description | string A longer description of the reward, suitable for showing to the customer. |
{- "name": "string",
- "definition": {
- "category": "FLAT_AMOUNT_OFF",
- "flat_amount_off": {
- "amount": 0,
- "currency": "string"
}, - "percent_off": {
- "percent": 0
}, - "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}, - "bogo": {
- "buy_quantity": 0,
- "get_quantity": 0,
- "get_percent_off": 0,
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}, - "spend_x_get_y": {
- "spend_amount": 0,
- "currency": "string",
- "amount_off": 0,
- "percent_off": 0,
- "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}
}
}, - "points_cost": 0,
- "description": "string"
}| points_awarded required | integer <int64> Points the customer earned on this order. |
| current_points required | integer <int64> The customer's points balance after this order. |
{- "points_awarded": 0,
- "current_points": 0
}| merchant_supplied_id required | string Your menu ID for the item. Used to match item-based rewards. |
| name required | string Name of the item. |
| quantity required | integer Number of this item on the order. |
| price required | integer <int64> Unit price of the item in minor units, not including its extras. |
| description | string Description of the item. |
| line_total | integer <int64> Total for the line in minor units, including quantity and extras. |
Array of objects (ItemExtra) Groups of choices on the item, such as "Size" or "Add-ons". |
{- "merchant_supplied_id": "string",
- "name": "string",
- "quantity": 0,
- "price": 0,
- "description": "string",
- "line_total": 0,
- "extras": [
- {
- "name": "string",
- "merchant_supplied_id": "string",
- "options": [
- {
- "name": "string",
- "merchant_supplied_id": "string",
- "quantity": 0,
- "price": 0,
- "extras": [
- { }
]
}
]
}
]
}| name required | string Name of the extra, such as "Size" or "Add-ons". |
| merchant_supplied_id required | string Your menu ID for the extra. |
Array of objects (ItemOption) The choices in this extra, such as "Large" or "Bacon". |
{- "name": "string",
- "merchant_supplied_id": "string",
- "options": [
- {
- "name": "string",
- "merchant_supplied_id": "string",
- "quantity": 0,
- "price": 0,
- "extras": [
- { }
]
}
]
}| name required | string Name of the option, such as "Large" or "Bacon". |
| merchant_supplied_id required | string Your menu ID for the option. |
| quantity required | integer Number of this option on the item. |
| price required | integer <int64> Unit price of the option in minor units. |
Array of objects (ItemExtra) Extras nested under this option. |
{- "name": "string",
- "merchant_supplied_id": "string",
- "quantity": 0,
- "price": 0,
- "extras": [
- {
- "name": "string",
- "merchant_supplied_id": "string",
- "options": [
- { }
]
}
]
}| category required | string Enum: "FLAT_AMOUNT_OFF" "PERCENT_OFF" "FREE_ITEM" "BOGO" "SPEND_X_GET_Y"
New categories may be added. |
object Set when the category is | |
object Set when the category is | |
object Set when the category is | |
object Set when the category is | |
object Set when the category is |
{- "category": "FLAT_AMOUNT_OFF",
- "flat_amount_off": {
- "amount": 0,
- "currency": "string"
}, - "percent_off": {
- "percent": 0
}, - "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}, - "bogo": {
- "buy_quantity": 0,
- "get_quantity": 0,
- "get_percent_off": 0,
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}, - "spend_x_get_y": {
- "spend_amount": 0,
- "currency": "string",
- "amount_off": 0,
- "percent_off": 0,
- "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}
}
}| amount required | integer <int64> Amount off, in minor units. |
| currency required | string ISO 4217 currency code. |
{- "amount": 0,
- "currency": "string"
}required | Array of objects (FreeItem) The free items. | ||||||||
Array
| |||||||||
{- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}| reference_type required | string Enum: "ITEM" "OPTION" "EXTRA" What the id refers to on the menu.
|
| merchant_supplied_id required | string ID of the item, option or extra as stored in your system. |
| name | string Name of the free item. |
| description | string Description of the free item. |
{- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}| buy_quantity | integer Quantity the customer must buy. |
| get_quantity | integer Quantity the customer gets at the discount. |
| get_percent_off | number Percentage off the items the customer gets, for example |
Array of objects (FreeItem) The menu items the offer applies to. |
{- "buy_quantity": 0,
- "get_quantity": 0,
- "get_percent_off": 0,
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}| spend_amount | integer <int64> Amount to spend, in minor units. |
| currency | string ISO 4217 currency code. |
| amount_off | integer <int64> Amount off, in minor units. |
| percent_off | number Percentage off. Set instead of |
object Items the customer gets for free. Set instead of |
{- "spend_amount": 0,
- "currency": "string",
- "amount_off": 0,
- "percent_off": 0,
- "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}
}| points required | integer <int64> Points the order would earn. |
| program_status required | string Enum: "EARNING" "NOT_ACTIVE" "NOT_EARNING_NO_ELIGIBLE_ITEMS" "NOT_EARNING_BELOW_MINIMUM_SPEND"
More statuses may be added. |
| points_after_order | integer <int64> The customer's points balance once the order is applied. |
{- "points": 0,
- "program_status": "EARNING",
- "points_after_order": 0
}| current_points required | integer <int64> The customer's points balance after the call. |
required | Array of objects (Reward) The loyalty rewards redeemed or voided. May be empty. |
{- "current_points": 0,
- "rewards": [
- {
- "reward_id": "string",
- "reward_type": "LOYALTY_REWARD",
- "name": "string",
- "definition": {
- "category": "FLAT_AMOUNT_OFF",
- "flat_amount_off": {
- "amount": 0,
- "currency": "string"
}, - "percent_off": {
- "percent": 0
}, - "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}, - "bogo": {
- "buy_quantity": 0,
- "get_quantity": 0,
- "get_percent_off": 0,
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}, - "spend_x_get_y": {
- "spend_amount": 0,
- "currency": "string",
- "amount_off": 0,
- "percent_off": 0,
- "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}
}
}, - "description": "string",
- "expiration_time": "2019-08-24T14:15:22Z",
- "applied_discount": {
- "amount": 0,
- "currency": "string",
- "allocations": [
- {
- "merchant_supplied_id": "string",
- "amount": 0,
- "options": [
- { }
]
}
]
}, - "loyalty_program_id": "string",
- "points_cost": 0
}
]
}object The loyalty program and its reward structures. Absent if the merchant has no loyalty program. | |
| in_store_rewards | boolean Whether in-store rewards are enabled (currently unavailable). |
{- "loyalty": {
- "loyalty_program_id": "string",
- "is_enabled": true,
- "reward_structures": [
- {
- "name": "string",
- "definition": {
- "category": "FLAT_AMOUNT_OFF",
- "flat_amount_off": {
- "amount": 0,
- "currency": "string"
}, - "percent_off": {
- "percent": 0
}, - "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}, - "bogo": {
- "buy_quantity": 0,
- "get_quantity": 0,
- "get_percent_off": 0,
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}, - "spend_x_get_y": {
- "spend_amount": 0,
- "currency": "string",
- "amount_off": 0,
- "percent_off": 0,
- "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}
}
}, - "points_cost": 0,
- "description": "string"
}
], - "terms_and_conditions_url": "string"
}, - "in_store_rewards": true
}| loyalty_program_id required | string The ID of the loyalty program. |
| is_enabled required | boolean Whether the program is currently turned on for the location. |
required | Array of objects (RewardStructure) The rewards customers can redeem with points. May be empty. |
| terms_and_conditions_url | string Link to the terms and conditions of the loyalty program. |
{- "loyalty_program_id": "string",
- "is_enabled": true,
- "reward_structures": [
- {
- "name": "string",
- "definition": {
- "category": "FLAT_AMOUNT_OFF",
- "flat_amount_off": {
- "amount": 0,
- "currency": "string"
}, - "percent_off": {
- "percent": 0
}, - "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}, - "bogo": {
- "buy_quantity": 0,
- "get_quantity": 0,
- "get_percent_off": 0,
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}, - "spend_x_get_y": {
- "spend_amount": 0,
- "currency": "string",
- "amount_off": 0,
- "percent_off": 0,
- "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}
}
}, - "points_cost": 0,
- "description": "string"
}
], - "terms_and_conditions_url": "string"
}required | Array of objects (Reward) Non-loyalty rewards redeemed on this order. May be empty. |
required | Array of objects (RedeemUnavailableReward) Rewards that could not be redeemed, each with a reason. May be empty. |
{- "applied_rewards": [
- {
- "reward_id": "string",
- "reward_type": "LOYALTY_REWARD",
- "name": "string",
- "definition": {
- "category": "FLAT_AMOUNT_OFF",
- "flat_amount_off": {
- "amount": 0,
- "currency": "string"
}, - "percent_off": {
- "percent": 0
}, - "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}, - "bogo": {
- "buy_quantity": 0,
- "get_quantity": 0,
- "get_percent_off": 0,
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}, - "spend_x_get_y": {
- "spend_amount": 0,
- "currency": "string",
- "amount_off": 0,
- "percent_off": 0,
- "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}
}
}, - "description": "string",
- "expiration_time": "2019-08-24T14:15:22Z",
- "applied_discount": {
- "amount": 0,
- "currency": "string",
- "allocations": [
- {
- "merchant_supplied_id": "string",
- "amount": 0,
- "options": [
- { }
]
}
]
}, - "loyalty_program_id": "string",
- "points_cost": 0
}
], - "unavailable_rewards": [
- {
- "reward_id": "string",
- "reason": "ITEM_NOT_IN_CART",
- "reward": {
- "reward_id": "string",
- "reward_type": "LOYALTY_REWARD",
- "name": "string",
- "definition": {
- "category": "FLAT_AMOUNT_OFF",
- "flat_amount_off": {
- "amount": 0,
- "currency": "string"
}, - "percent_off": {
- "percent": 0
}, - "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}, - "bogo": {
- "buy_quantity": 0,
- "get_quantity": 0,
- "get_percent_off": 0,
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}, - "spend_x_get_y": {
- "spend_amount": 0,
- "currency": "string",
- "amount_off": 0,
- "percent_off": 0,
- "free_items": {
- "items": [
- {
- "reference_type": "ITEM",
- "merchant_supplied_id": "string",
- "name": "string",
- "description": "string"
}
]
}
}
}, - "description": "string",
- "expiration_time": "2019-08-24T14:15:22Z",
- "applied_discount": {
- "amount": 0,
- "currency": "string",
- "allocations": [
- {
- "merchant_supplied_id": "string",
- "amount": 0,
- "options": [
- { }
]
}
]
}, - "loyalty_program_id": "string",
- "points_cost": 0
}
}
]
}| amount required | integer <int64> The discount in minor units. |
| discount_type required | string Enum: "MEMBER_SAVINGS" "MX_PROMO" "CPG_PROMO" "OTHER"
|
{- "amount": 0,
- "discount_type": "MEMBER_SAVINGS"
}| amount required | integer <int64> Discount in minor units, computed by the platform against subtotal minus the order's discounts. |
| currency required | string ISO 4217 currency code. |
Array of objects (LineAllocation) Per-line split of |
{- "amount": 0,
- "currency": "string",
- "allocations": [
- {
- "merchant_supplied_id": "string",
- "amount": 0,
- "options": [
- { }
]
}
]
}| merchant_supplied_id required | string Your menu ID for the item. Used to match item-based rewards. |
| amount required | integer <int64> Portion of the discount allocated to this line, in minor units. |
| options | Array of objects (LineAllocation) Split of |
{- "merchant_supplied_id": "string",
- "amount": 0,
- "options": [
- { }
]
}