Before you start
- Your organization must be enabled for AED. Until it is, a request in it fails with
403PAYOUT_CURRENCY_NOT_ENABLED. - The recipient’s account needs the UAE-dirham receiving capability, ACTIVE before you pay. Capabilities lists the id, and Be paid in UAE dirhams lists the identity the recipient owes.
- AED has no sending capability. Don’t send a
senderon a quote or payout, or it fails with422SENDER_NOT_SUPPORTED. - Every
POSTneeds anIdempotency-Keyheader. See Idempotency.
Register the bank account and create the payout
A UAE bank account is identified by its IBAN and paid over AE_LOCAL. The recipient owes a name and an address withline1 and country, in any country, and no identity document. See Be paid in UAE dirhams.
Register the account with routingFamily AE_LOCAL and the UAE IBAN as accountNumber. The IBAN carries the bank, so you send no BIC, bank code, or account type. No name check runs, so verifications[] stays empty. The accountHolderName can be at most 75 bytes. Be paid in UAE dirhams lists the characters it can use.
cURL
- Every payout needs a
purpose. Send one of GOODS_AND_SERVICES, INVESTMENTS, PAYROLL, or TREASURY_MANAGEMENT. OTHER is refused. A missing or refused value fails with400PURPOSE_INVALID. A quote carries nopurpose, so send it when you create the payout. - You fund it from a stablecoin or AED balance. The financial account must hold USDC, USDT, EURC, or AED. Any other send currency fails with
422QUOTE_SEND_CURRENCY_UNAVAILABLE. - Per-payout limits apply. A
receiveAmountoutside them is refused when the payout is priced, with422AMOUNT_OUT_OF_RANGE.error.detailscarries the exact bound.
cURL
Memos
On AE_LOCAL, areceiverMemo is at most 100 letters, digits, and spaces. A memo that is too long or holds any other character fails with 400 RECEIVER_MEMO_INVALID. OpenFX never truncates it.
Track settlement
On an AE_LOCAL payout,settlementTraceId.status reads UNSUPPORTED. Trace a payout with the receiving bank lists the key for every rail.
Common mistakes
- Naming a
sender. AED has no sending capability. Removesenderfrom the quote and the payout. - Leaving out
purpose, or sending OTHER. Both fail with400PURPOSE_INVALID. Pick the closest of the other four values. - Funding the payout from another currency. Fund it from USDC, USDT, EURC, or AED.
What’s next
Payout lifecycle
The general payout flow.
Capabilities
The receiving capability and identity each currency needs.
EUR payout integration guide
Paying euro accounts over SEPA or SWIFT.
MXN payout integration guide
Paying Mexican bank accounts over SPEI.
COP payout integration guide
Paying Colombian bank accounts and Bre-B keys.
Payment Webhooks
Every payout and address event.