Going live

Test your integration, then switch to the live environment.

Test your integration

The test environment has the same endpoints as the live environment. It does not move real money. Use the test base URL and a test API key to run the complete flow.

  • Quote, create an order, and read it back until it reaches completed.
  • Drive an order to failed and expired with a reserved value, and confirm your handler branches on each. See Testing.
  • 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 code rather than the message. See Errors and retries.
  • For an offramp, resolve the account first and handle account_verification_failed.

Advance a test order

In the live environment, an order leaves awaiting_payment after customer payment. The test environment advances the order without real payment. A reserved value selects another outcome. See Testing.

Switch to the live environment

Change the base URL

Point your client at the live base URL.

Test   https://engine-api.pilot.pulseshiga.io
Live   https://engine-api.pulseshiga.io

Use your live API key

Replace the test key with the live 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

Complete this list in the live environment with a small amount. Then open the flow to your users.

  • Your reference is unique for every order, and stored before each create. See Errors and retries.
  • You repeat timeouts, 503, and 500 with the same reference, and never with a changed body.
  • You read status first, then branch on the code when a request fails.
  • Every live webhook endpoint is registered in the Dashboard. Each endpoint has received a live event before launch.
  • Every live webhook endpoint verifies X-Pulse-Signature against the raw request body. 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, and failed, 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.

Confirm the delivered amount

Late funding can change the order's rate and destination.amount. Your integration must reconcile the delivered amount against amount in order.completed.

On this page