Skip to main content
PATCH
Update a program
Updates a program’s name, description, on_unknown_participant, status, or redemption target configuration. Only include the fields you want to change; omitted fields are left unchanged. Status can be set to ACTIVE, SUSPENDED, or ARCHIVED. A SUSPENDED program preserves all data but stops event processing: event submissions can still be accepted for async validation, then fail with program_inactive. An ARCHIVED program has the same event-processing behavior and is hidden from list results. While a program is ARCHIVED, you can still update name and description, or reactivate the program by setting status to ACTIVE or SUSPENDED. Behavioral configuration changes are blocked while archived and return 409 with code program_archived. This includes on_unknown_participant, redemption_target_type, and redemption_target_entity_id. Setting redemption_target_type to LEDGER_ENTITY requires redemption_target_entity_id in the same request. Setting it to SYSTEM_REDEMPTION or SYSTEM_BREAKAGE must omit redemption_target_entity_id and clears any existing reference. Changes only affect redemptions created after the update: existing redemptions and their reversals continue to use the target captured at the time they were created.
For usage patterns and examples, see the Programs guide. For redemption target options, see Redemption Targets.

Authorizations

X-API-Key
string
header
required

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

Path Parameters

id
string<uuid>
required

Program ID

Body

application/json

Fields to update

description
string

Program description

Maximum string length: 1000
Example:

"Updated description"

fulfillment_mode
enum<string>

Default redemption behavior when capture is omitted

Available options:
INSTANT,
ASYNC
Example:

"ASYNC"

name
string

Program name

Required string length: 1 - 255
Example:

"Updated Program Name"

on_unknown_participant
enum<string>

How to handle events for unregistered participants

Available options:
CREATE,
REJECT
Example:

"REJECT"

pending_redemption_ttl
string | null

Optional program-specific bound between 60 seconds and one year. Explicit null clears it; without a request or program bound, pending redemptions default to 90 days.

Example:

"24h"

redemption_target_entity_id
string<uuid>

Target ledger entity ID. Required when redemption_target_type is LEDGER_ENTITY; must be omitted for the SYSTEM_* targets.

Example:

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

redemption_target_type
enum<string>

Where redeemed value is posted. One of SYSTEM_REDEMPTION, SYSTEM_BREAKAGE, LEDGER_ENTITY. The paired example shows LEDGER_ENTITY because that is the only target type that pairs with redemption_target_entity_id; SYSTEM_* targets must omit it.

Available options:
SYSTEM_REDEMPTION,
SYSTEM_BREAKAGE,
LEDGER_ENTITY
Example:

"LEDGER_ENTITY"

status
enum<string>

Lifecycle state

Available options:
ACTIVE,
SUSPENDED,
ARCHIVED
Example:

"SUSPENDED"

Response

Updated program

created_at
string<date-time>

When the program was created

Example:

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

deleted_at
string<date-time>

Set when the program is archived

Example:

"2024-06-01T00:00:00Z"

description
string

Optional program description

Example:

"Quarterly sales incentive program"

fulfillment_mode
enum<string>

Default redemption behavior when capture is omitted

Available options:
INSTANT,
ASYNC
Example:

"INSTANT"

id
string<uuid>

Program ID

Example:

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

name
string

Program name

Example:

"Q1 Sales Bonus"

on_unknown_participant
string

How events for unregistered participants are handled

Example:

"CREATE"

pending_redemption_ttl
string

Optional program-specific bound between 60 seconds and one year. Without a request or program bound, pending redemptions default to 90 days.

Example:

"24h"

redemption_target_entity_id
string<uuid>

Target ledger entity ID. Present only when redemption_target_type is LEDGER_ENTITY.

Example:

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

redemption_target_type
string

Where redeemed value is posted: SYSTEM_REDEMPTION, SYSTEM_BREAKAGE, or LEDGER_ENTITY

Example:

"SYSTEM_REDEMPTION"

status
string

Lifecycle state

Example:

"ACTIVE"

updated_at
string<date-time>

When the program was last modified

Example:

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