BlogSoftware
Mobile money and payment integrations: designing for reconciliation
By Micah Ondiwa, Senior Software Engineer 1 min read
Payment integrations fail in subtle ways. Callbacks, idempotency and daily reconciliation keep money and records in step.
Accepting payments in an application — mobile money, cards or bank transfers — looks simple until a confirmation is lost or arrives twice.
Treat callbacks as the source of truth
Payment providers notify your system asynchronously. Record each notification, verify it came from the provider and update the payment status from it.
Make processing idempotent
Providers may send the same notification more than once. Use the provider's transaction ID to ensure a payment is applied only once.
Handle the in-between states
Payments can be pending, failed, reversed or partially completed. Show users accurate status and do not release goods or services on a pending payment.
Reconcile daily
Compare your records with the provider's statement every day. Investigate differences while they are fresh.
Protect credentials
Store API keys securely on the server, never in mobile apps or web pages, and rotate them if exposed.
Communicate clearly
Send receipts automatically and give customers a reference they can quote.
See our payment and systems integration work.
About the author
Micah Ondiwa
Senior Software Engineer
Micah Ondiwa writes about software engineering — application architecture, APIs and integration, data and AI-assisted development, and reliable delivery.
