Create a transfer quote
Generate a quote for a cross-currency transfer between any combination of accounts and UMA addresses. This endpoint handles currency exchange and provides the necessary instructions to execute the transfer.
Transfer Types Supported:
- Account to Account: Transfer between internal/external accounts with currency exchange.
- Account to UMA: Transfer from an internal account to an UMA address.
- UMA to Account or UMA to UMA: This transfer type will only be funded by payment instructions, not from an internal account.
Key Features:
- Flexible Amount Locking: Always specify whether you want to lock the sending amount or receiving amount
- Currency Exchange: Handles all cross-currency transfers with real-time exchange rates
- Payment Instructions: For UMA or customer ID sources, provides banking details needed for execution
Important: If you are transferring funds in the same currency (no exchange required), use the /transfer-in or /transfer-out endpoints instead.
Sandbox Testing: When using the externalAccountDetails destination type in sandbox mode, use account number patterns ending in specific digits to test different scenarios. These patterns should be used with the primary alias, address, or identifier of whatever account type you're testing. For example, the US account number, a CLABE, an IBAN, a spark wallet address, etc. The failure patterns are:
- Account numbers ending in 002: Insufficient funds (transfer-in will fail)
- Account numbers ending in 003: Account closed/invalid (transfers will fail)
- Account numbers ending in 004: Transfer rejected (bank rejects the transfer)
- Account numbers ending in 005: Timeout/delayed failure (stays pending ~30s, then fails)
- Any other account number: Success (transfers complete normally)
Request body
Example request
{
"lookupId": "Lookup:019542f5-b3e7-1d02-0000-000000000009",
"source": {
"accountId": "InternalAccount:85dcbd6-dced-4ec4-b756-3c3a9ea3d965"
},
"destination": {
"accountId": "a12dcbd6-dced-4ec4-b756-3c3a9ea3d123",
"currency": "EUR"
},
"lockedCurrencyAmount": 1000,
"description": "Invoice #1234 payment",
"senderCustomerInfo": {
"FULL_NAME": "Jane Receiver",
"NATIONALITY": "FR"
}
}Response
Transfer quote created successfully. The response includes exchange rates, fees, and transfer details. For transfers involving UMA addresses, payment instructions are also included for execution through banking systems.
Example response
{
"quoteId": "Quote:019542f5-b3e7-1d02-0000-000000000006",
"status": "PENDING",
"createdAt": "2025-10-03T12:00:00Z",
"expiresAt": "2025-10-03T12:05:00Z",
"source": {
"accountId": "InternalAccount:85dcbd6-dced-4ec4-b756-3c3a9ea3d965"
},
"destination": {
"accountId": "ExternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123",
"currency": "EUR"
},
"sendingCurrency": {
"code": "USD",
"name": "United States Dollar",
"symbol": "$",
"decimals": 2
},
"receivingCurrency": {
"code": "USD",
"name": "United States Dollar",
"symbol": "$",
"decimals": 2
},
"totalSendingAmount": 123010,
"totalReceivingAmount": 1000,
"feesIncluded": 10,
"paymentInstructions": [
{
"accountType": "US_ACCOUNT",
"accountNumber": "1234567890",
"routingNumber": "021000021",
"bankName": "Chase Bank",
"referenceCode": "REF123456"
},
{
"accountType": "SPARK_WALLET",
"address": "spark1pgssyuuuhnrrdjswal5c3s3rafw9w3y5dd4cjy3duxlf7hjzkp0rqx6dj6mrhu",
"invoice": "lnbc15u1p3xnhl2pp5jptserfk3zk4qy42tlucycrfwxhydvlemu9pqr93tuzlv9cc7g3sdqsvfhkcap3xyhx7un8cqzpgxqzjcsp5f8c52y2stc300gl6s4xswtjpc37hrnnr3c9wvtgjfuvqmpm35evq9qyyssqy4lgd8tj637qcjp05rdpxxykjenthxftej7a2zzmwrmrl70fyj9hvj0rewhzj7jfyuwkwcg9g2jpwtk3wkjtwnkdks84hsnu8xps5vsq4gj5hs"
}
],
"transactionId": "Transaction:019542f5-b3e7-1d02-0000-000000000005",
"originalQuoteId": "Quote:019542f5-b3e7-1d02-0000-000000000001",
"rateDetails": {
"counterpartyMultiplier": 1.08,
"counterpartyFixedFee": 10,
"gridApiMultiplier": 0.925,
"gridApiFixedFee": 10,
"gridApiVariableFeeRate": 0.003,
"gridApiVariableFeeAmount": 30
}
}