Creating a reward
Rewards are scoped to a program and priced in a linked asset.Reward types
UNIT_BASED
Discrete quantities with a fixed cost per unit. Use for items like gift cards, merchandise, or experiences. When a participant redeems, the total cost isquantity * unit_cost. Scrip commits inventory when it authorizes or instantly captures the redemption. See Inventory management for the inventory measures and OUT_OF_STOCK transitions.
AMOUNT_BASED
Flexible amounts without inventory tracking. Use for cashback, statement credits, or charitable donations. Participants specify anamount when redeeming. max_total and max_per_participant are not supported for this type.
Reward status
Only
ACTIVE rewards can be redeemed.
Availability windows
Restrict when a reward is redeemable by settingavailable_from and available_until. Both are optional. If both are set, available_from must be before available_until.
Managing rewards
You can list, inspect, and update rewards through the API. Archived rewards are hidden from list results by default but can be included withinclude_archived=true.
redemption_type and asset_id cannot be changed after creation. All other fields can be updated.
Inventory management
Inventory tracking applies toUNIT_BASED rewards only. Reward detail and list responses expose these measures:
AMOUNT_BASED rewards return null for all three quantities and both caps. The keys are always present.
Inventory changes with the fulfillment lifecycle:
- Authorization increments
committed_unitsandpending_units - Capture moves units from
pending_unitstodelivered_units.committed_unitsstays unchanged - Failure, cancellation, and timeout decrement
pending_unitsandcommitted_units.delivered_unitsstays unchanged - Instant redemption increments
committed_unitsanddelivered_units - Reversal of a completed redemption decrements
committed_unitsanddelivered_units
max_per_participant.
max_totalcan be updated at any time; the only validation is that it stays positive. Lowering it below the currentcommitted_unitsdoes not retract past redemptions or change the reward’s status, but new redemptions fail with409 max_total_exceededwhile committed inventory is at or above the cap- Use
DRAFTstatus while configuring, then switch toACTIVEwhen ready - When authorization or instant redemption brings
committed_unitsup tomax_total, the reward transitions toOUT_OF_STOCKautomatically OUT_OF_STOCKis a live inventory state. The reward returns toACTIVEwhen failure, cancellation, timeout, or reversal bringscommitted_unitsbelowmax_total
reward.status_changed.
See Redemptions for how participants redeem catalog items and how reversals restore inventory.