Production
A complete guide to taking your integration live: KYC verification, security checklists, polling queues, and operational runbooks.
Transitioning to Live Financial Rails
Going live connects your software to real telecommunication networks and banking rails over https://payment-service-mh2d.onrender.com/api. Before accepting live customer funds, complete every requirement in the Go-Live Checklist below to ensure security, idempotency, and operational reliability.
Production Readiness Checklist
Review and fulfill each item prior to routing live customer transactions:
| Category | Requirement | Verification Action | Criticality |
|---|---|---|---|
| Identity | KYC Verification | Ensure merchant kycStatus is VERIFIED in the dashboard (mandatory for TransactPay orders). | Blocker |
| Credentials | Production Gateway Keys | Generate production keys via POST/developer/gatewayConfigs. Store apiSecret securely. | Blocker |
| Secret Vault | Zero Client Exposure | Store apiSecret and tokens exclusively in server environment variables or secret vaults. | Security |
| Idempotency | UUID v4 Idempotency Keys | Supply unique Idempotency-Key on all payment calls to prevent duplicate debits on network retry. | Reliability |
| Resiliency | Background Status Polling | Run status polling from a decoupled background queue (BullMQ, Celery) with exponential backoff. | Architecture |
| Rate Limits | 15 Req/Min IP Awareness | Queue requests and handle HTTP 429 responses with exponential backoff. | Performance |
| Audit & Logs | PCI Compliance Scrubbing | Never write full card numbers (PANs), CVVs, or apiSecret to server logs. | Compliance |
| Support | Reference ID Indexing | Always index transactionReferenceId in your internal order records for support follow-up. | Operations |
Environment differences
A separate sandbox is not confirmed. Treat every call on the configured API host as capable of reaching the provider environment stored on the server.
- MTN phoneNumber must be 8–15 digits, with an optional leading +.
- The paying customer does not need a Ziba Pay account. The merchant cannot collect from their own phone number.
- Examples on this site use RWF and +250 to match the default mtnrwanda and Airtel RW
/RWFconfiguration. They are illustrative. - Card checkout uses TransactPay when PGW_* credentials are configured on payment-service.
Support Escalation & Reconciliation Runbook
If a customer reports a debited transaction that did not automatically mark your local order as complete:
- Query the status endpoint using the saved
transactionReferenceId. - Check whether the status returned is COMPLETED, FAILED, or PENDING.
- If the customer was debited but the status remains FAILED or EXPIRED, provide Ziba Pay Merchant Support with the
transactionReferenceId, date, amount, and customer phone number for upstream telco investigation.