Card payments and refunds for a retail group with 110+ stores

November 8, 2026

Client name kept private. Same retail group as the RFID rollout.

The problem

A retail group in Saudi Arabia with more than 110 stores needed its point-of-sale (POS) systems to take card payments through Mada terminals on the Geidea gateway. The POS couldn't talk to the terminals directly, and a payment problem at the till costs money and customer trust immediately, so the integration had to handle failures as well as it handles the happy path.

What I built

A backend service that sits between the POS, the card terminal and the Geidea Mada gateway:

  • Secure POS handoff. The POS sends a payment request; the service runs the transaction on the terminal through Geidea's Mada SDK and returns the result to the POS.
  • Sales and refunds, plus cancellations and receipt reprints, so store staff can handle everyday cases without calling support.
  • Error recovery for failed transactions, so a dropped connection or terminal error doesn't leave a payment in an unknown state.
  • Receipts and transaction logs, so any payment can be traced later.
  • Per-store configuration and repeatable installs: one build rolled out to every location with its own settings, scripts and an installation guide.

Stack

Python · Geidea Mada SDK · point-of-sale integration · Windows services · logging

What this means for your project

Payment integrations are mostly about the unhappy paths: refunds, cancellations, failed transactions and being able to trace what happened. If you need a payment provider connected to an existing system, that's where I put the effort.

LinkedIn
GitHub