Statements in, matches out
Paste or upload statement rows. Each row is checked against open charges by amount, reference or phone, provider and a time window. Clear matches settle; anything ambiguous is left for a person to decide.
Reconciliation
Import an M-Pesa or bank statement and Pay settles the charges still waiting on a payer. It matches on amount, reference or phone, provider and time, and never invents a payment.
Paste or upload statement rows. Each row is checked against open charges by amount, reference or phone, provider and a time window. Clear matches settle; anything ambiguous is left for a person to decide.
Enter a transaction code and Pay asks the provider about it directly. You can record, reconcile or dismiss the result, and the amount and status always come from the provider, never from what was typed.
When SasaPay or KCB Buni notifies Pay of a payment, Pay confirms it with the provider, matches it against your open charges first and records it once, keyed on the provider's transaction code.
Collections, payouts and refunds share one ledger and one event history, scoped to each project, so overlapping references in two projects never match each other.
Something else? Ask us.
No. Statement import only settles charges that already exist and match unambiguously. It never creates a payment on its own.
No. Settlement happens once from a single open state, and a unique index on the provider receipt stops a callback, a notification and a statement row from settling the same payment twice.
M-Pesa and bank statements. Each row is matched against the payment method it was paid into.
Tell us what you are building and which providers you use. We set up your workspace and help you go live.