Skip to main content
POST

Authorizations

Authorization
string
header
required

Session JWT (from register/login) or API key (pk_...). X-API-Key: <token> is accepted as an alternative header.

Headers

Idempotency-Key
string

Alternative to the idempotency_key body field.

Body

application/json
country
string
required

ISO 3166-1 alpha-2 destination country (e.g. CL, PE, MX).

currency
string
required

Local currency (e.g. CLP, PEN, MXN).

amount
string
required

Local currency amount as a positive decimal string.

Example:

"50000.00"

method
string

Payout method from GET /v1/payouts/methods (e.g. bank_transfer or sepa).

beneficiary
object

Destination account details. Required keys depend on the country and method; see GET /v1/payouts/methods and GET /v1/payouts/banks. Examples: RUT + bank in Chile, CLABE in Mexico, CCI in Peru. Brazil PIX: pix_key + pix_key_type (cpf, cnpj, phone, email, evp), or a bank account without key using bank_code (ISPB) + branch_code + account_number + tax_id. Ecuador (remittance corridor): document_value (cédula) plus the sender's data flat in the same object (sender_name, sender_document_value, ...); optional structured names (given_name, first_surname, ... and their sender_* pairs) take precedence over the automatic split of name. Argentina: tax_id (11-digit CUIT/CUIL) + account_number (22-digit CBU or CVU, or a 6–20 character bank alias with at least one letter; USD is CBU-only) — no bank_code. United States (USD): full beneficiary identity and postal address on every transfer — name, email, account_number, country_code, address, city, postal_code, bank_name, bank_country and bank_code (ABA routing number for ach/wire, SWIFT BIC for swift); account_type (CHECKING/SAVING) is required for ach and wire. The beneficiary may live in ANY country (country_code is free — e.g. an ACH to a US bank for someone living in Germany); state is required only when country_code is US. The receiving bank must be in the US for ach/wire (bank_country: "US" — the domestic rails do not pay banks abroad) along with its full address block (bank_address, bank_city, bank_postal_code, and bank_state for US banks); for swift the bank address block is optional (the rail derives it from the BIC) and bank_country may be any country. Annex-B jurisdictions (CU/IR/KP/SY) stay blocked for both the beneficiary and the bank country (422 prohibited_country). Every USD bank-rail transfer also requires a supporting document (invoice/receipt) uploaded first via POST /v1/payouts/documents — see the payout guide. SEPA Instant (method: "sepa") is EUR-only and uses the single EU routing row. The beneficiary's actual country is read from the IBAN. GB is excluded from SEPA Instant V1 and a GB IBAN fails fast with HTTP 400 before dispatch. Its beneficiary requires beneficiary_type (individual or corporate) and iban; bic is optional. For individuals, given_name + first_surname take precedence over name.

beneficiary_contact_id
string<uuid>

Use the contact's most recent saved beneficiary for this country (and method, when sent) instead of typing beneficiary again. An explicit beneficiary always wins; 422 no_saved_destination if the contact has none.

save_contact
boolean
default:true

The beneficiary is saved as a contact automatically; send false to skip it.

description
string

Optional payment narrative. For SEPA, the adapter folds it to the provider corporate charset, rejects unsupported characters with 400 invalid_payload, and truncates the wire value to 140 runes.

settlement_asset
enum<string>

Virtual balance to debit for this operation. Accepted values are USDT, USDC, BTC, GOLD, SILVER, PLATINUM, BOB, MXN and ARS. Fiat execution currently returns 503 pricing_unavailable. Omit to use your account's default settlement asset (USD is the principal balance).

Available options:
USD,
USDT,
USDC,
BTC,
GOLD,
SILVER,
PLATINUM,
BOB,
MXN,
ARS
source_virtual_iban_id
string<uuid>

Optional active funding_usdt virtual IBAN that funds a customer SEPA payout. Omit only when the account has exactly one active EUR funding account; send it when several are active. The ordering identity is read from the vIBAN registrant.

source_instrument_id
string<uuid>

Optional active purpose: banking BO/BOB deposit instrument used as the payout source. Outside BO/BOB this field is rejected. Omit when the mother account should be used; multiple active BO sources require this UUID.

idempotency_key
string
options
object

Optional rail-specific options. For a deliberate retry after a recent bank rejection, set destination_retry_ack to the most recent prior case ID. For US/USD ach, wire and swift, purpose is required and accepts one of the 21 payment-purpose labels or codes case-insensitively. purpose_detail is required only for Other and has a maximum length of 140.

Response

Idempotency replay of an existing payout....

payout_id
string<uuid>
account_id
string<uuid>
idempotency_key
string
country
string
currency
string
method
string
local_amount
string
fx_rate
string

Your account's rate at execution time (local units per 1 USDT).

rate_source
enum<string>

Execution rate provenance. lot, blend or spot; omitted for historical rows without attribution.

Available options:
lot,
blend,
spot
usdt_amount
string
fee
string
total_debit
string
settlement_asset
enum<string>

Virtual balance the operation was actually debited from.

Available options:
USD,
USDT,
USDC,
BTC,
GOLD,
SILVER,
PLATINUM
settlement_amount
string

Exact amount debited from the settlement asset's balance (in that asset's units). Equals total_debit when the asset is USDT. If the payout fails this exact amount is refunded — never re-quoted.

settlement_rate
string

Effective USD price per unit of the settlement asset used to convert the USDT total ("1" for USDT/USDC).

beneficiary
object
description
string
status
enum<string>

pending with compliance_pending: true means technical beneficiary screening is queued before any debit or core dispatch. After screening passes, pending can use compliance_dispatch_pending, compliance_dispatching or core_unreachable while the debit remains held.

Available options:
pending,
processing,
completed,
failed
status_code
string

Normalized state detail. compliance_pending is pre-debit; compliance_dispatch_pending, compliance_dispatching and core_unreachable are durable post-screening transition codes.

status_message
string
funds_debited
boolean

False before a pending technical-screening payout is debited. True after screening passes and the debit/hold exists, including pending dispatch transitions.

predebit_failure
boolean

True when screening or a hard compliance gate ended the payout before any debit. It is distinct from a failed payout whose debit was later refunded.

compliance_pending
boolean

True only while technical screening is queued before any debit or core dispatch; false after the screening process result is accepted.

bank_reference
string

Bank/rail transaction reference (e.g. the bank's transfer id, which the beneficiary can use to cross-check the payment with their bank). On US ACH/wire/SWIFT it is the CBF reference returned immediately at create; on other corridors it stays empty until the rail reports it.

uetr
string

UETR/SWIFT gpi tracking identifier reported by the bank after execution; empty until available.

imad
string

Domestic wire/ACH tracking identifier reported by the bank after execution; empty until available.

created_at
string<date-time>
updated_at
string<date-time>
idempotency_hit
boolean

Present (true) when the response is an idempotent replay.

receipt_url
string<uri>

Present only when a receipt exists, normally after debit and a final-state transition. Omitted while the payout is pending technical screening before debit.