Skip to content

Go-live checklist ​

What has to be true before each Mamlaka product carries real money for the exchange. "Built" means the exchange already does it and it is covered by tests; the rest are steps for the people involved.

Payment gateway ​

ItemOwner
☐Sandbox merchant created; merchant id and API password entered on the exchange's serverMamlaka ops, exchange operator
☐Sandbox callback signing secret set for the merchant and entered on the serverMamlaka ops, exchange operator
☐Sandbox run: an STK push to the success test number confirms an invoice payment; the failure test number fails itExchange operator
☐Sandbox run: a card payment on the hosted page with a test card, with and without a 3-D Secure challengeExchange operator
☐Sandbox run: a B2C payout after two approvalsExchange Finance
☐Live merchant created, with card profile (KES; USD if enabled), paybill and B2C floatMamlaka ops
☐Live callback signing secret set and entered on the serverMamlaka ops, exchange operator
☐First live collection and first live B2C for a small amount, checked against the Mamlaka dashboardExchange Finance
✓An externalId stored before every call and reused on retryBuilt
✓Timeouts, 5xx and 202 held as Unknown, never refundedBuilt
✓Every outcome read back with GET /transaction; callbacks only prompt a readBuilt
✓A poller for payments whose callback never cameBuilt
✓Sandbox limited to the gateway's test numbersBuilt

Virtual cards ​

ItemOwner
☐Partner API key and webhook signing secret entered on the server onlyExchange operator
☐Card webhook address registered with MamlakaMamlaka ops
☐KES float fundedExchange Finance
☐First cardholder: a named driver, with consent recorded, passes KYCExchange Fleet
☐First card issued and loaded; balance checked against MamlakaExchange Finance
✓An Idempotency-Key on every action, reused on retryBuilt
✓A quote taken before every issue and loadBuilt
✓Webhook on HTTPS, signature checked over the raw body, each event acted on onceBuilt
✓Polling fallback for KYC, cards and operationsBuilt
✓KYC fields and files checked before they are sentBuilt
✓Card number and CVV never shown or storedBuilt (by design, there is no screen for them)
☐An alert to Finance when the float runs low (today it is shown on Fleet → Driver cards)Planned

For the exchange ​

Item
☐The two Finance users who approve payments out are named, and each has their own sign-in
☐The money-rails release is on the server, with a database backup taken first
☐GET /health names each rail that is switched on

AgriTrade Exchange