Skip to main content
A transfer is a debit instruction from an entity’s account to a counterparty’s payment details. All transfers are asynchronous: the response reflects the initial queued state, and status updates are delivered via webhooks.

The Transfer object

string
Unique transfer identifier.
string
The ID of the source account being debited.
string
The ID of the entity that initiated the transfer.
string
The ID of the recipient counterparty.
string
The ID of the payment detail record used to route this transfer.
string
Always outflow for transfers initiated via the API.
string
ISO 4217 currency code (e.g. USD, GBP, EUR). Use USC for USDC and UST for USDT.
number
Transfer amount in the smallest currency unit. 10000 = $100.00 USD or £100.00 GBP.
number
Fee charged for this transfer in the smallest currency unit.
string
Transfer status. One of pending, processing, successful, failed, or reversed.
string
Human-readable description of the current status. For failures, indicates the cause, e.g. insufficient_funds, invalid_account_details, compliance_hold.
string
The payment type used for this transfer. One of bank-transfer, momo-transfer, stablecoin-transfer, or book-transfer.
string
Transfer description passed to the recipient’s bank statement where supported.
string
The idempotency key provided at creation. Used to identify and deduplicate transfers.
object
Arbitrary key-value metadata attached at creation.
number
Unix timestamp in milliseconds when the transfer was created.
number
Unix timestamp in milliseconds when the transfer was last updated.
Example transfer object

Transfer statuses

Payment Types

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 /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

string
required
The ID of the source account to debit. The account must have sufficient available balance.
string
required
The ID of the payment detail record. Returned by POST /payment-details.
string
required
The ID of the recipient counterparty. Returned by POST /counterparties.
string
required
ISO 4217 currency code for the transfer. e.g. GBP, USD, NGN.
number
required
Amount to send in the smallest currency unit. 10000 = $100.00 USD or £100.00 GBP.
string
required
The payment type of the transfer. It can be bank-transfer, momo-transfer, stablecoin-transfer, and book-transfer.
string
required
Transfer description. Passed to the recipient’s bank statement where the rail supports it. Maximum 100 characters.
string
required
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.
string
The ID of an FX quote from POST /fx-quotes. Required when the source account currency differs from the transfer currency.
string
Defaults to the authenticating entity when omitted. Required when acting on a child entity. See Managing child entities for details.
object
Arbitrary key-value metadata. Values must be strings.

Request

Response

Returns the created transfer object with status: "pending".

Errors


Create a mobile money transfer

POST /transfers Initiates a payout to a mobile money wallet. Supports M-Pesa, MTN, Airtel, Orange, Wave, and Tigo.

Request parameters

string
required
The ID of the source account to debit.
string
required
The ID of the payment detail record with payment_method: "momo-transfer".
string
required
The ID of the recipient counterparty.
number
required
Amount in the smallest currency unit.
string
required
ISO 4217 currency code for the transfer.
string
required
The payment type of the transfer. It can be bank-transfer, momo-transfer, stablecoin-transfer, and book-transfer.
string
required
Transfer description. Maximum 100 characters.
string
required
Idempotency key. Maximum 64 characters.
string
Defaults to the authenticating entity when omitted. Required when acting on a child entity. See Managing child entities for details.
object
Arbitrary key-value metadata. Values must be strings.

Request

Response

Returns the created transfer object with status: "pending".

Create a stablecoin transfer

POST /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

string
required
The ID of the source account to debit. Must hold a stablecoin balance (USC or UST).
string
required
The ID of the payment detail record with payment_method: "stablecoin-transfer".
string
required
The ID of the recipient counterparty.
number
required
Amount in the smallest stablecoin unit. 100000000 = 100.00 USDC.
string
required
ISO 4217 currency code for the transfer.
string
required
Transfer description. Maximum 100 characters.
string
required
The payment type of the transfer. It can be bank-transfer, momo-transfer, stablecoin-transfer, and book-transfer.
string
required
Idempotency key. Maximum 64 characters.
string
Defaults to the authenticating entity when omitted. Required when acting on a child entity. See Managing child entities for details.
object
Arbitrary key-value metadata. Values must be strings.

Request

Response

Returns the created transfer object with status: "pending".

Get a transfer

GET /transfers/{transfer_id} Retrieves a single transfer by ID.

Path parameters

string
required
The transfer ID.

Query parameters

string
Defaults to the authenticating entity when omitted. Required when acting on a child entity. See Managing child entities for details.

Request

Response

Returns the Transfer object.

List transfers

GET /transfers Returns a paginated list of transfers for an entity or account.

Query parameters

string
Defaults to the authenticating entity when omitted. Required when acting on a child entity. See Managing child entities for details.
string
Filter by source account.
string
Filter by status. One of pending, processing, successful, failed, or reversed.
integer
Number of results to return. Between 1 and 100. Defaults to 20.
string
Pagination cursor from a previous response. Omit for the first page.

Request

Response