Skip to main content
Every resource in the Scrip API is listed below with its key fields and relationships. For a higher-level walkthrough, see Core Concepts. All resources are identified by a UUID id assigned by Scrip. Many also carry an external identifier or human-readable key for integration with your system.

Entity Overview

EntityDescriptionKey FieldsAPI Prefix
OrganizationTop-level tenant that owns all other resourcesid, name, statusManaged via dashboard
ProgramContainer for rules, assets, and participantsid, name, key, status, on_unknown_participant/v1/programs
AssetUnit of value (points, cashback, credits)id, name, symbol, scale, inventory_mode, issuance_policy/v1/assets
ParticipantA user in your systemid, external_id, status, tags, counters, attributes/v1/participants
GroupCollection of participants for team-based incentivesid, name, key, type/v1/groups
EventSignal from your app that triggers rule evaluationid, idempotency_key, event_data, status/v1/events
RuleCEL condition + list of actionsid, name, condition, actions, order, status/v1/rules
AutomationScheduled or triggered event generationid, name, type, schedule, status/v1/programs/{id}/automations
Tier TypeStatus hierarchy definition with levelsid, key, display_name, levels, lifecycle/v1/programs/{id}/tiers
RewardCatalog item available for redemptionid, name, unit_cost, redemption_type, status/v1/programs/{id}/rewards
RedemptionRecord of a participant spending balanceid, participant_id, asset_id, amount, status/v1/participants/{id}/redemptions
TransferMovement of value between participantsid, source_external_id, recipients, total_amount/v1/transfers
Journal EntryDouble-entry ledger recordid, postings, event_id, rule_id, created_at/v1/journal-entries
LotIndividual credit with expiration/vestingid, asset_id, amount, expires_at, matures_atvia participant lots endpoint
Webhook EndpointRegistered URL that receives event notificationsid, url, enabled_events, status, secret/v1/webhook-endpoints
Webhook DeliveryRecord of a delivery attempt to a webhook endpointid, webhook_event_id, webhook_endpoint_id, event_type, status, attempt_count/v1/webhook-deliveries
Request LogRecord of an API requestid, method, path, status_code, duration_ms/v1/logs

Relationships

  • An Organization is the top-level tenant. Programs, Assets, Participants, and Groups all belong to an organization. API keys are scoped to an organization.
  • A Program belongs to an Organization and contains Rules, links to Assets, and scopes Participants.
  • An Asset exists at the organization level and can be linked to multiple Programs. Each program maintains independent wallet balances for prefunded assets.
  • A Participant exists at the organization level and can participate across multiple Programs. Participants can be members of one or more Groups.
  • Events are sent to a Program for a specific Participant. The event triggers rule evaluation against that participant’s state.
  • Rules belong to a Program and produce Journal Entries when their actions fire.
  • Redemptions, Transfers, and balance adjustments all produce Journal Entries in the double-entry ledger.
  • Lots track individual credits within a participant’s balance. They only exist for assets using LOT inventory mode.
  • Tier Types belong to a Program. Participants progress through tier levels based on counter qualification or explicit rule actions.
  • Automations are scoped to a Program and generate Events on a schedule, at a specific time, or in response to participant state changes.
  • Webhook Endpoints belong to an Organization. When domain events occur (balance changes, redemptions, tier transitions), matching endpoints receive signed HTTP notifications via Webhook Deliveries.

Organization

The top-level tenant in Scrip. Every other resource (programs, assets, participants, groups) belongs to an organization. API keys are scoped to an organization. Organizations are managed through the Scrip dashboard, not the API.

Key Fields

FieldTypeDescription
idstring (UUID)Scrip-assigned identifier
namestringDisplay name
statusstringLifecycle state
created_atstring (RFC 3339)Creation timestamp
updated_atstring (RFC 3339)Last modification timestamp

Status Values

StatusDescription
ACTIVENormal operation
ARCHIVEDDeactivated

Program

The top-level container within an organization that holds rules, links to assets, and scopes participants. Most teams create one program per use case.

Key Fields

