The Transfer object
Unique transfer identifier.
The ID of the source account being debited.
The ID of the entity that initiated the transfer.
The ID of the recipient counterparty.
The ID of the payment detail record used to route this transfer.
Always
outflow for transfers initiated via the API.ISO 4217 currency code (e.g.
USD, GBP, EUR). Use USC for USDC and UST for USDT.Transfer amount in the smallest currency unit.
10000 = $100.00 USD or £100.00 GBP.Fee charged for this transfer in the smallest currency unit.
Transfer status. One of
pending, processing, successful, failed, or reversed.Human-readable description of the current status. For failures, indicates the cause — e.g.
insufficient_funds, invalid_account_details, compliance_hold.Transfer description passed to the recipient’s bank statement where supported.
The idempotency key provided at creation. Used to identify and deduplicate transfers.
Arbitrary key-value metadata attached at creation.
Unix timestamp in milliseconds when the transfer was created.
Unix timestamp in milliseconds when the transfer was last updated.
Example transfer object
Transfer statuses
| Status | Description |
|---|---|
pending | Transfer created and queued for processing. |
processing | Being executed by the payment network. |
successful | Delivered to the recipient. |
failed | Could not be completed. Check status_reason for the cause. |
reversed | Completed transfer was subsequently reversed. |
Subscribe to
outflows.created, outflows.completed, outflows.failed, and outflows.cancelled webhooks to track transfers in real time. See Event types.Create a bank transfer
POST /bank-transfers
Initiates a payout to a counterparty via a bank transfer rail (FPS, SEPA, ACH, Wire, SWIFT, and others). The payment method and routing scheme are derived from the payment detail record.
Request parameters
The ID of the source account to debit. The account must have sufficient available balance.
The ID of the payment detail record. Returned by
POST /counterparties/{counterparty_id}/payment-details.Amount to send in the smallest currency unit.
10000 = $100.00 USD or £100.00 GBP.Transfer description. Passed to the recipient’s bank statement where the rail supports it. Maximum 100 characters.
Idempotency key. If a transfer with this reference already exists for the account, the original transfer is returned rather than creating a duplicate. Maximum 64 characters.
Arbitrary key-value metadata. Values must be strings.
Request
Response
Returns the created transfer object withstatus: "pending".
Errors
| Code | Description |
|---|---|
422 | Validation error — a required field is missing or invalid. |
422 | Insufficient funds in the source account. |
404 | The account_id or payment_detail_id was not found. |
409 | A transfer with this unique_reference already exists. Returns the original transfer. |
Create a mobile money transfer
POST /momo-transfers
Initiates a payout to a mobile money wallet. Supports M-Pesa, MTN, Airtel, Orange, Wave, and Tigo.
Request parameters
The ID of the source account to debit.
The ID of the payment detail record with
payment_method: "momo-transfer".Amount in the smallest currency unit.
Transfer description. Maximum 100 characters.
Idempotency key. Maximum 64 characters.
Arbitrary key-value metadata. Values must be strings.
Request
Response
Returns the created transfer object withstatus: "pending".
Create a stablecoin transfer
POST /stablecoin-transfers
Initiates a stablecoin send to an on-chain wallet address. Supports USDC (USC) and USDT (UST) on Ethereum, Solana, Base, and Polygon.
Request parameters
The ID of the source account to debit. Must hold a stablecoin balance (
USC or UST).The ID of the payment detail record with
payment_method: "stablecoin-transfer".Amount in the smallest stablecoin unit.
100000000 = 100.00 USDC.Transfer description. Maximum 100 characters.
Idempotency key. Maximum 64 characters.
Arbitrary key-value metadata. Values must be strings.
Request
Response
Returns the created transfer object withstatus: "pending".
Get a transfer
GET /transfers/{transfer_id}
Retrieves a single transfer by ID.
Path parameters
The transfer ID.
Query parameters
Required when authenticating with an API key.
Request
Response
Returns the Transfer object.List transfers
GET /transfers
Returns a paginated list of transfers for an entity or account.
Query parameters
Filter by entity ID. Required when authenticating with an API key.
Filter by source account.
Filter by status. One of
pending, processing, successful, failed, or reversed.Number of results to return. Between 1 and 100. Defaults to
20.Pagination cursor from a previous response. Omit for the first page.
