Offramp
Accept crypto and deliver NGN to a verified bank account.
An offramp accepts crypto from the customer and pays NGN to a beneficiary's bank account. You need a pilot API key. Unlike an onramp, it starts with bank account resolution.
Resolve the beneficiary's bank account
List banks with GET /v1/banks, then resolve the
selected account before you create an order.
curl https://engine-api.pilot.pulseshiga.io/v1/banks/resolve \
-H "X-API-Key: <your key>" \
-H "Content-Type: application/json" \
-d '{ "bank_code": "058", "account_number": "0123456789" }'Show data.account_name to the customer and require confirmation. Do not create
the order if the name is wrong.
Get a crypto-to-NGN quote
curl https://engine-api.pilot.pulseshiga.io/v1/quotes \
-H "X-API-Key: <your key>" \
-H "Content-Type: application/json" \
-d '{
"source_currency": "USDT",
"destination_currency": "NGN",
"network": "POLYGON",
"amount": "100"
}'Save data.id. The quote expires after 10 minutes and can create one order.
Create the offramp order
curl https://engine-api.pilot.pulseshiga.io/v1/offramp/orders \
-H "X-API-Key: <your key>" \
-H "Content-Type: application/json" \
-d '{
"reference": "piggy-txn-88214",
"quote_id": "0198e3f2-…",
"beneficiary": {
"name": "Ada Obi",
"email": "ada@example.com",
"nin": "12345678901",
"bvn": "22345678901",
"bank_account": {
"bank_code": "058",
"account_number": "0123456789"
}
}
}'The response contains data.deposit_address. The customer must send the quoted
asset on the quoted network.
Track the order
curl https://engine-api.pilot.pulseshiga.io/v1/orders/0198e400-… \
-H "X-API-Key: <your key>"Poll with backoff or consume webhooks. Stop at completed, expired,
or failed. Do not credit or promise a payout from the deposit alone; reconcile
the completed amount and payout_reference from the webhook.
See Orders for response fields and network rules.