On-Ramp: Fiat → Crypto
Step-by-step guide to integrating fiat-to-crypto on-ramp transactions.
How it works
1. Your server calls POST /v1/onramp with user and transaction details
2. IvoryPay returns a virtual bank account (or checkout URL) for the user to pay into
3. The user transfers fiat to the provided account
4. IvoryPay detects the payment → webhook: onramp.fiatPaymentReceived
5. IvoryPay converts fiat to crypto and sends it to the wallet address
6. Transaction completes → webhook: onramp.success (or onramp.failed)Mobile money support
Integration steps
1
Create the on-ramp transaction
Method
Use when
curl -X POST https://ramp-api.ivorypay.io/api/v1/onramp \
-H "x-api-key: your_api_key" \
-H "Content-Type: application/json" \
-d '{
"firstName": "Amina",
"lastName": "Okafor",
"email": "amina@example.com",
"phoneNumber": "+2348012345678",
"walletAddress": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD68",
"blockchain": "BSC_MAINNET",
"reference": "550e8400-e29b-41d4-a716-446655440000",
"token": "USDT",
"fiatCurrency": "NGN",
"fiatAmount": 50000
}'{
"statusCode": 200,
"success": true,
"message": "On-ramp initiated successfully",
"data": {
"firstName": "Amina",
"lastName": "Okafor",
"email": "amina@example.com",
"refCode": "abc123def4",
"reference": "550e8400-e29b-41d4-a716-446655440000",
"transferDetails": {
"accountName": "IvoryPay - Amina Okafor",
"accountNumber": "1234567890",
"bank": "Providus Bank",
"amountPayable": 50000,
"expiresAt": "2026-03-26T13:00:00.000Z",
"currency": "NGN",
"businessFee": 0,
"platformFee": 250,
"gasFee": 0.5,
"createdAt": "2026-03-26T12:00:00.000Z",
"checkoutUrl": "https://checkout.ivorypay.io/pay/abc123",
"cryptoAmount": 31.25
}
}
}3
Listen for webhooks
Event
When it fires
{
"event": "onramp.success",
"data": {
"reference": "550e8400-e29b-41d4-a716-446655440000",
"amount": 31.25,
"platformFeeInCrypto": 0.15,
"businessFeeInCrypto": 0,
"gasFee": 0.5,
"walletAddress": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD68",
"network": "BSC_MAINNET",
"token": "USDT",
"transactionHash": "0xabc123...",
"status": "SUCCESS",
"customer": {
"refCode": "abc123def4",
"email": "amina@example.com",
"firstName": "Amina",
"lastName": "Okafor"
}
}
}4
Minimum amounts
Transaction lifecycle
Frequently asked questions
Last updated