What’s different in test mode
The mode comes from the key. A test key only ever sees test data. A live key only ever sees live data. If you get a
404 for something you know exists, check you’re using a key from the same mode.
Use the Test mode switch in the dashboard to see your test data.
Try your integration
1
Take a test payment
Follow the Quickstart, or from your terminal:
2
Receive webhooks on your machine
3
Test the unhappy paths
Cancel a payment, close the checkout, send a webhook your server rejects. Your system should handle each one.
Go-live checklist
1. Get verified (KYC)
1. Get verified (KYC)
Submit your business documents in the dashboard. You can’t take live payments until they’re approved. The dashboard shows exactly which documents are still missing.
2. Create live keys the safe way
2. Create live keys the safe way
Create a restricted live key for each system, with only the permissions it needs. Add IP allowlists for your servers, and payout limits on any key that can send money. See API keys.
3. Store keys as secrets
3. Store keys as secrets
Put live keys in environment variables or a secrets manager. Never in your code, your website or your mobile app.
4. Add your live webhook
4. Add your live webhook
Add your live webhook URL in the dashboard and store its signing secret. Live and test webhooks have different secrets. Check that your endpoint verifies signatures.
5. Mark orders paid from the webhook
5. Mark orders paid from the webhook
Don’t rely on the customer reaching your
return_url. People close tabs. Fulfil orders when you receive charge.succeeded, or after verifying the payment on your server.6. Use idempotency keys for payouts
6. Use idempotency keys for payouts
Send a unique
Idempotency-Key with every payout so a retry can never pay twice.7. Run one small real payment
7. Run one small real payment
Pay yourself 10 GMD on your live site and check the order, the webhook and your balance.
Data never moves between modes. Payment links, customers, coupons, sub-accounts and webhooks you made in test mode need to be created again in live mode.
