Skip to main content
POST
Request the payload for a payment

Authorizations

Authorization
string
header
required

The access token received from the authorization server in the OAuth 2.0 flow.

Body

application/json

Request body for POST /v1/platform/payments/request-payload.

source_type
string
required

Where the money comes from: wallet, bank (the user's linked bank account), card (the user's saved card) or vba (the user's virtual bank account).

Maximum string length: 40
Example:

"wallet"

destination_type
string
required

Where the money goes: wallet, bank (a bank in the US — the user's own linked bank, named by bank_account_id, or a payee's bank destination, named by payee_destination_id), bank_international (a payee's bank abroad) or merchant (a card-acquiring account).

Maximum string length: 40
Example:

"bank"

amount
required

The amount to move, in major units, at most 2 decimal places. This is the amount the payment will move — create-transaction takes no amount of its own.

Required range: x > 0
Example:

250

idempotency_key
string
required

A unique value you pick for this request. Sending the same key again returns the same reference — even after it has expired — so a fresh quote needs a fresh key.

Required string length: 1 - 120
Example:

"quote-2026-09-11-0001"

currency
string
default:USD

ISO-4217 code of the amount. Defaults to USD.

Required string length: 3
Example:

"USD"

delivery_speed
enum<string>
default:standard

How fast the money should land. standard is the default for every movement; same_day (same-day ACH) and instant (real-time payment, bank destinations only) are offered where the movement supports them and are priced and timed on their own terms. A speed the movement cannot deliver is refused with speed_not_offered; a payment is never silently downgraded.

Available options:
standard,
same_day,
instant
Example:

"standard"

destination_country
string | null

ISO-3166 alpha-2 country the money lands in. Required when destination_type is bank_international; ignored otherwise.

Required string length: 2
Example:

"MX"

destination_currency
string | null

ISO-4217 code the recipient is paid in. Required when destination_type is bank_international; ignored otherwise.

Required string length: 3
Example:

"MXN"

bank_account_id
string<uuid> | null

Optional. The user's linked bank account this payment will use — the source of a deposit from bank, or the destination of a withdrawal to bank (the user's own bank; a transfer). When given, the payload is worked out for that bank: a route that cannot serve it is not offered, and create-transaction will not send you back for a new payload. Refused (field_not_allowed) for a movement that takes no bank account, or alongside payee_destination_id.

Example:

"33333333-3333-3333-3333-333333333333"

payee_destination_id
string<uuid> | null

Optional. The payee destination a bank or bank_international payout will pay (a send). When given, the payload is worked out for that destination — send it whenever you know it, and always for an email destination. Refused (field_not_allowed) for a movement that takes no payee destination, or alongside bank_account_id.

Example:

"22222222-2222-2222-2222-222222222222"

Response

Payload described

Standard response wrapper for single-object responses and errors.

Generic over the payload type. A route that declares CommonResponse[SomeModel] gets the real data schema rendered in OpenAPI/Swagger; a bare CommonResponse leaves data untyped.

status_code
integer
required

HTTP status code for the response.

data
any
required

Payload or error details.

query_generated_time
integer
required

UTC timestamp (milliseconds since epoch) when response was generated.