FieldTypeDescription
idstring (UUID)Scrip-assigned identifier
namestringDisplay name
keystringURL-safe identifier
statusstringCurrent lifecycle state
on_unknown_participantstringEnrollment policy when an event arrives for an unknown participant
descriptionstringOptional context
created_atstring (RFC 3339)Creation timestamp
updated_atstring (RFC 3339)Last modification timestamp

Status Values

StatusDescription
ACTIVEEvents process and rules evaluate normally
SUSPENDEDNew events are rejected. Can be reactivated.
ARCHIVEDHidden from default listings. Historical data remains.

Enrollment Policy

ValueDescription
CREATEAuto-create participant on first event (default)
REJECTReject events for unknown participants
See the Programs guide for usage patterns. Browse the Programs endpoints.

Asset

Defines the unit of value participants earn and spend. Three immutable settings control behavior: inventory mode, issuance policy, and scale.

Key Fields

FieldTypeDescription
idstring (UUID)Scrip-assigned identifier
namestringDisplay name
symbolstringShort code (e.g., PTS, USD), unique per organization
scaleintegerDecimal precision (0 to 18)
inventory_modestringSIMPLE or LOT
issuance_policystringUNLIMITED or PREFUNDED
max_transaction_amountstring (decimal)Optional per-transaction ceiling. Rejects any single credit or debit that exceeds this value.
created_atstring (RFC 3339)Creation timestamp

Inventory Mode

ValueDescription
SIMPLESingle balance per bucket. No per-credit lifecycle.
LOTEach credit creates a separate lot with optional expiration and vesting.

Issuance Policy

ValueDescription
UNLIMITEDCredits mint new value on demand
PREFUNDEDCredits draw from the program wallet, which must be funded first
See the Asset Configuration guide for usage patterns. Browse the Assets endpoints.

Participant

A user in your system, identified by your own external_id. Carries state (tags, counters, attributes, tiers) that rules read and write.

Key Fields

FieldTypeDescription
idstring (UUID)Scrip-assigned identifier
external_idstringYour application’s user identifier
statusstringCurrent lifecycle state
tagslist (string)Boolean flags (normalized to lowercase)
countersmap (string -> number)Numeric accumulators
attributesmap (string -> string)Key-value metadata
balanceslistCurrent balances per asset, split by bucket
tiersmapCurrent tier level per tier type
program_idslist (UUID)Programs this participant is enrolled in
created_atstring (RFC 3339)Creation timestamp
The list endpoint returns a slim response (id, external_id, status, timestamps). The detail endpoint returns all fields above in a single call.

Identifiers

IDFormatUse
idUUIDScrip’s internal identifier, used in all API paths
external_idStringYour application’s user ID, used for lookups via query parameter

Status Values

StatusEarningSpendingState Updates
ACTIVEYesYesAll
SUSPENDEDNoNoTags and attributes only
CLOSEDNoNoTags and attributes only
See the Participants guide for usage patterns. Browse the Participants endpoints.

Group

A collection of participants that shares a wallet and state. Groups exist at the organization level and can participate across programs.

Key Fields

FieldTypeDescription
idstring (UUID)Scrip-assigned identifier
namestringDisplay name
keystringURL-safe identifier
typestringGroup classification
memberslistParticipant members with roles (ADMIN or MEMBER)
tagslist (string)Group-level boolean flags
countersmap (string -> number)Group-level numeric accumulators
attributesmap (string -> string)Group-level key-value metadata

Member Roles

RoleDescription
ADMINCan manage group membership
MEMBERStandard member
See the Groups guide for usage patterns. Browse the Groups endpoints.

Event

A signal from your application that triggers rule evaluation. Events are processed asynchronously and deduplicated by idempotency_key per program.

Key Fields

FieldTypeDescription
idstring (UUID)Scrip-assigned identifier
program_idstring (UUID)Target program
external_idstringParticipant’s external identifier
participant_idstring (UUID)Participant’s Scrip identifier (alternative to external_id)
idempotency_keystringUnique key per program for exactly-once processing
event_timestampstring (RFC 3339)When the event occurred in your system
event_dataobjectJSON payload available to rules as event.* in CEL
statusstringProcessing state
created_atstring (RFC 3339)Ingestion timestamp

