An M-Pesa integration project needs more than a successful payment demonstration. Finance teams need to know what happens when a notification arrives twice, a customer uses the wrong reference or an invoice remains unpaid after money is received. Define these cases before approving a development scope.
Start with a payment-to-invoice map
List the source transaction identifier, account reference, amount, time and destination invoice. Decide which record is authoritative when two systems disagree. A useful discovery session follows one payment from receipt through allocation, a customer balance and the finance report. Avoid relying on a customer's screenshot as the sole payment record.
Test duplicate and delayed notifications
Ask the implementation team to replay the same notification and show that it does not create a second receipt. Then test a notification that arrives after an invoice has been changed. The system needs a clear exception state, a responsible reviewer and enough history to explain the eventual allocation. Retry behaviour should be agreed as part of the integration scope.
Make manual corrections reviewable
A correction should identify the original transaction, reason, operator and resulting allocation. Ask how access to corrections is restricted and how finance can export unresolved items. Do not treat an unmatched payment as an automatic failure or silently assign it to a tenant with a similar name. Define reconciliation ownership across the business and software supplier.
Brief ZamaCore with real exceptions
Bring anonymised examples of duplicate messages, incorrect references and split payments to a project consultation. ZamaCore's public offering includes M-Pesa workflows and business systems. Ask for a scoped demonstration and acceptance criteria covering your accounting process, integration dependencies and support responsibilities. Agree which controls are standard and which require custom development.
Explore ZamaCore to discuss the requirements in this guide.
Further reading: Safaricom Daraja developer portal. Confirm requirements for your own operation with the responsible provider or organisation.