Going Live Checklist
Work through every section before switching to production credentials. These are the exact things that cause failures in first production deployments.
1. Account & Credentials
- KYB submitted and approved on the Onmeta Merchant Dashboard
- Production Client ID and Client Secret obtained from Dashboard → Setup → API's Setup
- Integration tested end-to-end on staging before switching to production
2. IP Whitelisting
- All production server outbound IP addresses identified
- IP addresses sent to your Onmeta integration contact or support@onmeta.in
- Onmeta confirmed whitelisting is active
warning
API calls from non-whitelisted IPs are rejected in production. Confirm this before go-live.
3. Webhook Configuration
- Webhook URL configured in Dashboard → Setup → Callback URLs
- HMAC-SHA256 signature verification implemented — see Webhook Security
- Endpoint responds with HTTP
200within 10 seconds (Onmeta does not retry on timeout) - All on-ramp webhook events handled:
fiatPending,fiatReceived,orderReceived,transferred,completed,expired,refunding,refunded
4. KYC Flow
- KYC status check integrated (
POST /v1/users/kyc-status) - KYC upload flow integrated or KYC Widget used for API integration cliets.
5. On-Ramp Specific
- Bank or UPI linking flow implemented (
POST /v1/users/account-linkorPOST /v1/users/upi-link) - Payment details (bank account or UPI QR code) displayed to user after order creation
- UTR submission implemented — user must submit UTR after payment (
POST /v1/orders/utr) - 3-hour order expiry communicated in UI; user shown how to create a new order if expired
-
fiatRefundInitiatedstatus handled — payment from unlinked account triggers a fiat refund within 24 hours
6. Off-Ramp Specific
- Bank account linked before order creation
- User shown the
receiverWalletAddressfrom the order response — this is where they send crypto - Transaction hash submission implemented after user sends crypto (
POST /v1/offramp/orders/txnhash) - Settlement timeframe communicated to user (standard: 24 banking hours after crypto receipt)
- Merchant wallet flow: dedicated wallet address received from Onmeta tech team before using the Load Merchant Wallet API
7. Error Handling
- All documented error codes handled — see Troubleshooting
-
401 Unauthorizedhandled: re-authenticate the user (token expires every 15 min) -
429 Daily limit exceededhandled: show remaining daily limit using the Fetch User Limit API -
403 blocked profilehandled: show message, do not retry -
430 Wallet already usedhandled: show error, do not retry with the same wallet address
8. Order Status Polling
- Status polling implemented at 10–15 second intervals (
POST /v1/orders/status) - All terminal statuses handled —
completed,expired,cancelled,refunded; stop polling on terminal - All intermediate statuses display appropriate progress UI — see Order Status Guide
9. Final Testing
- Full on-ramp order placed end-to-end on production (small amount)
- Webhook received, HMAC signature verified, and order state updated correctly
- Off-ramp order placed end-to-end on production (if applicable)
- Error scenarios tested: expired access token, missing UTR, wrong wallet address
10. Go-Live
- Onmeta integration contact notified before launching
- Monitor first 24 hours of production orders
- Webhook failure alerting set up