/api/partner/v2/on-ramp
Field Relationships
- Provide
quoteIdOR (fiatCurrency+blockchainSymbol+tokenSymbol). When a quote is used, currency/token fields are inherited from the quote. - Provide either
fiatAmountorcryptoAmount, not both. - Provide either
destinationWalletAddress(inline) orwalletAddressId(reference to a saved wallet).
Integration Flow
Create a user
Complete KYC verification
Get a quote (optional)
Create on-ramp transaction
POST /api/partner/v2/on-ramp (this endpoint) — returns bank account details for the fiat depositImportant Notes
- User must be KYC-verified before creating transactions.
- Wallet type must match blockchain: An EVM wallet cannot be used on a Solana chain, and vice versa.
- Amount limits: Fiat and crypto amounts must fall within the min/max thresholds defined in your partner agreement.
Use Cases
- Buy Crypto: Enable users to purchase cryptocurrency using fiat deposited via bank transfer.
- B2C Integration: Let individual users on-ramp from within your app.
- Automated Purchases: Programmatically initiate fiat-to-crypto conversions for your users.
Error Codes
Common Errors
| HTTP Status | Code | Message |
|---|---|---|
| 401 | UNAUTHORIZED | ”API Key is missing” |
| 401 | UNAUTHORIZED | ”Invalid API Key format” |
| 401 | UNAUTHORIZED | ”Invalid API Key” |
| 403 | INVALID_PARTNER_FLOW | ”The partner has an invalid flow.” |
Verified User Errors
| HTTP Status | Code | Message |
|---|---|---|
| 400 | REQUIRED_USER_ID_ERROR | ”This endpoint requires a user id to be provided” |
| 403 | USER_NOT_VERIFIED_ERROR | ”User is not allowed to perform the operations because has not completed the KYC verification.” |
Endpoint-Specific Errors
| HTTP Status | Code | Message |
|---|---|---|
| 400 | INVALID_USER_INPUT_ERROR | ”Invalid User Input” |
| 400 | BAD_REQUEST | ”address must be a valid address” |
| 400 | BAD_REQUEST | ”Either quoteId or fiatCurrency, blockchainSymbol, tokenSymbol, and at least one of fiatAmount or cryptoAmount must be provided” |
| 400 | BAD_REQUEST | ”Fiat currency is disabled or does not exist” |
| 400 | BAD_REQUEST | ”This blockchain and token combination is disabled or does not exist” |
| 400 | QUOTE_EXPIRED | ”Quote has expired” |
| 400 | BAD_REQUEST | ”Quote is not valid for ON_RAMP” |
| 400 | INVALID_TOKEN_OPERATION_ERROR | ”Token cannot be operated as OTC, only stable coins are allowed” |
| 400 | BAD_REQUEST | ”Either walletAddressId or destinationWalletAddress must be provided” |
| 400 | BAD_REQUEST | ”Cannot create transaction: No supported banks configured for user with id: “ |
| 400 | INVALID_FIAT_AMOUNT_ERROR | ”Fiat amount is outside of the allowed range for ON_RAMP. Should be between and “ |
| 400 | INVALID_TOKEN_AMOUNT_ERROR | ”Token amount is outside of the allowed range for ON_RAMP. Should be between and “ |
| 403 | RECEIVER_CANNOT_INITIATE_TRANSACTION | ”Receiver accounts cannot initiate transactions directly.” |
Headers
Api key for the affiliated partner that is performing the request
Body
Identifier for the user
"8374f327-38bd-4b0b-b8a7-2524599eb903"
Wallet address of the user making the transaction.
"0x4d2f3d8f83b6f2f8e0f3f4f3f3f3f3f3f3f3f3f3"
Identifier for the quote to be used for the transaction.
Amount of fiat currency to be converted to crypto currency.
Amount of cryptocurrency to be received in conversion.
Identifier for the fiat currency which the user will rec.
MXN, DOP, USD, EUR "MXN"
Identifier for the blockchain to token from which the conversion will be made.
POL, SOL, ETH "POL"
Identifier for the token from which the conversion will be made.
USDC, USDT "USDC"
Spread percentage to be applied to the exchange rate