Create an onramp order
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 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" }}Create an offramp order POST
Crypto to NGN. Returns a deposit address. Once the crypto arrives, Pulse settles NGN to the beneficiary's bank account. The account number is verified with the bank before the order is created. A wrong one fails with `account_verification_failed`; no order is created. Account numbers are 10 digits. Use `GET /v1/banks` for valid bank codes. `reference` is your idempotency key, unique within your business across both flows. `beneficiary.nin` and `beneficiary.bvn` are required for regulatory purposes. Pulse encrypts both at rest and omits them from API responses.
Get an order GET
Reads one of your orders, either flow. Scoped to your business; another business's order id returns 404, not 403. `destination.amount` is quoted, not delivered. Reconcile the delivered amount from the `order.completed` webhook.