Create a custom reward
Create a custom reward when your application handles delivery. For example, a canvas tote might cost 1,000 points, with 100 totes available and a limit of two per participant:Custom reward types
UNIT_BASED
Discrete quantities with a fixed cost per unit. Use for items like 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
List your program’s rewards to see custom rewards and gift cards together. Archived rewards are hidden by default; include them withinclude_archived=true. You can update custom rewards directly, as shown below. To change gift cards, update their reward source.
redemption_type and asset_id cannot be changed after creation. Other custom-reward 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.