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.

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

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
- Review the queue daily, ideally at closing time.
- Check amounts and times against the sale before matching.
- Ask the customer for their M-Pesa code when in doubt.
- Do not force a match you are unsure about; investigate first.
- 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.



