Skip to main content
POST
cURL
Creates an on-ramp transaction on behalf of a verified user. This converts fiat to crypto — the user deposits fiat via bank transfer and receives crypto at the specified wallet address. The response returns the bank account details for the fiat deposit.
For staging transaction testing, use the Mock Testing Guide.

Idempotency

Retry safely without creating duplicate transactions: pass an optional Idempotency-Key header (UUIDv4). A retry with the same key and body replays the original response. See the Idempotency Guide for the full contract.

Field Relationships

  • Provide quoteId OR (fiatCurrency + blockchainSymbol + tokenSymbol). When a quote is used, currency/token fields are inherited from the quote.
  • Provide either fiatAmount or cryptoAmount, not both.
  • Provide either destinationWalletAddress (inline) or walletAddressId (reference to a saved wallet).

Integration Flow

3

Get a quote (optional)

POST /api/partner/v2/quotes — locks the exchange rate
4

Create on-ramp transaction

POST /api/partner/v2/on-ramp (this endpoint) — returns bank account details for the fiat deposit
5

User deposits fiat

The user sends fiat to the bank account returned in the bankAccount response field.

Important 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

Verified User Errors

Endpoint-Specific Errors

Authorizations

partner-api-key
string
header
required

API key for the affiliated partner performing the request.

Headers

Idempotency-Key
string

Optional. Unique key (UUIDv4 recommended) to safely retry this request without creating a duplicate transaction. A retry with the same key and body replays the original response. See /docs/idempotency.

Required string length: 16 - 128
Example:

"550e8400-e29b-41d4-a716-446655440000"

Body

application/json
userId
string
required

Identifier for the user

Example:

"8374f327-38bd-4b0b-b8a7-2524599eb903"

destinationWalletAddress
string
required

Wallet address of the user making the transaction.

Example:

"0x4d2f3d8f83b6f2f8e0f3f4f3f3f3f3f3f3f3f3f3"

quoteId
string

Identifier for the quote to be used for the transaction.

fiatAmount
number

Amount of fiat currency to be converted to crypto currency.

cryptoAmount
number

Amount of cryptocurrency to be received in conversion.

fiatCurrency
enum<string>

Identifier for the fiat currency which the user will rec.

Available options:
MXN,
DOP,
USD,
EUR
Example:

"MXN"

blockchainSymbol
enum<string>

Identifier for the blockchain to token from which the conversion will be made. BSC is only available for transactions over 50,000 MXN.

Available options:
POL,
SOL,
ETH,
BSC
Example:

"POL"

tokenSymbol
enum<string>

Identifier for the token from which the conversion will be made.

Available options:
USDC,
USDT
Example:

"USDC"

premiumSpread
number

Spread percentage to be applied to the exchange rate

Response

On-ramp transaction created successfully. Returns the transaction details, including the bank account the user must fund and the current status.

success
boolean
Example:

true

data
object