Customers pay the way they expect to — and the books still balance
Local card payments and buy-now-pay-later, wired end to end. Five platforms, each reconciling correctly against the accounts.
- Sector
- Retail and e-commerce, GCC
- Year
- 2024 — 2026
- Built with
- Odoo · Python · UPayments · Tamara · Tabby
The result
- Customers pay with the methods they actually use locally
- Buy-now-pay-later offered only to customers who will be approved
- Every payment reconciles against the accounts automatically
The situation
A payment method that customers do not recognize is a checkout they abandon. In the Gulf that means local card networks, and increasingly it means buy-now-pay-later — customers expect to split a purchase into installments, and if you do not offer it, someone else does.
That is one half of the problem. The other half is what happens after the money moves: whether the payment lands in the accounts correctly, every time, without somebody reconciling it by hand.
What I found
Two things go wrong with payment integrations, and neither is the payment itself.
The first is offering a method that then declines. Buy-now-pay-later providers approve or reject each customer. Showing the option to someone who will be refused is a worse experience than not offering it at all.
The second is reconciliation. A payment that succeeds at the gateway but never lands correctly in the accounts creates a discrepancy someone has to chase manually. Do that a few hundred times a month and you have hired a person to fix a software problem.
What I changed
Each provider was integrated end to end, not just to the point where money moves:
- Eligibility is checked before the option is shown, so customers only see installment plans they will actually be approved for.
- The provider tells us the outcome directly, and that message is verified as genuine before it is trusted — so a payment cannot be faked by anyone who guesses the address.
- Every result writes back to the accounts, including the awkward ones: refunds, partial captures, and payments that complete after the customer has closed the browser.
The detail that matters throughout: log what the provider actually returned, not what the documentation said it would return. Those two are not always the same, and that gap is where most integrations quietly fail.
The result
Five payment platforms live: local card payments through the Kuwaiti gateway, two buy-now-pay-later providers, plus international gateways from earlier work.
Customers pay the way they expect to, and finance stops chasing mismatches.
For the technically minded
UPayments (KNET) wired through pos_online_payment with a polling component on the POS
side; Tamara and Tabby implemented against their Checkout APIs with background
pre-scoring to decide whether the method is offered, hosted-checkout redirect, and
webhook handling with HMAC-SHA256 signature verification. Earlier gateway work:
WeAccept, Stripe and PayPal.
Client names and identifying details are withheld deliberately. Every figure on this page comes from a system I can open.