Skip to main content
POST
Create a program
Creates a new program in your organization. A program only requires a name. By default, on_unknown_participant is set to CREATE, which means participants are auto-created on their first event. Set it to REJECT if you need explicit registration before processing events. Programs start as ACTIVE. You can suspend or archive them later via Update a program.
For usage patterns and examples, see the Programs guide.

Authorizations

X-API-Key
string
header
required

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

Body

application/json

Program details

name
string
required

Program name

Required string length: 1 - 255
Example:

"Q1 Sales Bonus"

description
string

Optional program description

Maximum string length: 1000
Example:

"Quarterly sales incentive program for the sales team"

fulfillment_max_face_value_minor
integer

Maximum face value of one gift-card redemption, in fiat minor units. Omit for no limit.

Example:

10000

fulfillment_mode
enum<string>

Default redemption behavior when capture is omitted. Defaults to INSTANT.

Available options:
INSTANT,
ASYNC
Example:

"ASYNC"

fulfillment_participant_max_amount_minor
integer

Maximum total face value per participant in the rolling period, in fiat minor units. Counts the same order statuses as fulfillment_participant_max_count. Omit for no limit.

Example:

25000

fulfillment_participant_max_count
integer

Maximum gift-card redemptions per participant in the rolling period. Counts PENDING, PROCESSING, AWAITING_FUNDS, and SUCCEEDED orders. Omit for no limit.

Example:

3

fulfillment_participant_window_seconds
integer

Rolling period, in seconds, used for each participant's gift-card limits. Required when either limit is set.

Example:

86400

on_unknown_participant
enum<string>

How to handle events for unregistered participants. Defaults to CREATE when absent or null; an explicit "" or any non-enum value is rejected.

Available options:
CREATE,
REJECT
Example:

"CREATE"

pending_redemption_ttl
string | null

Optional program-specific bound between 60 seconds and one year. Accepts Go-style durations plus d/w; without a request or program bound, pending redemptions default to 90 days.

Example:

"24h"

Response

Program created

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_max_face_value_minor
integer

Maximum face value of one gift-card redemption, in fiat minor units. Absent means unlimited.

Example:

10000

fulfillment_mode
enum<string>

Default redemption behavior when capture is omitted

Available options:
INSTANT,
ASYNC
Example:

"INSTANT"

fulfillment_participant_max_amount_minor
integer

Maximum total face value per participant in the rolling period, in fiat minor units. Counts the same order statuses as fulfillment_participant_max_count. Absent means unlimited.

Example:

25000

fulfillment_participant_max_count
integer

Maximum gift-card redemptions per participant in the rolling period. Counts PENDING, PROCESSING, AWAITING_FUNDS, and SUCCEEDED orders. Absent means unlimited.

Example:

3

fulfillment_participant_window_seconds
integer

Rolling period, in seconds, used for each participant's gift-card limits. Present only when at least one limit is set.

Example:

86400

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"