Testing on pilot
Simulate any order outcome on pilot with a reserved value.
Pilot orders complete on their own, with no real customer payment. To simulate a
failure or an expiry, set a reserved value in the order. An onramp reads
destination.address. An offramp reads beneficiary.bank_account.account_number.
Watch the result on GET /v1/orders/{id} or your
webhook. Every pilot event carries environment: test.
Pilot only
These values are ordinary data in production. A reserved address receives real crypto, and a reserved account number is a real bank account. Never send one to production.
Identity test values
Pilot accepts any 11-digit NIN and BVN values. Use non-production values that meet the format, such as the examples below. These values do not control the simulated order outcome.
| Field | Pilot value |
|---|---|
nin | 12345678901 |
bvn | 22345678901 |
Do not use a real customer's identity values in pilot.
Onramp
Set destination.address.
| Value | Result |
|---|---|
| any other address | order.completed |
0x000000000000000000000000000000000000dead | order.failed (payment_rejected) |
0x0000000000000000000000000000000000fa11ed | order.failed (payout_failed) |
0x00000000000000000000000000000000000faded | order.expired |
0x00000000000000000000000000000000001a66ed | order.completed, delayed |
Offramp
Set beneficiary.bank_account.account_number.
| Value | Result |
|---|---|
| any other value | order.completed |
2222222222 | order.failed (payment_rejected) |
5555555555 | order.failed (payout_failed) |
9999999999 | order.expired |
7777777777 | order.completed, delayed |
What to expect
payment_rejectedholds no money.payout_failedholds the funds, which Pulse reconciles. Do not retry apayout_failedorder.- A never-paid order stays in
awaiting_paymentfor about 30 seconds, then expires. - A delayed order advances one state per minute, so it settles in about ten minutes. Use it to test pending states and polling.
Example
Create a quote, then create the order with the payout-failure address.
curl https://engine-api.pilot.pulseshiga.io/v1/onramp/orders \
-H "X-API-Key: <your key>" \
-H "Content-Type: application/json" \
-d '{
"reference": "piggy-txn-88213",
"quote_id": "0198e2c1-…",
"payer": {
"name": "Ada Obi",
"email": "ada@example.com",
"nin": "12345678901",
"bvn": "22345678901"
},
"destination": { "address": "0x0000000000000000000000000000000000fa11ed" }
}'The order runs to the payout stage, then fires order.failed with reason
payout_failed.
Run the outcomes you handle, then walk the going-live checklist.