- Same-currency transfer to an external account
- Cross-currency transfer with a quote
- Sending to a UMA address
Choosing the right method
- Same-currency: Best for domestic payouts when sender and recipient use the same currency. Uses local payment rails (e.g., RTP, SEPA Instant, PIX, FPS) for low cost and fast settlement.
- Cross-currency: Use when conversion is required or when paying globally across borders. Also supports sending to a crypto wallet address when configured.
- UMA: Send using a Universal Money Address. Ideal for global counterparties on networks.
Same-Currency Transfers
Use the/transfer-out
endpoint when sending funds in the same currency (no exchange rate needed). This is the simplest and fastest option for domestic transfers.
When to use same-currency transfers
- Transferring USD from a USD internal account to a USD external account
- Sending funds within the same country using the same payment rail
- No currency conversion is required
Create a transfer
1
Get account IDs
Retrieve the internal account (source) and external account (destination) IDs:Note the
id
fields from both the internal and external accounts you want to use.2
Initiate the transfer
Create the transfer by specifying the source and destination accounts:
Success (201 Created)
The
amount
is specified in the smallest unit of the currency (cents for USD, pence for GBP, etc.). For example, 12550
represents $125.50 USD.3
Track transfer status
The transaction is created with a Option 2: Poll the transaction endpoint
PENDING
status. Monitor the status by:Option 1: Webhook notifications (recommended)When the transaction status changes to
COMPLETED
, the funds have been successfully transferred to the external account.Cross-Currency Transfers
Use the quotes flow when sending funds with currency conversion. This locks in an exchange rate and provides all details needed to execute the transfer.When to use cross-currency transfers
- Converting USD to EUR, MXN, BRL, or other supported currencies
- Sending international payments with automatic currency conversion
- Need to lock in a specific exchange rate for the transfer
Create and execute a quote
1
Create a quote
Request a quote to lock in the exchange rate and get transfer details:
Success (201 Created)
Locked currency side determines which amount is fixed:
SENDING
: Lock the sending amount (receiving amount calculated based on exchange rate)RECEIVING
: Lock the receiving amount (sending amount calculated based on exchange rate)
2
Review quote details
Before executing, review the quote to ensure:
- Exchange rate is acceptable
- Fees are as expected
- Receiving amount meets requirements
- Quote hasn’t expired (check
expiresAt
)
Quotes typically expire after a short period. If expired, create a new quote to get an updated exchange rate.
3
Execute the quote
Confirm and execute the quote to initiate the transfer:
Success (200 OK)
Once executed, the quote creates a transaction and the transfer begins processing. The
transactionId
can be used to track the payment.4
Monitor completion
Track the transfer using webhooks or by polling the transaction:You’ll receive a webhook when the transaction completes:
Sending to a UMA Address
Send to a UMA address when the receiver is identified by their UMA handle eg $alice@example.com. You’ll look up the receiver, create a quote, and then fund.Look up the recipient
Response
Success (200 OK)
senderUserInfo
(applies to either tab).
Create a quote
Execute payment (just-in-time)
Use thepaymentInstructions
from the quote to instruct your bank to push funds. Include the exact reference
provided.
Execute payment (prefunded)
Existing internal account balances will be used to fund the payment. Use the lookup Id above to confirm the payment and execute the quote.Execute the quote
Track status
Listen forOUTGOING_PAYMENT
webhooks until the transaction reaches COMPLETED
or FAILED
.
You can also query for the transaction with the following snippet: