Money in
These are the methods a client can hold a virtual account in, and the currency each one receives. A payer wires that currency; the client is credited in the account that rail settles into.
Money can also arrive on chain with no rail at all: anything sent to the client’s
baseSmartWallet
on Base is its balance the moment it confirms, and a transfer from another chain can be quoted first
with POST /dapi/v1/payins carrying originChainId. Neither path needs a verified client — only a
ready one.
Money out
Every method here is a destination a contact can hold. Grouped by market, with the identifiers each one routes on in Rails and payment methods.Americas
Europe, Middle East and Africa
Asia-Pacific
swift is the exception to the grouping above: it is an international wire, not a domestic
system, and it carries USD to a beneficiary bank in most of the world.
A method suffixed _ewallet routes to a mobile wallet on a phone number rather than to a bank
account. A method suffixed _local is that market’s domestic clearing system. Neither changes how
you call the API: both are a contact, then a payout.
On chain
A client balance settles on Base, in USDC or EURC. A wallet contact on Base holding either token is paid straight out of the balance, with nothing converted and no partner involved. A contact on any other chain, or expecting any other token, is paid through a cross-chain route — the samePOST /dapi/v1/payouts, quoted with fromChainId and toChainId.
GET /dapi/v1/chains answers the live list: every chain, its EVM chainId, and each token’s
decimals and contract address. Read it at startup rather than hardcoding the codes in
Chain codes.
Between a client’s own accounts
A client holds up to three accounts:USDC and EURC on its Base smart wallet, and
FDIC_USD when a partner bank holds a dollar virtual account for it. POST /dapi/v1/swaps moves
money between any two of them it holds, and which pairs can be served at a given moment is answered
by pricing them — POST /dapi/v1/swaps/preview returns the best route or refuses with
422 swap_route_unavailable (Swaps).
What actually decides availability
Four things narrow the catalogue above, and each one has a refusal that names it.
The cheapest way to find out what a client can really do is to create one, verify it and read
GET /dapi/v1/banks — in the sandbox exactly as in production. Naming the currencies and markets
you sell into is part of the conversation that switches your integrator account on; see
Going live.
Next: Fees
Where a fee is declared, where it is quoted, and which side of a payment absorbs it.