Overview
Cross-ramp transactions convert one fiat currency into another without the user needing to interact with cryptocurrency. Capa handles the conversion internally and delivers the target currency to the specified bank account. Supported currencies: MXN (Mexican Peso), DOP (Dominican Peso), USD (US Dollar), and EUR (Euro). The source and target currencies must differ. USD can also be delivered to bank accounts in China (CN) and Hong Kong (HK) as destination-only corridors. See China & Hong Kong destinations for the additional requirements.Integration Flow
1
Create a user and complete KYC
Create User, then KYC verification
2
Get a cross-ramp quote (optional)
Create Cross-Ramp Quote to lock the exchange rate
3
Create cross-ramp transaction
4
User deposits source currency
The user deposits fiat in the source currency to the bank account returned in
sourceBankAccountHow to do a Cross-Ramp Operation
To successfully execute a cross-ramp operation, follow these steps:-
Select Source and Target Currencies:
Choose the fiat currencies for the conversion. For example, MXN to USD or EUR to MXN. The source and target currencies must be different. -
Quoting:
- To show a real-time estimate of how much the user will receive, use the Get Cross-Ramp Quote Rate endpoint with
sourceCurrency,targetCurrency, and eithersourceAmountortargetAmount. - To lock a guaranteed exchange rate, use the Create Cross-Ramp Quote endpoint. This returns a
quoteIdwith an expiration time (expiresAt). Pass thequoteIdwhen creating the transaction to use the locked rate. - You can specify either
sourceAmountortargetAmount, not both.
- To show a real-time estimate of how much the user will receive, use the Get Cross-Ramp Quote Rate endpoint with
-
Target Bank Account:
Provide the bank account where the target currency will be delivered. You can either:- Pass
targetBankAccountinline in the request body with the bank details. - Use a previously saved bank account ID (
targetBankAccountId).
ThetargetCurrencymust match the currency of the target bank accountβs country. - Pass
-
Create the Cross-Ramp Transaction:
With all required information gathered, create the transaction using the Create Cross-Ramp endpoint. Key parameters:userId(required): The userβs Capa IDsourceCurrency(required): The fiat currency the user will deposittargetCurrency(required): The fiat currency to be deliveredsourceAmountortargetAmount: The amount to convert (provide one, not both)targetBankAccount: Inline bank account details for the targetquoteId(optional): A locked quote ID from the Create Cross-Ramp Quote endpointpremiumSpread(optional): A spread percentage to apply to the exchange ratereceiverId(optional): A previously created receiver for third-party payouts (see Receivers Guide)reference(optional): A free-form reference string for your own records (max 140 characters)targetCountry(optional): Target country override β required to deliver USD to China (CN) or Hong Kong (HK) (see below)targetRail(optional): Target payment rail for CN/HK βLOCAL(default) orSWIFTinvoiceFile(optional): Base64-encoded PDF invoice β required when the target country isCN
-
User Deposits Source Currency:
After the transaction is created, the response includessourceBankAccountwith the bank details where the user must deposit the source fiat currency. Share this information with the user so they can complete the deposit.
China & Hong Kong destinations
USD can be delivered to bank accounts in China (CN) and Hong Kong (HK). These are destination-only corridors β CN and HK can be the target of a cross-ramp, never the source.- Delivered currency is USD. CNY is not yet supported. Because the source and target currencies must differ, the source currency must be MXN, DOP, or EUR (not USD).
- Set
targetCountry. PasstargetCountry: "CN"(or"HK") so USD is routed to China/Hong Kong β USD otherwise defaults to the US. If you pass an inlinetargetBankAccountwithcountry: "CN", the target country is resolved from it automatically. The sametargetCountry/targetRailalso apply when requesting a quote. - Payment rail.
targetRailselects how funds are delivered:LOCAL(default) for a domestic transfer, orSWIFTfor an international wire. - Invoice required for China.
invoiceFileβ a Base64-encoded PDF invoice β is required whenever the target bank account country isCN. - Reference/memo. The optional
referencefield (max 140 characters) is forwarded to the payment provider and is supported across all currencies. - Provider-managed accounts. CN/HK payout accounts are provisioned through Capaβs payment provider; provide the fields listed in the target bank account requirements above.
Amount limits for USD delivered to CN/HK are a minimum of 10 USD and a maximum of 10,000 USD per transaction.
Transaction Limits
The same minimum amounts apply as for on-ramp and off-ramp transactions:USD delivered to China (CN) or Hong Kong (HK) is limited to a minimum of 10 USD and a maximum of 10,000 USD per transaction.
Funding a Cross-Ramp
After creating the transaction, the response includessourceBankAccount with the bank details where the user must deposit the source fiat currency. The transaction starts in PENDING_FUNDS status.
- For MXN source: The user deposits via SPEI to Capaβs bank account (same flow as on-ramp).
- For non-MXN source (USD, EUR, DOP): A deposit intent is created with instructions for the user to include in their transfer.
Multiple Concurrent Orders
You can have multiple cross-ramp transactions open at the same time for a single user.Quoting and Premium Spread
When usingpremiumSpread, note that if a quoteId is provided in the cross-ramp request, the quoteβs premiumSpread is used and any premiumSpread value in the request body is ignored. To ensure consistent pricing, always set premiumSpread when creating the quote. The valid range is 0 to 1.
A locked quote is valid for 10 seconds after creation (expiresAt field in the response). Once the quote is used to create a transaction, the rate is locked for that transaction.
A quote is optional β if no quoteId is provided, provide sourceAmount or targetAmount along with sourceCurrency and targetCurrency. You cannot specify both sourceAmount and targetAmount.
When using
quoteId, do not pass sourceAmount, targetAmount, sourceCurrency, or targetCurrency β these values are taken from the quote.Transaction Status Progression
Notifications
Capa sends webhook notifications for each status change. The following events are emitted during a cross-ramp transaction lifecycle:
See the Transaction Events guide for full payload examples. Ensure your Webhook Settings are configured to receive these notifications.