Mollie foutcodes en betaalstatussen: wat betekenen ze?
Dario Albers · bijgewerkt 10 november 2026
Kort antwoord: Mollie geeft bij een mislukte API-aanroep een HTTP-statuscode terug (400 tot 504) en elke betaling heeft een status (open, pending, authorized, paid, canceled, expired of failed). Hieronder staat elke code met de betekenis uit Mollie's eigen documentatie, wat je er in de praktijk mee doet, en wat er misgaat als je webhook de betaling niet bereikt.
HTTP-foutcodes van de Mollie API
Gelukt is 200 (verzoek geslaagd), 201 (object aangemaakt) of 204 (object geannuleerd of verwijderd, zonder inhoud). Alles hieronder is een fout. De kolom “Wat je doet” is mijn praktische advies; de kolom ernaast is de documentatie van Mollie.
| Code | Mollie documenteert | Wat je doet |
|---|---|---|
| 400 | De API kon het verzoek niet lezen, mogelijk door een syntaxfout. | Controleer de JSON en de veldnamen die je verstuurt. |
| 401 | Authenticatie mislukt. Controleer je API-sleutel. | Gebruik de sleutel van het juiste profiel en de juiste omgeving (test of live), en zet hem alleen op de server. |
| 403 | Je hebt geen toegang tot de gevraagde bron. | Controleer of de sleutel of het account recht heeft op dit onderdeel. |
| 404 | Het object in de URL bestaat niet. | Controleer het id (bijvoorbeeld tr_…) en of je test- en livesleutel niet door elkaar haalt. |
| 405 | De HTTP-methode hoort niet bij deze URL. De Allow-header noemt de methoden die wel kunnen. | Gebruik een van de methoden uit de Allow-header. |
| 409 | Een dubbele API-aanroep die waarschijnlijk een vergissing was (alleen in v2). | Kijk of je code dezelfde aanvraag twee keer verstuurt. |
| 410 | Het object is eerder verwijderd (alleen in v2). | Haal het id uit je eigen administratie of maak een nieuw object aan. |
| 415 | De codering van het verzoek wordt niet ondersteund of verkeerd gelezen. Mollie adviseert altijd JSON te gebruiken. | Stuur JSON met een Content-Type-header voor JSON. |
| 422 | Het verzoek kon niet worden verwerkt om een andere reden dan de codes hierboven. Het antwoord bevat meestal een field-eigenschap met het veld dat het probleem veroorzaakt. Is je account opgeschort, dan staat meer informatie in je Dashboard. | Lees field en detail in het antwoord; kijk bij een opgeschort account in je Mollie-Dashboard. |
| 429 | Je verzoek heeft een limiet bereikt (rate limit). Probeer het na een korte tijd opnieuw. | Wacht even en probeer het opnieuw; stuur niet in één keer veel aanroepen. |
| 500 | Er is een interne fout aan de kant van Mollie. | Probeer het later opnieuw; blijft het gebeuren, neem dan contact op met Mollie. |
| 502 | De dienst is tijdelijk niet beschikbaar door een storing of gepland onderhoud. Probeer het later opnieuw. | Probeer het later opnieuw. |
| 503 | De dienst is tijdelijk niet beschikbaar door een storing of gepland onderhoud. Probeer het later opnieuw. | Probeer het later opnieuw. |
| 504 | Je verzoek veroorzaakt een ongewoon lange verwerkingstijd. | Probeer het later opnieuw, met een kleiner verzoek als dat kan. |
Een foutantwoord is JSON met deze velden, zoals Mollie ze in de voorbeelden toont:
{
"status": 422,
"title": "Unprocessable Entity",
"detail": "The amount is higher than the maximum",
"field": "amount",
"_links": { "documentation": { "href": "https://docs.mollie.com/errors", "type": "text/html" } }
}status is de HTTP-code, title een korte naam, detail een leesbare uitleg en field(bij 422) het veld dat het probleem veroorzaakt. Bij 5xx-fouten zegt Mollie dat ze vanzelf zouden moeten verdwijnen: probeer het later opnieuw.
Betaalstatussen
Elke betaling heeft één van zeven statussen. Mollie noemt paid, canceled, expired en failed definitief: daarna verandert de status niet meer.
| Status | Betekenis volgens Mollie | Definitief | Webhook |
|---|---|---|---|
open | De betaling is aangemaakt en je klant kan haar nog afronden. | Nee | Nee |
pending | Een tijdelijke status: het betaalproces is gestart maar nog niet klaar. | Nee | Ja |
authorized | Bij betaalmethoden met captures: zolang er nog nieuwe captures kunnen worden aangemaakt. | Nee | Ja |
paid | Je klant heeft de betaling afgerond. | Ja | Ja |
canceled | Je klant heeft de betaling geannuleerd. | Ja | Ja |
expired | De betaling is verlopen, bijvoorbeeld omdat je klant haar heeft laten liggen. | Ja | Ja |
failed | De betaling is mislukt. | Ja | Ja |
De kolom Webhook geeft aan of Mollie bij deze status je webhook aanroept, zoals de statustabel van Mollie het weergeeft.
Webhooks: waarom een betaling niet aankomt
Een webhook is de melding van Mollie aan je site dat er iets met een betaling is gebeurd. De werking staat in Mollie's documentatie:
- Mollie stuurt een POST met één parameter,
id(bijvoorbeeldtr_d0b0E3EA3v). De status zit er niet in. - Jouw server haalt daarna de betaling op bij de Payments API met dat id en kijkt wat de status is.
- Antwoord met HTTP 200. Voor een onbekend id raadt Mollie ook 200 aan, zodat je niets prijsgeeft.
- Een antwoord duurt maximaal 15 seconden; een 200 daarna telt als mislukt.
- Geen 200? Dan probeert Mollie het opnieuw: 10 pogingen in totaal, met steeds langere tussenpozen. De tiende valt 26 uur na de statuswijziging.
- Een redirect (301 of 302) maakt van de POST een GET en laat de inhoud vallen. Gebruik 307 of 308.
Betaalt een klant, maar zie je in je site niets gebeuren, loop dan deze lijst langs: geeft de webhook-URL 200 binnen 15 seconden, is hij van buiten bereikbaar (niet achter een inlog of een omleiding), en haal je de betaling zelf op in plaats van op de status te vertrouwen die iemand meestuurt?
iDEAL werkt niet op je webshop: wat je nu doet
- Open de statuspagina van Mollie. Daar meldt Mollie zelf of het platform en de betaalmethoden werken.
- Kijk of het verzoek een foutcode teruggeeft. Die staat in de tabel hierboven.
- Probeer een bestelling met een andere betaalmethode, bijvoorbeeld kaart. Lukt dat wel, dan zit het probleem bij iDEAL of de bank van de klant en niet bij je site.
- Lukt het bij meerdere methoden niet, neem dan contact op met Mollie via je Mollie-dashboard.
Heb je een webshop of boekingssite bij mij? Stuur me de foutmelding en het tijdstip, dan kijk ik mee. Zo ziet online betalen eruit bij een bandenservice.
Zo doet darioa.nl het zelf
Mijn eigen betaalflow werkt zoals Mollie het voorschrijft: de webhook leest de betaling terug bij Mollie en vergelijkt het bedrag met wat bij de aanvraag is vastgelegd, en de bedankpagina laat de echte status zien (in behandeling, betaald, mislukt, geannuleerd of verlopen). Bij een webshop of boekingssite die ik bouw loopt betalen via je eigen Mollie-account, zonder commissie van mij; een voorbeeld is de bandenwebshop met online betalen, waar een onbetaalde bestelling vanzelf vervalt en de banden weer te koop komen. Wat zo'n webshop kost lees je in Shopify of een eigen webshop, en de vaste prijzen staan op de prijzenpagina.
Wil je weten of je eigen site bereikbaar is en goed antwoordt? Gebruik de gratis websitecheck. Ontbreken er gegevens op je site die een webwinkel moet tonen, test je dat met de bedrijfsgegevens-checker.
Veelgestelde vragen
Stuurt Mollie de status mee in de webhook?
Hoe lang probeert Mollie een webhook opnieuw?
iDEAL werkt niet op mijn webshop: wat doe ik?
Welke betaalstatussen zijn definitief?
Handige hulp, gratis
Hulp nodig bij je website?
Stuur me een WhatsApp. Je krijgt binnen een werkdag antwoord, en een vaste prijs voordat je iets betaalt.