Status Values

StatusDescription
PENDINGReceived, waiting for processing
PROCESSINGWorker is evaluating rules
COMPLETEDAll rules evaluated and actions executed
FAILEDProcessing error or max retries exceeded
See the Event Processing guide for usage patterns. Browse the Events endpoints.

Rule

A CEL condition paired with a list of actions. When an event is processed, rules evaluate in order. Matching rules execute their actions within the same transaction.

Key Fields

FieldTypeDescription
idstring (UUID)Scrip-assigned identifier
program_idstring (UUID)Owning program
namestringDisplay name
conditionstringCEL expression that must return true
actionslistActions to execute when the condition matches
orderintegerEvaluation order (lower first)
stop_after_matchbooleanSkip subsequent rules when this one matches
active_fromstring (RFC 3339)Start of time window (optional)
active_tostring (RFC 3339)End of time window (optional)
budgetslistPer-asset spending caps
statusstringCurrent lifecycle state

Status Values

StatusDescription
ACTIVEEvaluates on every event
SUSPENDEDSkipped during evaluation. Can be reactivated.
ARCHIVEDSoft-deleted. Excluded from evaluation and default listings.
See the Writing Rules guide for usage patterns. Browse the Rules endpoints.

Automation

Generates events on a schedule, at a specific time, or in response to participant state changes. Scoped to a program.

Key Fields

FieldTypeDescription
idstring (UUID)Scrip-assigned identifier
program_idstring (UUID)Owning program
namestringDisplay name (unique per program)
trigger.typestringcron, one_time, immediate, or participant_state
scopestringprogram or participants
event_namestringEvent type generated when the automation fires
payloadobjectJSON merged into the event’s event_data
statusstringCurrent lifecycle state
last_run_atstring (RFC 3339)Timestamp of the most recent execution

Status Values

StatusDescription
activeReady to fire on schedule
pausedDisabled. Will not fire until reactivated.
completedTerminal. One-time and immediate automations move here after firing.
failedTerminal. Disabled after repeated consecutive failures.
archivedSoft-deleted via the delete endpoint.
See the Automations guide for usage patterns. Browse the Automations endpoints.

Tier Type

Defines a ranked progression track (e.g., Silver / Gold / Platinum) with ordered levels. Participants advance based on counter qualification or explicit rule actions.

Key Fields

FieldTypeDescription
idstring (UUID)Scrip-assigned identifier
keystringUnique identifier within the program
display_namestringHuman-readable name
levelslistOrdered tier levels, each with key, rank, qualification, and benefits
lifecycleobjectRetention mode, qualification period, downgrade policy, and counter rollover

Level Fields

FieldTypeDescription
keystringUnique within the tier type
rankintegerHierarchy position (higher = higher tier)
display_namestringHuman-readable name
qualificationobjectCounter-based criteria for automatic advancement
benefitsobjectArbitrary JSON returned with tier state
See the Tiers guide for usage patterns. Browse the Tiers endpoints.

Reward

A catalog item that participants can redeem with their balance. Scoped to a program and priced in a linked asset.

Key Fields

FieldTypeDescription
idstring (UUID)Scrip-assigned identifier
namestringDisplay name (unique per program)
redemption_typestringUNIT_BASED or AMOUNT_BASED (immutable after creation)
asset_idstring (UUID)Asset this reward is priced in (immutable after creation)
unit_coststring (decimal)Cost per unit, or minimum amount for AMOUNT_BASED
max_totalintegerGlobal inventory cap (UNIT_BASED only)
max_per_participantintegerPer-participant cap (UNIT_BASED only)
redeemed_countintegerCurrent global redemption count
available_fromstring (RFC 3339)Start of availability window
available_untilstring (RFC 3339)End of availability window
statusstringCurrent lifecycle state

Status Values

