Creating a Transfer
| Field | Required | Description |
|---|---|---|
program_id | Yes | Program context |
asset_id | Yes | Which asset to transfer |
source_external_id | One of | Participant sending funds (by your external ID). Mutually exclusive with source_group_id and source_participant_id. |
source_participant_id | One of | Participant sending funds (by Scrip UUID). Mutually exclusive with source_external_id and source_group_id. |
source_group_id | One of | Group sending funds. Mutually exclusive with source_external_id and source_participant_id. |
recipients | Yes | Array of 1-100 recipients, each with external_id, participant_id, or group_id and an amount |
description | Yes | Reason for the transfer (1-500 characters) |
idempotency_key | No | Prevents duplicate transfers on retry. Same key + different payload returns 409. |
available balance is debited for the total amount, and each recipient’s available balance is credited. The entire transfer is atomic: if any part fails, nothing moves.
Multi-Recipient Transfers
Split funds across multiple recipients in a single request:Identifying Participants and Groups
The source and recipients can be identified by external ID, Scrip UUID, or group ID. Each identifier is mutually exclusive. Provide exactly one per source or recipient. For the source, usesource_external_id, source_participant_id, or source_group_id. For recipients, use external_id, participant_id, or group_id on each entry.
LOT-Mode Assets
ForLOT-mode assets, transfers consume lots from the source in FIFO order and create new lots for each recipient. The new lots get fresh created_at timestamps, meaning vintage resets on transfer. Source lot expiration dates do not carry over to the recipient.
Response
The response includes ajournal_entry_id for tracing the transfer in the ledger, along with computed totals.
Transfer vs. Credit vs. Adjust
| Operation | What it does | Use case |
|---|---|---|
| Transfer | Moves existing funds from source to recipients | P2P gifting, marketplace payouts |
CREDIT (rule action) | Creates new funds (or draws from program wallet) | Rewards, bonuses, earning points |
| Adjust (API) | Manual credit or debit on a single participant | Customer service, corrections |
Requirements
- All recipients must be
ACTIVE. The source can beACTIVEorCLOSED(allowing fund recovery from closed accounts). - Program must be
ACTIVE(notSUSPENDEDorARCHIVED) - Source must have sufficient
availablebalance for the total transfer amount. If insufficient, the entire transfer rolls back. - Source and recipient cannot be the same entity
- Idempotency keys are scoped per program. Replaying a request with the same key and parameters returns the original result. Replaying with the same key but different parameters returns a 409 conflict.