Going live
By the end of this track you can design a system that never loses money.
0/4 finished
Step 1
The idea
Walk the go-live checklist in Sandbox setup, and run the kit's check_integration.py on your code.
Step 2
How it works
Before you apply
You need a registered business with a Paybill or Till, KYC complete, and an admin on the M-Pesa org portal. Going live on the Daraja portal verifies your shortcode by OTP and issues production keys; the M-Pesa Express passkey arrives by email. You create the production initiator yourself, with the roles each API needs. Some products, such as C2B external validation and Pull Transactions, need a separate request to Safaricom.
What changes in your code
- The host becomes
https://api.safaricom.co.ke. - New keys, passkey and shortcode, kept in a secret store, not a file.
- The production certificate for SecurityCredential.
- Callback URLs on your own HTTPS domain, and C2B URLs registered once on the production shortcode.
Check your integration
The kit's check_integration.py reads your code and flags common mistakes: marking paid on the first response, float amounts, missing duplicate checks, keys in source. Fix every high finding.
The first real payment
Send a small amount to yourself, follow it through callback, ledger and the portal statement, and only then open it to customers.
Step 3
Common mistakes
- Copying sandbox values into production config.
- Launching without having watched one real payment all the way through.
Go deeper
What's the one real-money test before launch?
Answer in your own words first.
Show the answerHide the answer
A live test with small amounts, reconciled against the org-portal statement.