How it works
The sandbox uses the same delivery engine as production:- Same payload structure — see the full contract
- Same headers (
x-event-id,X-NTXPay-Signature) - Same retry policy (5 attempts, exponential backoff, 10s timeout)
- Same HMAC signature format
POST /api/webhooks-config as usual.
Two ways to trigger a webhook
1. Test webhook (no transaction)
The fastest way to validate your endpoint — it fires a signed delivery without moving anything:2xx, the response time, and the signature that was sent. Vary the status (LIQUIDATED, PENDING, REJECTED, RETURNED) to exercise each path in your handler. Field details in Setup.
2. Simulated transaction (full flow)
Create a cash-in or cash-out with theX-Sandbox-Scenario header — the entire pipeline runs (balance, fee, statement) and the webhook arrives in seconds with the outcome you chose:
See the full scenario catalog.
Testing dedupe
Each delivery carries a uniquex-event-id. To test your dedupe:
- Configure your handler to return
500on the first attempt. - NTX Pay will deliver the same message again (with the same
x-event-id). - Confirm that your system ignores the duplicate and responds
200on the second attempt.
Testing the signature
Point a test webhook at your endpoint and validate theX-NTXPay-Signature with the secret returned at creation:
Best practices
- Validate the signature — always, even in the sandbox.
- Use
x-event-idfor dedupe — the same event may be redelivered. - Do not rely on ordering — webhooks may arrive out of order after retries.
- Exercise all four statuses before going to production — that is what the sandbox is for.