---
title: "Pinterminal of Tap to Pay koppelen aan je eigen software: zo werkt het | Coding Agency"
description: "Een pinterminal of Tap to Pay koppelen aan je eigen kassa, app of verhuursysteem: cloud of lokaal, wat een native app vereist en hoe je betaalstatussen betrouwbaar verwerkt."
url: https://coding.agency/kennisbank/pinterminal-tap-to-pay-koppelen-eigen-software
source: Coding Agency (https://coding.agency)
language: nl
---

Betalingen  9 min leestijd  

#  Pinterminal of Tap to Pay koppelen aan je eigen software: zo werkt het. 

Een pinterminal of Tap to Pay koppelen aan je eigen kassa, app of verhuursysteem: cloud of lokaal, wat een native app vereist en hoe je betaalstatussen betrouwbaar verwerkt.

 [ Jasper Koers ](https://coding.agency/over/jasper-koers) · 21 okt. 2026 

##  In het kort 

- Er zijn drie vormen: een losse terminal, een gekoppelde terminal en Tap to Pay op een telefoon of tablet
- Een cloudkoppeling is het eenvoudigst te bouwen en werkt ook vanuit een kassa in de browser
- Tap to Pay vraagt altijd een native app, met een aparte toestemming en beoordeling bij Apple
- Behandel een terminalbetaling als een toestand die je bijhoudt, niet als één moment
- Een onbekende uitkomst los je op door de status op te vragen, nooit door opnieuw af te rekenen

## Hoe koppel je een pinterminal aan je eigen software?

Kort antwoord

Je software stuurt het bedrag via de API van je betaaldienstverlener naar een specifieke terminal, de klant betaalt daar, en de uitkomst komt terug via de API en een webhook. Dat werkt via de cloud of via het lokale netwerk. Wil je de telefoon zelf als terminal gebruiken (Tap to Pay), dan heb je een native app nodig.

Een losse pinautomaat naast de kassa werkt prima, tot je merkt hoe vaak het bedrag twee keer wordt ingetikt. Eén keer in je eigen systeem, één keer op de terminal. Een tikfout, een vergeten korting of een betaling die op de terminal wel en in je administratie niet bestaat, en aan het eind van de dag klopt de kas niet. Wie zijn eigen kassa, verhuursysteem of buitendienst-app heeft, wil daarom dat de software de terminal aanstuurt.

Dat kan inmiddels bij alle grote betaaldienstverleners, en sinds een paar jaar kan ook een gewone telefoon als terminal dienen. In dit artikel leg ik uit welke vormen er zijn, hoe je software met een terminal praat, wat Tap to Pay technisch vraagt, en waar zelfgebouwde koppelingen in de praktijk op stuklopen.

## Drie manieren om fysiek af te rekenen

Voordat je een koppeling bouwt, is het goed om helder te hebben welke vorm je eigenlijk zoekt. Er zijn er grofweg drie.

- **Losse terminal:** de medewerker tikt het bedrag zelf in. Geen koppeling, dus ook geen relatie tussen de betaling en de bestelling of reservering in je systeem. Prima voor een kleine winkel, lastig zodra je wilt kunnen afletteren.
- **Gekoppelde terminal:** je software stuurt het bedrag naar een fysieke terminal, en krijgt de uitkomst terug. De betaling hangt direct aan de verkoop of de boeking. Dit is de standaard voor een eigen kassa of balie.
- **Tap to Pay:** een telefoon of tablet met NFC wordt zelf de terminal. De klant houdt zijn kaart of telefoon tegen het toestel van de medewerker. Geen extra hardware, wel een eigen app.

| Kenmerk | Losse terminal | Gekoppelde terminal | Tap to Pay |

| Bedrag invoeren | Handmatig op de terminal | Door je software | Door je app |
| Koppeling aan bestelling | Geen | Direct | Direct |
| Kassa in de browser | Niet van toepassing | Ja, via een cloudkoppeling | Nee, native app nodig |
| Extra hardware | Terminal | Terminal | Geen, alleen een geschikt toestel |
| Typisch gebruik | Kleine winkel | Balie, kassa, horeca | Buitendienst, verhuur, evenementen |

## Cloud of lokaal: hoe je software met de terminal praat

Bij een gekoppelde terminal zijn er twee manieren waarop je kassa en terminal elkaar bereiken. Adyen beschrijft ze in zijn [integratiedocumentatie](https://docs.adyen.com/point-of-sale/design-your-integration/choose-your-architecture/) helder, en het onderscheid geldt in grote lijnen bij elke aanbieder.

### Cloudkoppeling

Je software stuurt het betaalverzoek via internet naar de betaaldienstverlener, die het doorzet naar de juiste terminal. De terminal hoeft geen vast IP-adres te hebben en je hoeft niets op het netwerk van de locatie in te richten. Adyen noemt dit de makkelijkste route om te bouwen, met als kanttekening dat niet elke toepassing ermee kan.

Bij Mollie werkt het zo: je maakt een gewone betaling aan, met als methode `pointofsale` en het `terminalId` van het apparaat. De terminals haal je op via de [Terminals API](https://docs.mollie.com/docs/integrating-mollie-terminals), en ze hangen aan een betaalprofiel, wat handig is als je meerdere locaties hebt. Stripe heeft daarvoor de [server-driven integratie](https://docs.stripe.com/terminal/payments/setup-integration?terminal-sdk-platform=server-driven): je backend praat met de Stripe API, die de smart reader aanstuurt en je via webhooks de status meldt.

```
$payment = $mollie->payments->create([
    'amount' => ['currency' => 'EUR', 'value' => $amount],
    'description' => 'Verhuur 4812',
    'method' => 'pointofsale',
    'terminalId' => $terminalId,
    'webhookUrl' => $webhookUrl,
]);
```

Het grote voordeel voor maatwerk: omdat alles via je server loopt, kan je kassascherm gewoon een webapplicatie zijn. Een tablet met een browser is genoeg.

### Lokale koppeling

Hier praat je kassa rechtstreeks met de terminal over het netwerk op locatie. Je krijgt het resultaat direct terug en je bent minder afhankelijk van de internetverbinding tussen jou en de betaaldienstverlener. Adyen noemt deze vorm mogelijk robuuster, maar de prijs is complexiteit: je moet het lokale verkeer zelf beveiligen en de terminals hebben een vast adres op het netwerk nodig. En Adyen helpt je uitdrukkelijk niet bij netwerkproblemen op je eigen locatie.

> De terminal is zelden het probleem. Het netwerk op de locatie en de vraag wat je software doet als het antwoord uitblijft, dat zijn de problemen.

## Tap to Pay: de telefoon als terminal

Tap to Pay op iPhone is sinds [augustus 2023 beschikbaar in Nederland](https://www.imore.com/iphone/apple-tap-to-pay-for-iphone-comes-to-the-netherlands), en ook op Android bestaat een vergelijkbare functie. Voor een medewerker in de buitendienst, bij de uitgifte van verhuurmateriaal of aan de rand van een evenemententerrein is dat aantrekkelijk: geen extra apparaat, gewoon de telefoon die er al is.

Technisch zit hier wel de grootste beperking. Tap to Pay gebruikt de NFC-chip van het toestel, en daar kan alleen een native app bij. Stripe levert Tap to Pay bijvoorbeeld via zijn [iOS- en React Native-SDK](https://docs.stripe.com/terminal/payments/setup-reader/tap-to-pay?platform=ios), en de server-driven route ondersteunt juist geen mobiele lezers. Een kassa die in de browser draait, kan de telefoon dus niet als terminal gebruiken.

Wil je Tap to Pay in je eigen app, reken dan op deze stappen:

1. **Toestemming bij Apple:** je vraagt een aparte [Tap to Pay-entitlement](https://developer.apple.com/documentation/proximityreader/setting-up-the-entitlement-for-tap-to-pay-on-iphone) aan, eerst voor ontwikkeling en na het testen opnieuw voor distributie.
2. **Geschikte toestellen:** een iPhone XS of nieuwer met een recente iOS-versie. Pincode-invoer op het scherm wordt ondersteund vanaf iOS 16.4.
3. **Uitleg in de app:** Apple verplicht een instructiescherm dat laat zien hoe je de kaart tegen het toestel houdt, en beoordeelt je app daar ook op.
4. **Een terugvaloptie:** sommige kaarten of bedragen vragen om een extra verificatie die via Tap to Pay niet lukt. Zorg dat er een tweede route is, zoals een betaallink.

Moet je daarvoor een volledige app bouwen? Niet per se. Een kleine native schil rond je bestaande webapplicatie kan genoeg zijn, zolang het afrekenen zelf in de native laag gebeurt. Over de afweging tussen native en cross-platform schreef ik eerder in [native vs cross-platform](https://coding.agency/kennisbank/native-vs-cross-platform).

## Een terminalbetaling is een toestand, geen moment

Het meeste werk in een terminalkoppeling zit niet in het versturen van het bedrag, maar in wat er daarna gebeurt. Een klant kan twijfelen, een kaart kan geweigerd worden, de verbinding kan halverwege wegvallen. Je software moet al die situaties kennen.

- **Eindstatussen:** bij Mollie zijn dat `paid`, `failed` en `canceled`. Rond de verkoop pas af bij een betaalde status, en toon bij een mislukte betaling de reden die de betaaldienstverlener meegeeft.
- **Webhook als signaal, niet als bewijs:** een webhook vertelt je dat er iets veranderd is. Haal daarna zelf de betaling op om de status te controleren, voordat je de verkoop vastlegt.
- **Onbekende uitkomst:** valt de verbinding weg, laat de verkoop dan open staan en vraag de status opnieuw op met het betaalnummer. Opnieuw afrekenen is de snelste weg naar een klant die twee keer betaalt.
- **Dubbele meldingen:** dezelfde statusmelding komt vroeg of laat twee keer binnen. Verwerk ze [idempotent](https://coding.agency/kennisbank/idempotency-bij-api-koppelingen), zodat een herhaalde melding niets verandert.
- **Eén terminal, één betaling:** stuur geen nieuw verzoek naar een terminal die nog met een vorige betaling bezig is. Houd per terminal bij of hij vrij is.

Contactloos betalen zonder pincode kent bovendien grenzen. Boven bepaalde bedragen of na een aantal opeenvolgende betalingen vraagt de bank alsnog om verificatie. Hoe die regels van sterke klantauthenticatie werken, lees je in [wat is 3D Secure en SCA](https://coding.agency/kennisbank/3d-secure-en-sterke-klantauthenticatie).

## Valkuilen die ik in de praktijk zie

- **Geen testomgeving ingericht:** zowel Mollie als Stripe bieden testterminals of gesimuleerde lezers. Bouw de hele flow eerst daartegen, inclusief mislukte en afgebroken betalingen.
- **Terminal per locatie vergeten:** bij meerdere vestigingen moet je software weten welke terminal bij welke balie hoort. Leg dat vast in je eigen beheer, niet in het hoofd van de medewerker.
- **Terugbetalen alleen aan de terminal:** bouw retouren en terugbetalingen via de API, gekoppeld aan de oorspronkelijke betaling. Anders verlies je het spoor in je administratie.
- **Afletteren als bijzaak:** uitbetalingen van je betaaldienstverlener komen gebundeld binnen. Zorg dat elke terminalbetaling een kenmerk heeft waarmee je hem later [automatisch aflettert](https://coding.agency/kennisbank/betalingen-automatisch-afletteren-reconciliatie).
- **Offline niet doordacht:** een terminal zonder verbinding rekent niet af. Op een terrein of in een kelder hoort dat in het ontwerp, niet in de eerste storing. Zie ook [local-first software](https://coding.agency/kennisbank/local-first-software).

## Mijn kijk op terminals in maatwerk

Ik merk dat de terminal vaak als laatste puzzelstuk wordt gezien: eerst het systeem bouwen, en dan zien we wel hoe er betaald wordt. Dat is precies omgekeerd. De vraag waar en hoe je klant betaalt, bepaalt of je een webapplicatie kunt bouwen of een native app nodig hebt, welke betaaldienstverlener past en hoe je datamodel eruitziet.

Mijn voorkeur ligt meestal bij een cloudkoppeling met een kassa in de browser. Dat is het eenvoudigst te onderhouden, je hoeft niets op locatie in te richten en een nieuwe balie is een kwestie van een terminal toevoegen. Tap to Pay is een mooie aanvulling voor wie onderweg afrekent, maar ik zou er pas aan beginnen als duidelijk is dat de buitendienst er echt om vraagt. De extra app en de beoordeling bij Apple zijn geen klein project.

> — Jasper

## Zo helpt Coding Agency hierbij

Wij koppelen pinterminals van onder meer [Adyen](https://coding.agency/kennisbank/adyen-koppeling), Mollie en Stripe aan maatwerksoftware: een eigen kassa, een balie in een [verhuursysteem](https://coding.agency/kennisbank/verhuursoftware-beschikbaarheid-dubbelboekingen) of een app voor de buitendienst. Met betaalstatussen die je software zelf bijhoudt, idempotente verwerking van meldingen en betalingen die vanzelf in je administratie landen.

Twijfel je of een gekoppelde terminal of Tap to Pay beter past bij hoe jouw klanten betalen? Neem [contact](https://coding.agency/contact) op voor een vrijblijvend gesprek.

##  Veelgestelde vragen 

 Ja. Bij een cloudkoppeling stuurt je server het bedrag via de API van je betaaldienstverlener naar de terminal, en de uitkomst komt terug via de API en een webhook. Je kassascherm kan dus gewoon in de browser draaien. Voor Tap to Pay op een telefoon geldt dat niet: daarvoor heb je een native app nodig. 

 Ja, sinds augustus 2023. Je hebt een iPhone XS of nieuwer nodig, een betaaldienstverlener die het ondersteunt, en een app die de Tap to Pay-functie aanroept. Wil je dat in je eigen app, dan moet je bij Apple een aparte toestemming aanvragen en gaat je app door een extra beoordeling. 

 Bij een cloudkoppeling praat je software via internet met de betaaldienstverlener, die het verzoek doorzet naar de terminal. Bij een lokale koppeling praat je kassa rechtstreeks met de terminal over het netwerk op locatie. Cloud is eenvoudiger te bouwen, lokaal kan robuuster zijn maar vraagt vaste netwerkinstellingen en eigen beveiliging van het verkeer. 

 Dan weet je kassa even niet of de klant betaald heeft. Laat de verkoop in dat geval open staan en vraag de status van de betaling opnieuw op bij je betaaldienstverlener, in plaats van opnieuw af te rekenen. Zo voorkom je dat een klant twee keer betaalt. 

 Gerelateerde expertise — API &amp; Koppelingen

 **API-koppeling laten maken?** Wij bouwen betrouwbare integraties met monitoring, retry-logica en vaste prijs per koppeling. Vanaf € 1.000.

 [ Bekijk onze aanpak ](https://coding.agency/expertises/api-koppeling-laten-maken) [ Gratis prijsindicatie ](https://coding.agency/prijsindicatie) 

 Onderwerpen Pinterminal Tap to Pay Kassa Point of sale Adyen Stripe Mollie Betalingen 

##  Gerelateerde artikelen 

 [ 2 sep. 2026 

 Maatwerk 

###  Voorraad, B2B-prijsafspraken en een kassa in één systeem: waarom maatwerk hier wint van een standaard PoS 

 Verkoop je vooral zakelijk, met eigen prijsafspraken per klant, en staat er af en toe een particulier aan de balie? Dan is een winkelkassa h...

 ](https://coding.agency/kennisbank/voorraad-b2b-verkoop-kassa-in-een-systeem) [ 16 sep. 2026 

 Betalingen 

###  Cashless betalen op evenementen: hoe werkt het en wat bouw je zelf? 

 Cashless betalen op festivals en evenementen uitgelegd: gesloten muntensysteem of gewoon pinnen, offline werken op het terrein, terugbetalin...

 ](https://coding.agency/kennisbank/cashless-betalen-evenementen) [ 30 sep. 2026 

 Betalingen 

###  Betalingen automatisch afletteren: zo werkt betaalreconciliatie in je software 

 Betaalreconciliatie uitgelegd: hoe je bankmutaties en PSP-uitbetalingen automatisch aan facturen koppelt, met betalingskenmerken, CAMT.053 e...

 ](https://coding.agency/kennisbank/betalingen-automatisch-afletteren-reconciliatie) 

##  Hulp nodig? 

Vragen over dit onderwerp? Laten we het erover hebben.

 [ Neem contact op ](https://coding.agency/contact)

---
*Bron: [Coding Agency](https://coding.agency/kennisbank/pinterminal-tap-to-pay-koppelen-eigen-software)*