StatusDescription
DRAFTNot yet available for redemption
ACTIVEAvailable for redemption
OUT_OF_STOCKInventory exhausted (set automatically)
ARCHIVEDRemoved from listings. Cannot be redeemed.
See the Rewards Catalog guide for usage patterns. Browse the Rewards endpoints.

Redemption

A record of a participant spending balance, either as a raw amount debit or a catalog item purchase. Supports full and partial reversals.

Key Fields

FieldTypeDescription
idstring (UUID)Scrip-assigned identifier
participant_idstring (UUID)Participant who redeemed
program_idstring (UUID)Program context
asset_idstring (UUID)Asset debited
amountstring (decimal)Total amount debited
reward_idstring (UUID)Catalog item redeemed (null for raw redemptions)
descriptionstringReason for the redemption
idempotency_keystringDeduplication key (scoped per program)
reversed_amountstring (decimal)Cumulative amount reversed
statusstringCurrent state
created_atstring (RFC 3339)Creation timestamp

Status Values

StatusDescription
COMPLETEDNo reversals applied
PARTIALLY_REVERSEDSome amount reversed, more can follow
FULLY_REVERSEDEntire redemption reversed
See the Redemptions guide for usage patterns. Browse the Redemptions endpoints.

Transfer

An atomic movement of funds from one participant or group to one or more recipients. Zero-sum: the source is debited by the total credited to all recipients.

Key Fields

FieldTypeDescription
idstring (UUID)Scrip-assigned identifier
program_idstring (UUID)Program context
asset_idstring (UUID)Asset transferred
source_external_idstringParticipant sending funds (mutually exclusive with source_participant_id and source_group_id)
source_participant_idstring (UUID)Participant sending funds by Scrip UUID (mutually exclusive with source_external_id and source_group_id)
source_group_idstring (UUID)Group sending funds (mutually exclusive with source_external_id and source_participant_id)
recipientslistArray of recipients, each with external_id, participant_id, or group_id and an amount
total_amountstring (decimal)Sum of all recipient amounts
descriptionstringReason for the transfer
idempotency_keystringDeduplication key (scoped per program)
journal_entry_idstring (UUID)Corresponding ledger record
See the Transfers guide for usage patterns. Browse the Transfers endpoints.

Journal Entry

An immutable double-entry ledger record. Every balance change (credits, debits, holds, releases, forfeits, redemptions, transfers) produces a journal entry with postings that sum to zero.

Key Fields

FieldTypeDescription
idstring (UUID)Scrip-assigned identifier
descriptionstringHuman-readable summary
postingslistDebit and credit lines, each with account, signed amount, and bucket
event_idstring (UUID)Event that triggered this entry (null for direct API operations)
action_typestringLedger action type (e.g. CREDIT, DEBIT, HOLD, RELEASE, FORFEIT, MATURITY)
reference_idstringCorrelation ID linking hold, release, and settle operations (LOT-mode assets only, null when not applicable)
created_by_api_key_idstring (UUID)API key that triggered this entry (null for rule-triggered operations)
entry_hashstringSHA-256 hash sealing this entry into the organization’s hash chain
created_atstring (RFC 3339)Creation timestamp

Posting Fields

FieldTypeDescription
idstring (UUID)Posting identifier
entity_typestringAccount owner type: PARTICIPANT, PROGRAM, GROUP, SYSTEM_ISSUANCE, SYSTEM_BREAKAGE, or SYSTEM_REDEMPTION
asset_symbolstringSymbol of the asset being transacted
amountstring (decimal)Signed amount (positive = credit, negative = debit)
bucketstringAVAILABLE, HELD, or DEFERRED
participant_idstring (UUID)Participant who owns this account (present when entity_type is PARTICIPANT)
group_idstring (UUID)Group that owns this account (present when entity_type is GROUP)
program_idstring (UUID)Program that owns this account (present when entity_type is PROGRAM)
created_atstring (RFC 3339)Creation timestamp
See the Ledger guide for usage patterns. Browse the Reporting endpoints.

Lot

