Skip to main content

Integration Flow

1

Create a user and complete KYC

2

Get an off-ramp quote (optional)

Create Quote to lock the exchange rate
3

Create off-ramp transaction

4

User sends crypto

The user sends crypto to the wallet address returned in the transaction response

How to do an Off-Ramp Operation

To successfully execute an off-ramp operation, follow these steps:
  1. Select the Blockchain and Token:

    1. The following is a list of the Blockchains and Tokens
    2. The list of Blockchains - Tokens symbols supported in Capa are:
      1. POL - USDC, USDT, POL, MATIC
      2. BSC - BNB
      3. BASE - USDC, USDC.e, USDbC, ETH, MXNe, cbBTC, wUSDL
      4. OP - USDC, ETH
      5. ARB - USDC, ETH
      6. SOL - USDC, SOL, USDY, PYSUD
      7. WLD - WLD
      8. STK - USDC, STK
      9. ETH - USDC, ETH, wBTC
        For faster completion time use USDC in Polygon POS
  2. Select the Fiat Currency:

    1. Choose the supported fiat currency for the transaction. Capa currently supports the following fiat currencies:
      1. MXN (Mexican Peso)
      2. DOP (Dominican Peso)
      3. USD (US Dollar)
      4. EUR (Euro)
  3. Quoting:

    1. To show a real-time estimate of how much fiat the user will get with the selected Blockchain Token, Fiat Currency and Amount use the Get Quote Rate endpoint.
    2. To lock a guaranteed exchange rate, use the Create Quote endpoint. This returns a quoteId with an expiration time (expiresAt). Pass the quoteId when creating the transaction to use the locked rate.
    3. You can specify either fiatAmount or cryptoAmount in the quote request.
    4. Forward Settlement (MXN OTC only): For MXN orders above 50,000 MXN (OTC), the locked quote supports a forwardingDays parameter (0-4) that lets you lock the rate now but settle the transaction T+N days later.
  4. User Bank Information:

    1. The user bank information can be provided in multiple ways:
      • Inline bank details: Pass userBankInformation directly in the off-ramp request body.
      • Saved bank account: Use a previously saved bank account ID.
      • Receiver: Pass a receiverId for third-party payouts (see Receivers Guide).
    2. Bank account requirements vary by country:
      CountryRequired Fields
      MXaccountIdentifier (18-digit CLABE)
      DOaccountIdentifier, bankName, accountType, documentIdentifier, documentType. List of Dominican Republic Banks
      USaccountIdentifier, bankName, routingNumber (9-digit ABA), accountHolder (type, firstName/lastName or businessName), address (streetLine1, city, postalCode, country)
      SEPAiban, bic, bankName, accountHolder (type, firstName/lastName or businessName)
    3. For MX accounts, the bank information will go through a penny testing process to ensure that the KYC’d user is the actual owner. If the user is successfully verified the transaction will go through, otherwise it will be CANCELLED and the crypto will be reimbursed.
  5. Obtain User Wallet Address:

    After a successful KYC users get their own Wallet Address which is used as an intermediary to identify the user’s off ramps on chain transaction. In order to show the user where the crypto must be sent to you must obtain the wallet by creating the Off Ramp transaction, the response would have the wallet address.
  6. Execute the Off-Ramp:

    With all required information gathered, you can proceed to execute the off-ramp operation using the Capa API. See the documentation to execute the off ramp Create Off Ramp Key parameters:
    • userId (required): The user’s Capa ID
    • fiatCurrency, blockchainSymbol, tokenSymbol: The selected currency, blockchain, and token (required when quoteId is not provided)
    • fiatAmount or cryptoAmount: The amount to convert
    • userBankInformation (optional): Inline bank account details
    • receiverId (optional): A previously created receiver for third-party payouts
    • quoteId (optional): A locked quote ID from the Create Quote endpoint
    • premiumSpread (optional): A spread percentage to apply to the exchange rate

Transaction Status Progression

Regular Off-Ramp

OTC Off-Ramp (large amounts)

Settlement Times

Expected settlement times for MXN off-ramp fiat payouts:
AmountExpected Time
Under 50,000 MXN~2–3 minutes
Over 50,000 MXN10–30 minutes
The times above apply to same-day settlements. For forwarded OTC quotes that use the forwardingDays parameter (1–4), the fiat payout is scheduled on settlement day T+N and the 10–30 minute window applies once that day arrives.

Over-Funding

If a partner sends more crypto than the quoted amount, the excess remains in the user’s wallet and is not included in the off-ramp transaction.

SPEI Payout Reference

Off-ramp fiat payouts via SPEI include the transaction ID in the concepto field, allowing partners to match payouts to specific off-ramp orders.

Rounding

Fiat amounts are rounded to 2 decimal places. Crypto amounts are rounded to 6 decimal places. Any difference between the amount sent and the transaction amount stays in the user’s wallet.

Execute Off-Ramp (Forwards-Enabled Partners)

This section only applies to partners enabled for forwards who hold crypto in their wallet. To enable this feature, contact the Capa development team.
For partners with forwards enabled, off-ramp transactions are not immediately executed after creation. Instead, you must explicitly trigger processing by calling the Execute Off-Ramp endpoint with the transactionId. This call triggers the CRYPTO_RECEIVED_OFF_RAMP webhook event and starts the fiat payout process.
{
  "transactionId": "8374f327-38bd-4b0b-b8a7-2524599eb903"
}
If you receive the error "partner is not configured for manual off-ramp execution", this feature has not been enabled for your partner account. Contact the Capa team to request enablement.

Available Platforms

Capa.fi : Users can perform off-ramp operations directly on the Capa.fi website.
Partner API: For partners, off-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

Dominican Republic Banks

JSON
[
  "ABONAP",
  "Alaver",
  "AsociaciΓ³n Cibao",
  "AsociaciΓ³n Duarte",
  "AsociaciΓ³n La Nacional",
  "AsociaciΓ³n Maguana",
  "AsociaciΓ³n Mocana",
  "AsociaciΓ³n Peravia",
  "AsociaciΓ³n Popular",
  "AsociaciΓ³n Romana",
  "BancamΓ©rica",
  "Banco Activo",
  "Banco Ademi",
  "Banco Adopem",
  "Banco AgrΓ­cola",
  "Banco AtlΓ‘ntico",
  "Banco BACC",
  "Banco BDI",
  "Banco BHD",
  "Banco Caribe",
  "Banco Cofaci",
  "Banco Confisa",
  "Banco Fihogar",
  "Banco Gruficorp",
  "Banco Lafise",
  "Banco LΓ³pez de Haro",
  "Banco Popular",
  "Banco Promerica",
  "Banco Santa Cruz",
  "Banco UniΓ³n",
  "Banco Vimenca",
  "Banco Γ“ptima",
  "Bancotui",
  "Bandex",
  "Banesco",
  "Banfondesa",
  "Banreservas",
  "Bonanza Banco",
  "Citibank",
  "CorporaciΓ³n de CrΓ©dito Monumental",
  "CorporaciΓ³n de CrΓ©dito Nordestana",
  "CorporaciΓ³n de CrΓ©dito Oficorp",
  "JMMB Bank",
  "Leasing Confisa",
  "Motor CrΓ©dito",
  "Qik Banco Digital",
  "Scotiabank"
]

What’s Next