---
title: "Create a ramp order"
method: POST
path: "/ramp/orders"
tags: ["Ramp"]
---

# Create a ramp order

`POST /ramp/orders`

Creates an on-ramp or off-ramp order with the selected provider.

## Request body

- CreateRampOrderDto
  - `type` 'on-ramp' | 'off-ramp', required — Type of ramp order to create
  - `provider` 'FONBNK' | 'ONRAMP_MONEY' | 'GUARDARIAN' | 'YELLOW_CARD', required — Ramp provider to use for this order
  - `fiatCurrency` string, required — ISO 4217 fiat currency code
  - `cryptoAmount` number, required — Amount of crypto the user wants to receive (on-ramp) or sell (off-ramp). For off-ramp this is the amount of the selected source token.
  - `destinationChain` 'ARBITRUM_MAINNET' | 'ARBITRUM_TESTNET' | 'AVALANCHE_MAINNET' | 'AVALANCHE_TESTNET' | 'BASE_MAINNET' | 'BASE_TESTNET' | 'STARKNET_MAINNET' | 'STARKNET_TESTNET' | 'BSC_MAINNET' | 'ETHEREUM_MAINNET' | 'ETHEREUM_TESTNET' | 'OPTIMISM_MAINNET' | 'OPTIMISM_TESTNET' | 'MONAD_MAINNET' | 'MONAD_TESTNET' | 'POLYGON_MAINNET' | 'HYPEREVM_MAINNET' | 'LISK_MAINNET' | 'SOLANA_MAINNET' | 'SOLANA_TESTNET' | 'TRON_MAINNET' — Destination blockchain where user wants their funds (required for on-ramp)
  - `sourceChain` 'ARBITRUM_MAINNET' | 'ARBITRUM_TESTNET' | 'AVALANCHE_MAINNET' | 'AVALANCHE_TESTNET' | 'BASE_MAINNET' | 'BASE_TESTNET' | 'STARKNET_MAINNET' | 'STARKNET_TESTNET' | 'BSC_MAINNET' | 'ETHEREUM_MAINNET' | 'ETHEREUM_TESTNET' | 'OPTIMISM_MAINNET' | 'OPTIMISM_TESTNET' | 'MONAD_MAINNET' | 'MONAD_TESTNET' | 'POLYGON_MAINNET' | 'HYPEREVM_MAINNET' | 'LISK_MAINNET' | 'SOLANA_MAINNET' | 'SOLANA_TESTNET' | 'TRON_MAINNET' — Source blockchain where user will send crypto from (required for off-ramp)
  - `amountSymbol` 'USDC' | 'USDT' | 'DAI' | 'BUSD' | 'EURC' | 'ETH' | 'WETH' | 'STRK' | 'BNB' | 'LORDS' | 'USDS' | 'USDG' | 'USDT0' | 'WBTC' | 'LINK' | 'SOL' | 'EKUBO' | 'AAVE' | 'UNI' | 'CURVE' | 'cbBTC' | 'VIRTUAL' | 'stETH' | 'wstETH' | 'SKY' | 'AUSD' | 'WMON' | 'LVMON' | 'OP' | 'WLD' | 'ARB' | 'sAVAX' | 'WAVAX' | 'anyBTC' | 'WBNB' | 'TRON' | 'AVAX' | 'POL' | 'MON' — Token symbol for cryptoAmount (defaults to USDC)
  - `recipientAddress` string — Recipient wallet address on the destination chain (required for on-ramp)
  - `senderAddress` string — User's crypto wallet address / sender (required for off-ramp)
  - `countryCode` string — ISO 3166-1 alpha-2 country code of the user. Required for multi-country currencies (e.g., XOF — pass "BJ" for Benin, "SN" for Senegal). Falls back to the currency's default country if omitted.
  - `userEmail` string — End-user's email address. Required for direct orders.
  - `fields` object — Provider-specific fields required by the payment channel (e.g., phone number, bank code)

## Response `201`

Ramp order created successfully

## Other responses

- `400` — Invalid request parameters
- `401` — Missing or invalid API key

## Changes

- **2026-08-12** `dcf19c1bab20` — 1 info
  - added the new `YELLOW_CARD` enum value to the request property `provider`
- **2026-07-22** `76a4e00b118d` — 1 breaking, 10 info
  - added the new required request property `type`
  - added the new optional request property `amountSymbol`
  - added the new optional request property `senderAddress`
  - added the new optional request property `sourceChain`
  - …7 more
- **2026-04-09** `654264f49b4d` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/horuslabsio/apis/chainrails-api/changes/ramp/orders/post.md)

---

[API](https://skmtc.dev/horuslabsio/apis/chainrails-api.md) · [All operations](https://skmtc.dev/horuslabsio/apis/chainrails-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/horuslabsio/chainrails-api/revisions/dcf19c1bab20/schema)
