Guides
M-Pesa and payments guides
What actually goes wrong with payments in Kenya, and how to build so it does not cost you. Written by the engineers who build Noria Pay.
-
14 November 2026 · 8 min read
Automatic M-Pesa reconciliation: matching rules that never double-count
How to match M-Pesa paybill, till and bank statement lines to the payments your system expected - which fields to match on, what makes a match safe, and the rules that stop one payment being counted twice.
Read the guide -
14 November 2026 · 8 min read
Daraja callback not received? Why it happens and how to fix it
The customer paid but your M-Pesa callback never arrived. The usual causes - unreachable URLs, blocked keywords, bad certificates, slow handlers - and how to recover payments safely without charging twice.
Read the guide -
14 November 2026 · 7 min read
Idempotency keys: how to stop double charges on M-Pesa and card payments
Why retrying a payment request can charge a customer twice, how idempotency keys prevent it, how to choose a good key, and what to do when the outcome of a payment is unknown.
Read the guide -
14 November 2026 · 8 min read
M-Pesa B2C payouts: initiator, security credential and results explained
What you need to send M-Pesa B2C payments through Daraja - the B2C shortcode, initiator, security credential and certificate - how results come back, and how to pay out without ever sending money twice.
Read the guide -
14 November 2026 · 7 min read
M-Pesa STK push result codes, and what to do about each one
What the ResultCode in a Daraja STK push callback means - 0, 1, 1032, 1037, 2001, 1001, 1019 - which failures are final, which are worth retrying, and how to tell a customer what happened.
Read the guide -
14 November 2026 · 8 min read
How to verify payment webhook signatures with HMAC-SHA256
Why every payment webhook must be verified before you give value, how HMAC-SHA256 signatures with timestamps work, the raw-body mistake that breaks most implementations, and working code in Node.js, Python, PHP and Go.
Read the guide
Ready to take payments properly?
Tell us what you are building and which providers you use. We set up your workspace and help you go live.