Escrow Safe Trade is live: protect your next high-value deal Learn more
ProductsPayment links & checkoutM-Pesa, cards, invoices, split payoutsEscrow Safe TradeMilestone and release-based escrowWallets & P2PPersonal and business walletsChama, Lengo & DeniGroup savings, goals and IOUsBusiness toolkitAccounting, payroll, POS, ticketingBulk payments & payrollPay many people in one uploadSubscriptions & billingRecurring plans and renewalsRent, loans & donationsCollections and campaignsAll products
SolutionsMerchantsBuyersChama groupsBusiness solutionsIndustries
Pricing
DevelopersDeveloper overviewQuickstart, auth and sandboxREST APIsCheckout, invoices and requestsWebhooksSigned, real-time eventsWallet-as-a-ServiceVirtual sub-accountsDocumentationGuides and API reference
Security
CompanyAbout usCareersPartnersBlogHelp centreContact us
Log in Get started Talk to sales
News4 min read

Payment Reconciliation: Match Unmatched M-Pesa Payments to the Right Checkout

When a customer pays outside the normal checkout flow, Xduka POS gives authorised staff a way to review unmatched payment callbacks and match them to the right checkout session.

Paysasa Team12 Oct 2026

Most mobile payments in Xduka POS start from the sale itself, with an STK push or a hosted checkout, so they are linked to the right transaction automatically. But real life is messy. A customer may pay to a paybill directly, use the wrong account reference or pay after the checkout session has closed. Those payments arrive, but they are not linked to a sale.

To deal with this, we built a Payment Reconciliation area into Xduka POS for reviewing unmatched payments and matching them to the right checkout session.

What is available

As our Xduka POS API documentation sets out, store members with reconciliation permission can review unmatched C2B callbacks and match them to checkout sessions. The reconciliation queue can be filtered by status, such as payments pending review, and each unmatched payment can be matched to a checkout session.

How an unmatched payment is resolved
How an unmatched payment is resolved

Why unmatched payments happen

Some common reasons:

  • The customer paid directly to a paybill instead of approving the STK prompt.
  • The customer entered a wrong or incomplete account number.
  • The payment came in after the cashier had moved on to the next sale.
  • A network delay meant the confirmation arrived late.

Without a reconciliation process, these payments sit in a statement and have to be matched by hand at the end of the day or month, which is slow and error-prone.

How reconciliation helps

  • One queue. Unmatched payments are collected in one place instead of being scattered across statements.
  • Clear status. Payments pending review are easy to find.
  • Linked records. Once matched, the payment is tied to the correct checkout session.
  • Accountability. Only people with the right permission can match payments.

Who can use it

Who can view and act on reconciliation, by role
Who can view and act on reconciliation, by role

Access is controlled by role. Owners have full reconciliation access, including the ability to act. The viewer role can see reconciliation records for oversight. Matching is reserved for members with reconciliation action permission, so sensitive financial decisions stay with the right people.

Good reconciliation habits

  1. Review the queue daily, ideally at closing time.
  2. Check amounts and times against the sale before matching.
  3. Ask the customer for their M-Pesa code when in doubt.
  4. Do not force a match you are unsure about; investigate first.
  5. Look for patterns. Frequent unmatched payments may mean customers need clearer payment instructions.

Part of our Paysasa integration

Reconciliation is part of our integration with our sister platform Paysasa in Xduka POS, alongside checkout requests and STK push. Our POS server talks to Paysasa using stored business credentials, and sensitive keys remain in store settings, never exposed to browsers.

Quick checklist

  • Confirm who on your team has reconciliation permission.
  • Review the pending queue at the end of each day.
  • Check amount, time and customer details before matching.
  • Never force a match you are unsure about.
  • Track why payments go unmatched, and fix the cause.
  • Keep Paysasa connected so checkout requests and STK push are used first.

Reducing unmatched payments in the first place

Reconciliation is a safety net, but prevention is better:

  • Start payments from the sale with STK push or a checkout request wherever possible.
  • Confirm the phone number with the customer before sending a prompt.
  • Wait for confirmation before moving on to the next customer.
  • Explain clearly what the customer should do if the prompt does not arrive.

The fewer payments that arrive outside the checkout flow, the shorter your reconciliation queue will be.

A quick example

For example, picture a busy Saturday at a minimart in Kisumu. A customer's STK prompt times out, so they pay directly to the paybill and leave. At closing, the manager opens Payment Reconciliation, sees one payment pending review with the matching amount and time, checks it against the checkout session for that sale and matches it. The day's records are complete.

Frequently asked questions

Can a cashier match payments?

Not with the standard cashier role. Matching requires reconciliation action permission.

How do I find payments that need attention?

Filter the reconciliation queue by status, such as pending review.

What if I am unsure about a match?

Do not force it. Check the amount, time and customer details first, and ask the customer for their M-Pesa code if needed.

A home for every payment

Even the best checkout flow will occasionally miss a payment. Payment reconciliation in Xduka POS gives those payments a home, a status and a clear way to match them to the right sale.

Read more in our API documentation or explore Xduka POS at www.xduka.com.

#reconciliation#M-Pesa#Paysasa#payments#accounting

Get paid by M-Pesa, cards and wallets, safely.

Create a free Paysasa account in minutes: payment links, checkout, escrow and instant reconciliation.