Skip to main content
POST
/
v1
/
participants
/
{id}
/
redemptions
/
items
Redeem a catalog item
curl --request POST \
  --url https://api.scrip.dev/v1/participants/{id}/redemptions/items \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <api-key>' \
  --data '
{
  "program_id": "550e8400-e29b-41d4-a716-446655440000",
  "reward_id": "550e8400-e29b-41d4-a716-446655440001",
  "amount": "50.00",
  "description": "Gift card redemption",
  "idempotency_key": "redeem-item-12345",
  "quantity": 2
}
'
{
  "amount": "1000.00",
  "asset_id": "550e8400-e29b-41d4-a716-446655440003",
  "created_at": "2024-01-15T10:30:00Z",
  "description": "Redeemed: Gift Card",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "journal_entry_id": "550e8400-e29b-41d4-a716-446655440005",
  "participant_id": "550e8400-e29b-41d4-a716-446655440002",
  "program_id": "550e8400-e29b-41d4-a716-446655440001",
  "quantity": 2,
  "reversed_amount": "0.00",
  "reversed_quantity": 0,
  "reward_id": "550e8400-e29b-41d4-a716-446655440004",
  "status": "COMPLETED",
  "unit_cost": "500.00",
  "updated_at": "2024-01-15T10:30:00Z"
}
Redeems a specific reward from the program’s catalog on behalf of a participant. For UNIT_BASED rewards, specify quantity (defaults to 1); for AMOUNT_BASED rewards, specify amount. The total cost deducted from the participant’s balance is calculated as quantity * unit_cost for unit-based rewards. Inventory is tracked automatically. Each successful redemption increments redeemed_count both globally and per participant. When a reward’s redeemed_count reaches its max_total, the reward auto-transitions to OUT_OF_STOCK status and further redemption attempts will fail. Per-participant limits are enforced via max_per_participant if configured on the reward. Ensure the reward’s status is ACTIVE and within its available_from/available_until window before calling this endpoint.
For usage patterns and examples, see the Redemptions guide.

Authorizations

X-API-Key
string
header
required

API key passed in the X-API-Key header.

Path Parameters

id
string<uuid>
required

Participant ID

Body

application/json

Catalog item redemption details

program_id
string<uuid>
required

The program this redemption belongs to

Example:

"550e8400-e29b-41d4-a716-446655440000"

reward_id
string<uuid>
required

The reward catalog item to redeem

Example:

"550e8400-e29b-41d4-a716-446655440001"

amount
string

Amount to redeem (AMOUNT_BASED rewards only, decimal string)

Example:

"50.00"

description
string

Optional context for this redemption, used in journal entries (max 500 chars)

Example:

"Gift card redemption"

idempotency_key
string

Prevents duplicate redemptions when retrying requests

Example:

"redeem-item-12345"

quantity
integer

Number of units to redeem (UNIT_BASED rewards only, defaults to 1)

Example:

2

Response

Duplicate request (idempotency key matched, returns existing record)

amount
string

Total amount debited from the participant's balance (decimal string)

Example:

"1000.00"

asset_id
string<uuid>

The asset that was debited

Example:

"550e8400-e29b-41d4-a716-446655440003"

created_at
string<date-time>

When this redemption was created

Example:

"2024-01-15T10:30:00Z"

description
string

Context for this redemption, used in journal entries

Example:

"Redeemed: Gift Card"

id
string<uuid>

Unique identifier for this redemption

Example:

"550e8400-e29b-41d4-a716-446655440000"

journal_entry_id
string<uuid>

The ledger journal entry created by this redemption

Example:

"550e8400-e29b-41d4-a716-446655440005"

participant_id
string<uuid>

The participant who redeemed

Example:

"550e8400-e29b-41d4-a716-446655440002"

program_id
string<uuid>

The program this redemption belongs to

Example:

"550e8400-e29b-41d4-a716-446655440001"

quantity
integer

Number of units redeemed (catalog redemptions only)

Example:

2

reversed_amount
string

Cumulative amount reversed so far (decimal string)

Example:

"0.00"

reversed_quantity
integer

Cumulative units reversed so far (UNIT_BASED catalog redemptions only)

Example:

0

reward_id
string<uuid>

The reward catalog item that was redeemed (catalog redemptions only)

Example:

"550e8400-e29b-41d4-a716-446655440004"

status
string

Current state: COMPLETED, PARTIALLY_REVERSED, or FULLY_REVERSED

Example:

"COMPLETED"

unit_cost
string

Cost per unit at the time of redemption (catalog redemptions only, decimal string)

Example:

"500.00"

updated_at
string<date-time>

When this redemption was last updated (e.g., after a reversal)

Example:

"2024-01-15T10:30:00Z"