Docs
Orders

Create an onramp order

POST
/v1/onramp/orders

NGN to crypto. Returns a virtual account for the customer to transfer into. Once it is funded, Pulse delivers crypto to the destination address.

The virtual account remains valid for 30 minutes. Use its expires_at value as the exact deadline and require the customer to transfer account.amount.

reference is your idempotency key. Send the same one again and you get the original order, not a second. Max 128 characters, and unique within your business across both flows.

nin and bvn are required for regulatory purposes. Each value must contain 11 digits. Pulse encrypts both at rest and omits them from API responses.

Authorization

ApiKeyAuth
X-API-Key<token>

Your API key. Identifies your business; you never send a business id.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/onramp/orders" \  -H "Content-Type: application/json" \  -d '{    "reference": "string",    "quote_id": "string",    "payer": {      "name": "string",      "email": "user@example.com",      "nin": "string",      "bvn": "string"    },    "destination": {      "address": "string"    }  }'
{  "status": true,  "data": {    "id": "0198e2d0-1c4a-7f3b-9a2e-6b1d5c8e0f21",    "reference": "piggy-txn-88213",    "type": "onramp",    "status": "awaiting_payment",    "source": {      "currency": "NGN",      "amount": "150000"    },    "destination": {      "currency": "USDT",      "network": "POLYGON",      "amount": "97.50"    },    "account": {      "account_number": "9901234567",      "account_name": "Shiga/Ada Obi",      "bank_code": "090175",      "bank_name": "Rubies MFB",      "amount": "150000",      "expires_at": "2026-07-30T12:12:00Z"    },    "created_at": "2026-07-30T11:32:00Z",    "updated_at": "2026-07-30T11:32:00Z"  }}