An individual credit with its own balance, expiration, and vesting date. Only exists for assets using LOT inventory mode. Lots are consumed in FIFO order when funds are debited.

Key Fields

FieldTypeDescription
idstring (UUID)Scrip-assigned identifier
asset_idstring (UUID)Asset this lot belongs to
amountstring (decimal)Original credited amount
remainingstring (decimal)Current unspent balance
statusstringCurrent lifecycle state
reference_idstringCorrelation ID linking this held lot to a hold operation (null when not held via reference)
created_atstring (RFC 3339)Creation timestamp
expires_atstring (RFC 3339)Expiration deadline (null if no expiry)
matures_atstring (RFC 3339)Vesting date (null if immediately available)

Status Values

StatusSpendableDescription
DEFERREDNoLot has a future matures_at and is waiting for automatic maturity
AVAILABLEYesMature and spendable
HELDNoReserved via a hold operation
CONSUMEDNoFully spent
EXPIREDNoexpires_at has passed, forfeited to breakage
Lots credited with a future matures_at land in DEFERRED and automatically transition to AVAILABLE when the maturity date passes. DEFERRED is read-only and cannot be targeted by rules or API writes. See the Lots & Expiration guide for usage patterns. Browse the Participant lots endpoint.

Webhook Endpoint

A registered URL that receives signed HTTP notifications when domain events occur. Endpoints are scoped to an organization and filter events by type.

Key Fields

FieldTypeDescription
idstring (UUID)Scrip-assigned identifier
urlstringHTTPS destination URL
descriptionstringHuman-readable label
secretstringHMAC-SHA256 signing secret (whsec_ prefix). Only returned on create and rotate.
enabled_eventslist (string)Subscribed event types, or ["*"] for all
statusstringCurrent lifecycle state
metadataobjectArbitrary key-value metadata
created_atstring (RFC 3339)Creation timestamp
updated_atstring (RFC 3339)Last modification timestamp

Status Values

StatusDescription
ACTIVEReceiving deliveries
DISABLEDNot receiving deliveries. Can be reactivated.
ARCHIVEDSoft-deleted via the delete endpoint.
See the Webhooks guide for usage patterns. Browse the Webhooks endpoints.

Webhook Delivery

A record of a delivery attempt from a webhook event to a specific endpoint. Tracks attempt count, response details, and retry scheduling.

Key Fields

FieldTypeDescription
idstring (UUID)Scrip-assigned identifier
webhook_event_idstring (UUID)The event that triggered this delivery
webhook_endpoint_idstring (UUID)The target endpoint
event_typestringThe event type that triggered this delivery (e.g. balance.credited)
statusstringCurrent delivery state
attempt_countintegerNumber of attempts made
max_attemptsintegerMaximum attempts before marking failed (default 8)
next_attempt_atstring (RFC 3339)When the next attempt is scheduled
last_attempt_atstring (RFC 3339)When the last attempt was made
last_response_statusintegerHTTP status code from the last attempt
last_response_bodystringResponse body from the last attempt (truncated to 4 KB)
last_errorstringError message for network-level failures
delivered_atstring (RFC 3339)When successfully delivered
created_atstring (RFC 3339)Creation timestamp
updated_atstring (RFC 3339)Last modification timestamp

Status Values

StatusDescription
PENDINGAwaiting delivery attempt
SENDINGClaimed by the delivery worker
DELIVEREDSuccessfully delivered (2xx response)
FAILEDPermanently failed (4xx response or max attempts exceeded)
See the Webhooks guide for usage patterns. Browse the Webhooks endpoints.

Request Log

A record of an API request made to your organization. Useful for debugging, auditing, and monitoring.

Key Fields

FieldTypeDescription
idstring (UUID)Scrip-assigned identifier
methodstringHTTP method (GET, POST, etc.)
pathstringRequest path
status_codeintegerHTTP response status code
duration_msintegerRequest duration in milliseconds
auth_typestringAuthentication method used
request_idstringValue of the X-Request-ID header
created_atstring (RFC 3339)Request timestamp
See the Reporting guide for usage patterns. Browse the Logs endpoints.