Docs

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.

FieldPilot value
nin12345678901
bvn22345678901

Do not use a real customer's identity values in pilot.

Onramp

Set destination.address.

ValueResult
any other addressorder.completed
0x000000000000000000000000000000000000deadorder.failed (payment_rejected)
0x0000000000000000000000000000000000fa11edorder.failed (payout_failed)
0x00000000000000000000000000000000000fadedorder.expired
0x00000000000000000000000000000000001a66edorder.completed, delayed

Offramp

Set beneficiary.bank_account.account_number.

ValueResult
any other valueorder.completed
2222222222order.failed (payment_rejected)
5555555555order.failed (payout_failed)
9999999999order.expired
7777777777order.completed, delayed

What to expect

  • payment_rejected holds no money. payout_failed holds the funds, which Pulse reconciles. Do not retry a payout_failed order.
  • A never-paid order stays in awaiting_payment for 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.

On this page