Redeem a catalog item
Redeem a reward catalog item for a participant. Capture immediately or authorize into a PENDING redemption backed by a ledger reservation.
UNIT_BASED rewards, specify quantity (defaults to 1); for AMOUNT_BASED rewards, specify amount. Set capture: true to capture immediately, capture: false to authorize into PENDING, or omit it to use the program’s fulfillment_mode.
Instant capture debits AVAILABLE and credits the redemption target. Authorization moves the calculated cost to HELD and returns reservation_id plus the effective expires_at. Use expires_at or ttl_seconds to bound a pending redemption; they are mutually exclusive. For UNIT_BASED rewards, both paths commit catalog inventory immediately, so committed_units includes units still awaiting fulfillment.
Pass an idempotency_key to safely retry requests. Duplicate requests return 200 with the existing redemption instead of 201.
Authorizations
API key passed in the X-API-Key header.
Path Parameters
Participant ID
Body
Catalog item redemption details
The program this redemption belongs to
"550e8400-e29b-41d4-a716-446655440000"
The reward catalog item to redeem
"550e8400-e29b-41d4-a716-446655440001"
Amount to redeem (AMOUNT_BASED rewards only, decimal string)
"50.00"
Whether to capture immediately. True completes instantly, false authorizes, and omission uses the program fulfillment_mode.
false
Optional context for this redemption, used in journal entries (max 500 chars)
"Gift card redemption"
Absolute pending-redemption deadline (RFC3339); alternative to ttl_seconds and limited to one year. If no request or program deadline is set, the authorization defaults to 90 days.
"2024-01-15T11:30:00Z"
Prevents duplicate redemptions when retrying requests
"redeem-item-12345"
Number of units to redeem (UNIT_BASED rewards only, defaults to 1)
2
Relative pending-redemption deadline in seconds; alternative to expires_at and limited to one year. If no request or program deadline is set, the authorization defaults to 90 days.
3600
Response
Duplicate request (idempotency key matched, returns existing record)
Total amount debited from the participant's balance (decimal string)
"1000.00"
The asset that was debited
"550e8400-e29b-41d4-a716-446655440003"
Ledger entry that captured a pending redemption
"550e8400-e29b-41d4-a716-446655440007"
When the pending redemption was captured
"2024-01-15T10:45:00Z"
When this redemption was created
"2024-01-15T10:30:00Z"
Context for this redemption, used in journal entries
"Redeemed: Gift Card"
Effective deadline of the backing reservation. Always present for pending redemptions; defaults to 90 days and may be configured up to one year.
"2024-01-15T11:30:00Z"
Machine-readable or operator-supplied terminal failure detail
"fulfillment_failed"
Unique identifier for this redemption
"550e8400-e29b-41d4-a716-446655440000"
Immutable ledger anchor: the hold entry for pending redemptions, otherwise the instant redemption entry
"550e8400-e29b-41d4-a716-446655440005"
The participant who redeemed
"550e8400-e29b-41d4-a716-446655440002"
The program this redemption belongs to
"550e8400-e29b-41d4-a716-446655440001"
Number of units redeemed (catalog redemptions only)
2
Reservation backing a pending redemption
"550e8400-e29b-41d4-a716-446655440006"
When the pending redemption reached a terminal state
"2024-01-15T10:45:00Z"
Cumulative amount reversed so far (decimal string)
"0.00"
Cumulative units reversed so far (UNIT_BASED catalog redemptions only)
0
The reward catalog item that was redeemed (catalog redemptions only)
"550e8400-e29b-41d4-a716-446655440004"
Current lifecycle and reversal state
PENDING, COMPLETED, FAILED, CANCELLED, PARTIALLY_REVERSED, FULLY_REVERSED "COMPLETED"
Cost per unit at the time of redemption (catalog redemptions only, decimal string)
"500.00"
When this redemption was last updated (e.g., after a reversal)
"2024-01-15T10:30:00Z"