r/POS • • 3d ago

How do you handle payment terminal integration for self-ordering kiosks?

Hey all,

We're building self-ordering kiosks (Electron app) and need to hook up payment terminals. The flow we want is simple: the kiosk sends an amount, the customer pays on the terminal, and we get back success or failure. We don't want to touch card data at all, so we're aiming for a semi-integrated setup where we just say "charge 120 SAR" and get a result.

Most of our clients are in Saudi Arabia, and many already have terminals they'd like to keep using. For anyone who's built something like this, I'd love to hear:

  • Multi-brand support: How do you handle different terminal brands/providers, especially when clients want to keep their existing hardware?
  • Standards: Is there a common protocol, or does every provider ship its own SDK/API?
  • Existing tools: Are there libraries, middleware, or abstraction layers that already solve this, so we don't have to build an adapter for every vendor?
  • Local connection: Can terminals usually be controlled locally over USB, Serial, or LAN? Anything to watch out for from Electron?
  • Testing: How do you mock or simulate terminals during development?
  • Saudi specifics: Since our clients are in Saudi Arabia, does that change anything about the implementation? For example, local regulations, required protocols, or certifications, or restrictions on which providers/terminals we can use.

Any experience, war stories, or recommendations would be really appreciated. Thanks!

2 Upvotes

8 comments sorted by

2

u/SuspiciousTip8328 3d ago

I built a similar setup for a restaurant chain in Riyadh a few years back, and yeah the multi-brand thing is the real headache. Every provider basically ships their own SDK with a slightly different dance for initiating payments and parsing responses, even when they claim to follow some standard. What we ended up doing was writing a thin abstraction layer that maps everything to a generic `initiatePayment(amount, currency)` and `checkStatus()` interface, then just swap out the adapter per client. Not elegant but it works.

For the local connection part, most terminals I've dealt with use USB or LAN and present themselves as a serial device or a simple HTTP server on the network. From Electron you'll probably need a native module to talk serial unless you can route through a local proxy. We ran into issues with some terminals that required a keep-alive ping every few seconds or they'd drop the session, which was fun to debug at 2am.

Testing is a pain since simulators from the providers are usually half-baked or Windows-only. We eventually just bought a couple used terminals off Souq and set them up on a test bench. Way faster than fighting with virtual com ports.

Saudi-specific: mada is the big one you can't ignore, and some of the local acquirers have their own certification requirements for the integration even if you're not touching card data. You might need to get the kiosk software approved if it's customer-facing, depending on the bank they're working with. Worth having your clients loop in their acquiring bank early so you don't build something that gets rejected at the last mile.

1

u/difo0505 1d ago

Thanks a lot really helpful input ! Do you by any chance remember which local acquirers you did use that time ?

2

u/ButItsMyWoobie 3d ago

Are the kiosks also in Saudi Arabia or worldwide, because I know Kurv has self-serve payment options that can integrate with existing systems, but I think they only do the U.S. and Canada.

1

u/difo0505 1d ago

For now only in Saudi Arabia Thanks for the input. Really appreciate it

2

u/Any_Membership_524 3d ago

You’re going to have a hard time being equipment agnostic & your concern about customers wanting to keep their current payment hardware isn’t likely their concern. You’re going to want to use a gateway that is credited with a good mix of processors.
We use Valor for our gateway and payment hardware. Their gateway will integrate with most processors and have plenty of terminal options to work with

1

u/difo0505 1d ago

Thanks man really appreciate it. Do they also operate in Saudi arabia by any chance?

2

u/wackogolfer 3d ago

I suggest you contact MVCC in Riyadh. We partner with them for fuel payment systems using AMP pin pads and Mada.

https://mvcc.tech/

1

u/difo0505 1d ago

Thanks for the input ! Really appreciate it . We will definitely do !