Het kernprobleem in één zin
iDIN, die zogenaamd soepele brug tussen bank en website, faalt vaak al bij de eerste stap: je kunt je identiteit bevestigen, maar de betaling blijft stil.
Waarom gebeurt dit?
Banken hanteren strikte regels; ze scheiden authenticatie van autorisatie alsof het twee rivaliserende sportteams zijn.
Je klant logt in, toont zijn BSN, krijgt een groen vinkje – klaar. Maar de transactie wordt in een andere workflow verwerkt, en daar stapt de stroom uit.
De technische knoop
API-calls die iDIN-provider en merchant verbinden, hebben vaak een “payment-required” flag die nooit wordt gezet. Resultaat: de gebruiker ziet een bevestiging, maar de back-end ziet geen geld.
Menselijke factor
De support-medewerker kijkt naar de foutmelding “identificatie geslaagd, betaling mislukt” en denkt meteen “gebruikersfout”. In werkelijkheid is het een configuratiefout.
Wat gaat er mis in de praktijk?
Een retailer test zijn checkout in een sandbox, ziet groen, rolt live. De live-omgeving heeft andere certificaten, een andere URL voor de betalingsgateway. Geen wonder dat de betaling verdwijnt.
Door een simpel mis-match in de callback-URL kan de merchant de bevestiging niet ontvangen. De klant zit met een half-gedaan proces, en jij zit met een ticket dat nooit sluit.
Hoe herken je het meteen?
Look: de logs laten een “200 OK” zien voor de identiteitscall, maar geen “200 OK” voor de betaalcall. Dat is je rode vlag.
En hier is waarom: iDIN-providers sturen vaak een “transaction-id” terug. Als je die niet doorgeeft aan de betalingsgateway, blijft de transactie in limbo.
De snelle fix
Stap 1: controleer of de “payment-required” flag wordt gezet bij de identiteitsresponse.
Stap 2: bevestig dat de callback-URL exact overeenkomt met de configuratie in zowel iDIN-portal als payment-gateway.
Stap 3: test met een echte bank-omgeving voordat je live gaat. Een klein bedrag is genoeg om de hele keten te valideren.
Preventieve maatregelen
Implementeer een health-check die zowel identiteits- als betaal-endpoints pingt elke 15 minuten.
Gebruik een fallback-mechanisme: als de betaal-call faalt, stuur de klant een “retry” link.
En ja, vergeet niet je iDEAL CRUKS controleren via de officiële bron. iDEAL CRUKS controleren.
Actiepunt voor nu
Open je merchant-dashboard, zoek de “payment-required” toggle, schakel hem in, en test een live-transactie met een klein bedrag.
