Going live
Test on pilot, then switch to production with a short checklist.
Build and test on pilot first, then move to production. This page covers both.
Test on pilot
Pilot is the staging environment. It has the same endpoints as production, and nothing on it moves real money. Point at the pilot host with a pilot key, and run the whole flow.
- Quote, create an order, and read it back until it reaches
completed. - Drive an order to
failedandexpiredwith a reserved value, and confirm your handler branches on each. See Testing on pilot. - Create the same order twice with one
reference, and confirm you get one order. See Errors and retries. - Send a request you know is wrong, and branch on the
coderather than the message. See Errors and retries. - For an offramp, resolve the account first and handle
account_verification_failed.
Moving a pilot order forward
On production, an order leaves awaiting_payment when the customer sends money.
Pilot has no real customer payment, so it advances the order for you. A pilot order
completes on its own, and a reserved value drives it to any other outcome. See
Testing on pilot.
Switch to production
Change the base URL
Point your client at the production host.
Pilot https://engine-api.pilot.pulseshiga.io
Production https://engine-api.pulseshiga.ioUse your production key
Swap the pilot key for the production key. Keep the key on your server, never in a browser or a mobile app. Rotate it if it ever leaks.
Confirm before you ship
One dry run
Walk this list once against production, with a small real amount, before you open the flow to your users.
- Your
referenceis unique for every order, and stored before each create. See Errors and retries. - You repeat timeouts,
503, and500with the samereference, and never with a changed body. - You read
statusfirst, then branch on thecodewhen a request fails. - Your production webhook endpoint verifies
X-Pulse-Signatureagainst the raw request body before processing an event. See Webhooks. - Your webhook handler stores event ids durably, acknowledges duplicates, and does not depend on delivery order.
- You handle every terminal status:
completed,expired, andfailed, and stop reading once an order is terminal. See Order status. - You read amounts as decimal strings, never as numbers.
- Your logs exclude API keys, signing secrets, NINs, BVNs, and full bank account numbers.
destination.amount is quoted, not delivered
The delivered amount can differ from the quote. Reconcile against the amount in
order.completed.