Integration Flow
Create a user and complete KYC
Create User, then KYC verification
Get an on-ramp quote (optional)
Create Quote to lock the exchange rate
Create on-ramp transaction
How to do an On-Ramp Operation
To successfully execute an on-ramp operation, follow these steps:-
Select the Blockchain and Token:
- The following is a list of the Blockchains and Tokens
- The list of Blockchains - Tokens symbols supported in Capa are:
- POL - USDC, USDT, POL, MATIC
- BSC - BNB
- BASE - USDC, USDC.e, USDbC, ETH, MXNe, cbBTC, wUSDL
- OP - USDC, ETH
- ARB - USDC, ETH
- SOL - USDC, SOL, USDY, PYSUD
- WLD - WLD
- STK - USDC, STK
- ETH - USDC, ETH, wBTC
For faster completion time use USDC in Polygon POS
-
Select the Fiat Currency:
- Choose the supported fiat currency for the transaction. Capa currently supports the following fiat currencies:
- MXN (Mexican Peso)
- DOP (Dominican Peso)
- USD (US Dollar)
- EUR (Euro)
- Choose the supported fiat currency for the transaction. Capa currently supports the following fiat currencies:
-
Quoting:
- To show a real-time estimate of how much crypto the user will get with the selected Blockchain Token, Fiat Currency and Amount use the Get Quote Rate endpoint.
- To lock a guaranteed exchange rate, use the Create Quote endpoint. This returns a
quoteIdwith an expiration time (expiresAt). Pass thequoteIdwhen creating the transaction to use the locked rate. - You can specify either
fiatAmountorcryptoAmountin the quote request. - Forward Settlement (MXN OTC only): For MXN orders above 50,000 MXN (OTC), the locked quote supports a
forwardingDaysparameter (0-4) that lets you lock the rate now but settle the transaction T+N days later.
-
Obtain User Wallet Address:
- Ensure to ask the user for their wallet address where the crypto wants to be deposited. Make sure to verify that this is a valid address for the selected blockchain, and save it for step 6.
-
Show Bank Information:
- After KYC verification, users in Mexico automatically get a dedicated CLABE (bank account identifier) created for them. For the Dominican Republic, a single Capa bank account is used. For both countries you can get the bank information after creating the transaction β it is also returned in the on-ramp creation response under
bankAccount.
- The CLABE is automatically created when the userβs KYC is verified β no separate API call is needed.
- The CLABE is permanent and reusable across all on-ramp transactions for that user. It does not expire.
- The CLABE alone is sufficient for SPEI deposits β the account holder name auto-populates in the senderβs banking app.
- After KYC verification, users in Mexico automatically get a dedicated CLABE (bank account identifier) created for them. For the Dominican Republic, a single Capa bank account is used. For both countries you can get the bank information after creating the transaction β it is also returned in the on-ramp creation response under
-
Execute the On-Ramp:
userId(required): The userβs Capa IDdestinationWalletAddress(required): Where the crypto will be sentfiatCurrency,blockchainSymbol,tokenSymbol(required): The selected currency, blockchain, and tokenfiatAmountorcryptoAmount: The amount to convertquoteId(optional): A locked quote ID from the Create Quote endpointpremiumSpread(optional): A spread percentage to apply to the exchange rate
Transaction Limits
| Currency | Minimum | Maximum |
|---|---|---|
| MXN | 50 MXN | No maximum |
| DOP | 150 DOP | No maximum |
| USD | 20 USD | No maximum |
| EUR | 20 EUR | No maximum |
Funding an On-Ramp
Funding a Specific Order
For MXN (SPEI) deposits: To fund a specific on-ramp transaction, include the transaction ID (with or without dashes) in the SPEI concepto field. This ensures the deposit is matched to the correct order regardless of amount or creation order. If the concepto does not contain a transaction ID, the deposit is matched to the userβs open on-ramp orders by amount + CLABE. If multiple orders share the same amount, the oldest order is matched first. If neither the transaction ID nor the amount + CLABE combination matches an open order, the deposit is refunded at end of business day. For DOP, USD, and EUR deposits: Bank details and deposit instructions are returned in the on-ramp creation response underbankAccount. Deposits are matched internally by Capa β no concepto or reference field is required.
Multiple Concurrent Orders
You can have multiple on-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 on-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.
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. Quote locking is available for all amounts β there is no minimum.
A quote is optional β if no quoteId is provided, the amount is calculated at the exchange rate at the time of funding.
On-Ramp by Destination Amount
To specify how much crypto the user should receive (instead of how much fiat theyβll send), use the Create Quote endpoint withcryptoAmount and transactionType: "ON_RAMP". Then immediately create the on-ramp with the returned quoteId.
Transaction Status Progression
Regular On-Ramp
OTC On-Ramp (large amounts)
Available Platforms
Capa.fi : Users can perform on-ramp operations directly on the Capa.fi website.Partner API: For partners, on-ramp operations can be performed via the API using the Partner API key. For instructions on generating and using the API key, refer to the π API Key Generation Guide.
Notifications
Capa sends notifications to keep you updated on transaction statuses:- Webhooks for Partners: Capa posts updates to the configured partner webhooks to notify of transaction status changes.
Email Notifications for Users (Optional): Users receive email notifications regarding their transaction status and other relevant updates. Webhooks - Ensure that your webhook settings are correctly configured to receive timely notifications and stay informed about the status of transactions. Webhook Settings