Je krijgt op vrijdag een betaalbestand binnen met één bedrag van €4.100 en een pdf van de klant met drie factuurnummers. Twee regels kloppen exact. De derde is €420 lager omdat een levering wordt betwist. Een automatische koppeling die alleen op totaalbedrag zoekt, sluit de verkeerde post of maakt het verschil onzichtbaar.
Cash application is daarom geen simpele bankkoppeling. Het is een gecontroleerde AR-beslissing: welke betaling hoort bij welke openstaande posten, welk deel blijft open, welke overbetaling wordt apart gezet en wanneer mag het ERP die beslissing definitief vastleggen? Hieronder bouw je die route op voor bankbestanden, Mollie, Stripe en een ERP zoals Exact Online, AFAS Profit of Dynamics 365 Finance.
De productdetails, documentatie en prijzen in dit stuk zijn gecontroleerd op 10 oktober 2026. Prijzen zijn exclusief btw tenzij anders vermeld.
Cash application is het gecontroleerd toewijzen van ontvangen betalingen aan openstaande klantposten. De route gebruikt remittance-informatie, bank- of PSP-identificaties, klant- en factuursleutels en bedragcontroles om een voorstel te maken. Een uniek voorstel wordt voorbereid in staging. Deelbetalingen, overbetalingen, disputen en twijfelgevallen blijven daar tot een bevoegde medewerker ze vrijgeeft.
Wat je nodig hebt voordat je één euro aflettert
Begin met eigenaarschap. De bank of PSP bezit de geldbeweging. De klantmail, pdf of EDI-remittance bezit de bedoeling van de betaling. Het ERP bezit de openstaande post en de uiteindelijke aflettering. Geen van deze bronnen mag een ontbrekend veld voor een andere bron invullen.
Je hebt minimaal dit nodig:
- Een overzicht van alle bronnen. Denk aan een CAMT.053-bestand, een bankfeed, Mollie Settlement Reports, Stripe balance transactions en remittance-pdf’s of e-mails. ISO 20022 is juist nuttig omdat betalingsberichten rijkere en beter gestructureerde gegevens kunnen dragen, maar de kwaliteit hangt nog steeds af van wat de betaler invult. De Nederlandse Betaalvereniging beschrijft ISO 20022 als de internationale berichtstandaard voor digitale betalingsgegevens, met meer informatie voor efficiëntere verwerking.
- Toegang tot openstaande posten. Je moet minimaal klantnummer, factuurnummer, factuurdatum, vervaldatum, valuta, oorspronkelijk bedrag, openstaand bedrag, kredietnota’s en blokkades kunnen lezen uit Exact Online, AFAS Profit, Dynamics 365 Finance of een ander ERP.
- Een vaste sleutelset. Kies bijvoorbeeld
customer_id,invoice_number,order_reference,payment_id,payout_id,end_to_end_id,remittance_hashencurrency. Een omschrijving of bedrag alleen is nooit een unieke sleutel. - Een duurzame staginglaag. Bewaar bron-snapshots, genormaliseerde velden, kandidaatmatches, gebruikte regels, modelversie, reviewer, goedkeuring, ERP-resultaat en read-back. De uitvoergeschiedenis van Make of n8n is geen financieel dossier.
- Een uitzonderingsqueue. Iedere kaart heeft een reden, bedrag, valuta, bron-ID’s, voorgestelde uitkomst, eigenaar, deadline, bewijs en status.
confidence_lowis geen reden.multiple_invoice_candidatesofpartial_paymentwel. - Een bevoegdhedenmatrix. De persoon die een remittance leest hoeft niet de persoon te zijn die een korting, afboeking, creditnota of ERP-aflettering mag goedkeuren.
- Een proefbatch. Neem minstens 50 echte, geanonimiseerde betalingen mee met één-op-éénmatches, meerdere facturen, deelbetalingen, een overbetaling, een onbekende betaling, bankkosten, een valuta-afwijking en een dubbele webhook.
De route voor CAMT.053-bankafschriften met uitzonderingen en vrijgave is een goede invoerlaag voor bankregels. Cash application begint pas daarna: je moet de bankregel verbinden met remittance, openstaande posten en een goedgekeurde uitkomst.
Eerst het ontwerpbesluit: voorstel of directe aflettering?
Maak vóór de eerste API-call één harde grens. Een agent mag bronnen lezen, tekst structureren, kandidaten rangschikken en een voorstel maken. De agent mag niet op basis van een taalmodeluitkomst zelfstandig een betaling afboeken, een korting toekennen of een overbetaling terugstorten.
Dat is geen theoretische voorzichtigheid. Een betaling kan bij twee facturen passen, een klant kan een oude factuur noemen die al is gecrediteerd en een remittance-pdf kan tekst bevatten die de agent probeert te laten afwijken van je opdracht. OWASP adviseert voor financiële of onomkeerbare acties expliciete goedkeuring, een actievoorbeeld, een afzonderlijke uitvoeringscontrole, een vervaltijd en bescherming tegen herhaling. Die controles staan uitgewerkt in de AI Agent Security Cheat Sheet.
Ik kies daarom drie statussen die niet in elkaar mogen schuiven:
matched: er is een unieke kandidaat gevonden volgens een vaste regel;approved: een bevoegde medewerker heeft het exacte voorstel, bedrag en bewijs vrijgegeven;posted: het ERP heeft de mutatie uitgevoerd en de read-back klopt.
Een betaling kan dus wel matched zijn zonder approved. Dat kleine onderscheid voorkomt dat een hoge modelscore zich voordoet als een boekhoudkundige handtekening.
Concrete stappen: van rommelige remittance naar ERP-besluit
1. Leg vast welk systeem welk feit bezit
Maak een bronmatrix per veld. Voor een betaling is de PSP of bank de bron van amount, currency, payment_id, value_date en status. Voor een openstaande post is het ERP de bron van invoice_number, customer_id, open_amount, due_date en ledger_state. Voor de bedoeling is de remittance de bron van paid_for, discount_claimed, dispute_amount en customer_note.
Leg ook vast wat je doet als bronnen elkaar tegenspreken. Een klantmail met “factuur 1042 betaald” wint niet van een PSP-betaling die naar een andere klantreferentie wijst. Een bankregel met €2.000 wint niet van een remittance waarin €2.420 staat. De uitkomst is dan een voorstel of uitzondering, nooit een stille correctie.
Gebruik per gebeurtenis een samengestelde sleutel. Een praktische vorm is:
bron:payment_id:doelactie
Voorbeelden zijn mollie:tr_abc123:erp-payment, stripe:pi_456:ar-application en bank:e2e_789:remittance-match. Voeg voor een deelbetaling de factuur en de beslisversie toe. Een nieuwe sleutel betekent een nieuwe zakelijke handeling. Een nieuwe bezorging van hetzelfde bericht betekent dat je eerst moet controleren of de handeling al bestaat.
Dit sluit aan op de ledger- en herstelgrens voor financiële gebeurtenissen: een event-ID is een bezorging, geen bewijs dat je een nieuwe betaling mag boeken.
2. Neem bank- en PSP-bronnen opnieuw op, niet blind over
Gebruik een webhook als trigger, niet als geldbewijs. Mollie stuurt bij een webhook het ID van het gewijzigde object. Je haalt daarna de actuele betaling, refund of chargeback op en beslist pas dan wat je opslaat. Mollie documenteert ook dat de webhook opnieuw kan komen en dat je binnen 15 seconden 200 OK moet teruggeven. De actuele webhookdocumentatie beschrijft ook de retryreeks tot 26 uur.
Bij Stripe controleer je de handtekening van het webhookbericht en registreer je het event-ID. Luister voor een betaling bijvoorbeeld naar payment_intent.succeeded, maar haal de actuele PaymentIntent en eventuele charge opnieuw op voordat je een voorstel maakt. Stripe waarschuwt dat gebeurtenissen asynchroon zijn en dat dezelfde endpoint meerdere gebeurtenistypen kan ontvangen. De webhookhandleiding noemt ook disputes en terugkerende betalingen als voorbeelden van asynchrone gebeurtenissen.
Voor een PSP-payout match je de bankregel eerst aan de payout, niet rechtstreeks aan losse orders. Een Mollie Settlement Report bevat payments, refunds, chargebacks en verschillende soorten kosten binnen één settlement. De documentatie biedt naast CSV, PDF, MT940 en CODA ook een Settlements API met geaggregeerde en gedetailleerde transactiedata. Dat rapport is de juiste onderlaag voor een netto payout-reconciliatie.
Bewaar de ruwe payload, ontvangsttijd, hash, API-versie en bronstatus. Maak daarna een normale recordlaag. Bij een herhaalde payload krijg je een ontvangstlog, geen tweede betaling.
3. Lees remittance met vaste velden en een begrensde AI-laag
Laat een parser eerst deterministisch zoeken naar herkenbare patronen: factuurnummers, klantnummers, gestructureerde betalingskenmerken, EndToEndId, orderreferenties, IBAN, bedragen en valuta. Daarna mag een taalmodel vrije tekst, pdf-layout en afkortingen naar een vast schema vertalen.
Het model geeft bijvoorbeeld dit voorstel terug:
{
"customer_reference": "K-1048",
"invoice_references": ["INV-2026-1042", "INV-2026-1050", "INV-2026-1066"],
"claimed_amounts": [1210.00, 2000.00, 890.00],
"currency": "EUR",
"received_amount": 4100.00,
"applied_amount": 4100.00,
"unallocated_amount": 0.00,
"dispute_amount": 420.00,
"evidence": ["pagina 1, regel 4", "pagina 1, regel 7"]
}
Valideer dat antwoord met een schema. Controleer dat bedragen optellen tot het ontvangen bedrag, dat elk factuurnummer in het ERP bestaat, dat de valuta gelijk is en dat het document niet ouder is dan de toegestane termijn. Tekst uit een remittance is data, geen instructie. Zet hem dus duidelijk gescheiden van systeeminstructies in de modelcontext en laat de agent geen vrije API-call samenstellen.
Meet de uitleeslaag apart van de matchlaag. NIST adviseert om AI-risico’s, fouten, incidenten, prestatiegrenzen en correcties te documenteren en na ingebruikname opnieuw te meten. De Measure-richtlijn van NIST noemt expliciet foutverdelingen, testsets, acceptabele grenzen en monitoring na livegang. Houd daarom een testset bij met werkelijk voorkomende lay-outs en noteer false positives en false negatives per bron.
4. Match op zakelijke sleutels, daarna pas op bedrag en naam
Gebruik een vaste beslisvolgorde. Een modelscore mag de volgorde ondersteunen, maar niet vervangen.
- Exacte unieke sleutel. Match op EndToEndId, gestructureerd betalingskenmerk, PSP-payment-ID of een unieke factuurreferentie. Er moet precies één passende openstaande post zijn.
- Unieke sleutel plus exact bedrag. Controleer klant, valuta en openstaand bedrag. Een factuurnummer zonder juiste klantcontext blijft een voorstel als het nummer dubbel voorkomt.
- Klant plus bedrag plus beperkte datumruimte. Gebruik rekeninghouder, IBAN, bedrag en bijvoorbeeld zeven dagen rond de factuurdatum. Dit is alleen automatisch als de regel aantoonbaar uniek is.
- Remittance met meerdere facturen. Verdeel het betaalbedrag per genoemde factuur en controleer de optelsom. De totale betaling mag niet de enige matchregel zijn.
- Naam, omschrijving of semantische gelijkenis. Gebruik dit om kandidaten te zoeken. Gebruik het nooit als zelfstandig vrijgavebewijs.
Geef iedere kandidaat een reden mee, zoals e2e_exact_1_candidate, invoice_exact_customer_exact of remittance_partial_claim. Gebruik geen abstracte score zonder uitleg. Een reviewer moet kunnen zien welke sleutel, welk bedrag en welk bronfragment tot het voorstel leidden.
5. Behandel deelbetalingen en overbetalingen als financiële besluiten
Een deelbetaling is geen fout die je met een ruime tolerantie wegpoetst. Is de factuur €2.420 en komt €2.000 binnen, dan kun je €2.000 afletteren en €420 open laten. Dat is alleen verantwoord wanneer je policy toestaat dat een factuur gedeeltelijk wordt toegepast en je de reden bewaart. Een geclaimde korting, disputebedrag of afboeking vraagt een aparte beslissing.
Een overbetaling werkt anders. Is €2.500 ontvangen op een factuur van €2.420, dan sluit je de factuur voor €2.420 en zet je €80 als klanttegoed, vooruitbetaling of uitzondering op basis van je ERP-beleid. Je betaalt het niet automatisch terug. De bestemming van €80 is een zakelijke keuze met gevolgen voor cash, klantrelatie en soms fraudeonderzoek.
Dynamics 365 Finance laat goed zien waarom de bedragen apart moeten blijven: bij een betaling lager dan de factuur blijft het verschil op de factuur open, bij een hogere betaling blijft het verschil als openstaand betalingssaldo bestaan. De actuele settlementdocumentatie beschrijft ook dat write-offs, kortingen, koersverschillen en btw-correcties afzonderlijke transacties kunnen opleveren.
Werk met expliciete reden-codes:
partial_payment: lager bedrag dan de gekozen openstaande post;overpayment: hoger bedrag dan de gekozen post;discount_claimed: klant claimt korting die nog niet is goedgekeurd;dispute: een deel van de factuur wordt inhoudelijk betwist;multiple_candidates: meer dan één openstaande post past;unknown_payment: geen betrouwbare relatie gevonden;currency_mismatch: bedrag en valuta kunnen niet veilig worden vergeleken.
6. Maak een bewijsrecord in staging
De stagingkaart is het hart van de workflow. Sla minimaal dit op:
| Veld | Voorbeeld | Functie |
|---|---|---|
case_id | AR-2026-00184 | Interne zaakidentiteit |
source_type | mollie_settlement | Bronsoort |
source_id | stl_20261009_01 | Externe sleutel |
payment_id | tr_87abc | Geldobject |
customer_id | K-1048 | Zakelijke relatie |
invoice_id | INV-2026-1050 | Gekozen openstaande post |
proposed_amount | 2000,00 EUR | Bedrag van het voorstel |
remaining_amount | 420,00 EUR | Wat open blijft |
reason_code | partial_payment | Waarom geen volledige sluiting plaatsvindt |
evidence_refs | pdf hash, regel 7 | Bronbewijs |
rule_id | remittance_invoice_amount | Gebruikte matchregel |
confidence | 0,96 | Signaal, geen vrijgave |
status | awaiting_approval | Processtatus |
approved_by | rol of gebruiker | Beslisser |
approval_expires_at | tijdstip | Voorkomt oude goedkeuring |
erp_write_id | Exact- of AFAS-ID | Doelresultaat |
readback_hash | hash van relevante velden | Bewijs dat het doel klopt |
Maak de kaart onveranderlijk zodra iemand hem goedkeurt. Een correctie krijgt een nieuwe gebeurtenis die terugwijst naar de oorspronkelijke kaart. Zo blijft zichtbaar wat de agent voorstelde, wat de medewerker veranderde en wat uiteindelijk in het ERP is geschreven.
7. Laat een mens vrijgeven en schrijf beperkt naar het ERP
Toon in het reviewscherm de originele bankregel of remittance naast de kandidaat, de openstaande posten, de berekening en de reden-code. De knop mag niet alleen “goedkeuren” heten. Laat de medewerker kiezen tussen bijvoorbeeld:
- volledig afletteren;
- gedeeltelijk afletteren met resterend saldo;
- klanttegoed of overbetaling parkeren;
- dispute openen;
- korting of afboeking aanvragen;
- terug naar de queue met ontbrekend bewijs;
- afwijzen als onbekende betaling.
Gebruik daarna een aparte uitvoerder met een smalle API-rechtenset. Bij AFAS Profit werk je met een eigen App connector, OAuth en alleen de benodigde Get- en UpdateConnectoren. AFAS noemt Client credentials geschikt voor machine-to-machinekoppelingen, vermeldt dat access-tokens één uur geldig zijn en vraagt bestaande classic-tokenkoppelingen vóór 31 augustus 2027 naar OAuth om te zetten. De actuele AFAS-handleiding beschrijft die flows en het koppelen van Get- en UpdateConnectoren.
Bij Exact Online leg je dezelfde grens aan: lees eerst klanten en openstaande verkoopfacturen, schrijf daarna alleen het vooraf bepaalde betalings- of afletterobject en lees het resultaat terug. Gebruik geen brede update_anything-connector. Bij Dynamics 365 Finance bestaan handmatige, automatische en gecombineerde settlementmethoden, maar je eigen stagingbesluit moet nog steeds bepalen wanneer een betaling aan een factuur wordt gekoppeld.
Na de write controleer je minimaal ERP-ID, klant, factuur, toegewezen bedrag, valuta, openstaand saldo, boekingsdatum en status. Een HTTP 200 betekent dat de API je bericht ontving. Het betekent niet dat de juiste post is gesloten.
Na deze zeven stappen heb je dus geen chatbot die “betaalde facturen zoekt”. Je hebt een AR-proces met bronbezit, zakelijke sleutels, staging, een reviewbesluit en een teruggelezen ERP-resultaat. Dat is ook de grens tussen een demonstratie en een proces dat je aan je accountant kunt uitleggen.
Valkuilen die je cijfers stilletjes vervuilen
Je gebruikt één ruime tolerantie voor alles
Een regel als “match bedragen binnen €10” verbergt bankkosten, deelbetalingen, verkeerde facturen en mogelijke fraude. Geef een toegestane tolerantie alleen aan een herkenbaar geval, zoals een vast bankkostenpatroon. Leg de reden-code vast en stuur alles buiten dat patroon naar de queue.
Je verwart remittance met betalingsbewijs
Een pdf kan zeggen dat factuur 1050 is betaald terwijl de bank een ander bedrag toont. De remittance vertelt de bedoeling van de klant. De bank of PSP vertelt welke geldactie werkelijk is uitgevoerd. Een webshopstatus is om dezelfde reden nog geen betalingsbewijs. Laat beide bronnen naast elkaar bestaan.
Je laat het model zelf de tolerantie bepalen
Een taalmodel mag een factuurnummer herkennen en een kandidaat uitleggen. Het mag niet beslissen dat €420 “waarschijnlijk een korting” is. Toleranties, afboekingen, disputen en terugbetalingen horen in beleidscode en menselijke bevoegdheid.
Je boekt de payout als omzet
Een payout is een bundel van betalingen, refunds en kosten. Bij Mollie kun je de settlement uitsplitsen in revenue, deductions en costs. Bij Stripe moet je de payout reconciliation en balance transactions gebruiken. Boek de bankregel eerst op de clearingrekening en laat de onderliggende componenten de omzet, fee, refund of chargeback verklaren.
Je maakt een aparte sleutel bij een time-out
Na een time-out weet je niet of de ERP-write of PSP-actie is uitgevoerd. Een nieuwe sleutel kan dan een tweede financiële handeling maken. Controleer eerst je ledger, het externe object en het ERP-doel. Hergebruik dezelfde sleutel als aantoonbaar niets is uitgevoerd. Blijft de toestand onbekend, dan gaat de zaak naar de queue.
Je zet de goedkeuring in e-mail
E-mail of Slack kan een melding zijn, maar niet het formele goedkeuringsrecord. Bind de vrijgave aan de exacte klant, factuur, bedragen, valuta, doelactie, gebruiker, tijdstip, vervaldatum en policyversie. Zonder die binding kan iemand een oude goedkeuring op een nieuw voorstel toepassen.
Je vergeet dat remittance externe input is
Een pdf, e-mail of vrije betalingsomschrijving is onbetrouwbare invoer voor een agent. Behandel tekst als data, beperk de tools van de agent tot lezen en structureren, valideer uitvoer met een schema en laat de uitvoerder opnieuw autoriseren. Log geen volledige betaalgegevens of geheimen in modelcontext of uitvoerlogs.
Beslis-kader: kant-en-klaar, workflowlaag of maatwerk?
Er is geen eerlijke keuze zonder je uitzonderingen te tellen. Een native ERP-mogelijkheid is sterk wanneer één administratie en één betrouwbare referentie de norm zijn. Een workflowlaag is geschikt als je meerdere bronnen wilt verbinden maar de businessregels overzichtelijk blijven. Maatwerk wordt logisch zodra de uitzonderingsqueue het echte product is.
| Aanpak | Actuele tool of product | Indicatie van licentiekosten, gecontroleerd 10 okt 2026 | Past als | Breekpunt |
|---|---|---|---|---|
| Native AR of ERP-settlement | Exact Online, AFAS Profit, Dynamics 365 Finance | Bestaande ERP-licentie, aparte module of connector | Eén ERP, vaste referenties, weinig uitzonderingen | Remittance-pdf’s, meerdere PSP’s, uitzonderingen buiten het ERP |
| Workflowlaag met staging | n8n Cloud Starter of Make Core | n8n: €20 per maand bij jaarfacturering, 2.500 uitvoeringen en onbeperkte stappen; Make: $9 per maand voor 10.000 credits | Eén tot enkele bronnen, technische beheerder, duidelijke queue | Duurzame audit, complexe ERP-transacties, veel retries en veel uitzonderingen |
| Eigen cash-applicationservice | Eigen API, database, parser en reviewscherm | Geen zinvolle pakketprijs; bouw, beheer, hosting en modelkosten apart | Meerdere entiteiten, bank en PSP door elkaar, remittance als kernproces, hoge foutkosten | Te weinig volume of geen eigenaar voor beleid en beheer |
Mijn beslisregel is eenvoudig. Heb je één PSP, één ERP, een bijna altijd unieke betalingsreferentie en minder dan een beheersbare werkdag aan uitzonderingen per week, begin met kant-en-klaar. Heb je een duurzame queue nodig, meerdere bronnen en eigen matchregels, kies een workflowlaag met een aparte database. Heb je meerdere entiteiten, afwijkende remittancevormen, veel deelbetalingen of een ERP met strenge vrijgave, bouw dan de staging en uitvoeringsgrens als eigen service.
Gebruik n8n niet omdat het goedkoop lijkt. De cloud Starter-prijs is een actuele instapprijs, geen volledige kostprijs voor een financiële keten. Je hebt nog opslag, monitoring, geheimenbeheer, modelkosten, back-up en iemand nodig die de uitzonderingen opvolgt. Make rekent per moduleactie in credits; een lange remittanceflow met meerdere zoekacties, documentstappen en retries verbruikt meer dan het aantal binnenkomende betalingen doet vermoeden.
Hoeveel betaalbronnen en ERP-administraties moeten samenkomen?
De keuzehulp verandert niets aan het kader. Hij maakt alleen zichtbaar welke keuze je al kunt maken op basis van broncomplexiteit, sleutelkwaliteit, foutkosten en beheer. Als je geen eigenaar voor de queue kunt benoemen, is geen van de drie routes productierijp.
Uitgewerkt voorbeeld: drie facturen, één deelbetaling en één overbetaling
Neem dit rekenvoorbeeld, geen klantcase. Een distributeur gebruikt Mollie en een bankrekening voor losse B2B-betalingen. Exact Online bevat de openstaande posten. De klant stuurt een remittance-pdf met:
INV-2026-1042: €1.210,00, volledig;INV-2026-1050: €2.000,00 betaald op een openstaande post van €2.420,00, met een geschil over €420,00;INV-2026-1066: €890,00, volledig.
De bankregel is €4.100,00. De optelsom van de remittance is ook €4.100,00. De parser herkent de drie factuurnummers, de bedragen en de betwiste €420,00. Het ERP bevestigt dat klant K-1048 deze drie posten open heeft. Het systeem maakt daarom drie kandidaatregels, maar slechts twee volledige matches:
| Factuur | Openstaand | Ontvangen | Voorstel | Uitkomst |
|---|---|---|---|---|
| INV-2026-1042 | €1.210,00 | €1.210,00 | Volledig afletteren | Na vrijgave sluiten |
| INV-2026-1050 | €2.420,00 | €2.000,00 | Gedeeltelijk afletteren | €420,00 open laten met dispute |
| INV-2026-1066 | €890,00 | €890,00 | Volledig afletteren | Na vrijgave sluiten |
| Totaal | €4.520,00 | €4.100,00 | €4.100,00 toepassen | €420,00 blijft open |
De agent mag hier niets afboeken. Hij zet de kaart op awaiting_approval, toont de pdf-regels, de bankregel, de openstaande posten en de berekening. De debiteurenmedewerker bevestigt dat €420,00 een inhoudelijk geschil is en kiest “gedeeltelijk afletteren, dispute openen”. De uitvoerder schrijft alleen de drie toegewezen bedragen naar Exact Online. Daarna leest hij de drie saldi terug: €0,00, €420,00 en €0,00. De kaart wordt posted en de dispute krijgt een eigen deadline.
Een tweede betaling van dezelfde klant komt binnen via Mollie voor €1.500,00 met INV-2026-1077 als referentie. De factuur staat open voor €1.420,00. Het voorstel is dus €1.420,00 afletteren en €80,00 als overbetaling naar de queue sturen. De medewerker kiest klanttegoed. De PSP-payout wordt pas vrijgegeven nadat de settlementregel de betaling en de fee bevat. Zo raakt de €80,00 niet zoek in omzet en wordt hij ook niet automatisch teruggestort.
De bewijsrecords laten daarna zien:
- welke bank- en PSP-bronnen zijn gebruikt;
- welke facturen de remittance noemde;
- welke matchregels exact waren;
- waarom €420,00 een geschil werd;
- wie de gedeeltelijke toepassing en het klanttegoed goedkeurde;
- welk ERP-object is geschreven en wat de read-back bevestigde.
Dat is de hele waarde van staging. De medewerker beoordeelt geen zwarte doos, maar een voorgestelde financiële handeling met bron, berekening en begrensde vervolgstap.
Vergelijking: welke laag doet welk werk?
| Laag | Leest | Beslist | Schrijft | Controleert |
|---|---|---|---|---|
| Bank of PSP | Geld-ID, bedrag, valuta, status, payout | Geen AR-besluit | Geldbeweging bij provider | Webhook, settlement en payoutstatus |
| Remittance-parser | Factuurnummers, klantreferenties, bedragen, vrije tekst | Kandidaten en reden | Geen ERP-mutatie | Schema, bronhash en veldherkomst |
| Match- en beleidslaag | Open posten, kandidaten, tolerantieregels | Match, deelbetaling, overbetaling of uitzondering | Stagingrecord | Uniekheid, somcontrole en policyversie |
| Reviewer | Bronbewijs en voorstel | Goedkeuren, aanpassen, terugsturen of escaleren | Goedkeuringsrecord | Functiescheiding en vervaldatum |
| ERP-uitvoerder | Goedgekeurd stagingrecord | Alleen technische validatie | Beperkte aflettering of payment-application | Rechten, idempotentie en read-back |
Maak deze scheiding zichtbaar in rollen en logs. Dezelfde agent die vrije remittance leest, kandidaten rangschikt en zonder tweede controle een financiële write uitvoert, heeft te veel macht voor dit proces.
Slot: snelheid is pas winst als het saldo uitlegbaar blijft
Een goede cash-applicationflow probeert niet iedere betaling automatisch groen te maken. Hij maakt de gewone matches snel, houdt deelbetalingen en overbetalingen zichtbaar en zorgt dat een medewerker precies ziet wat er nog besloten moet worden. De waarde zit in de smalle grens tussen een voorstel en een definitieve ERP-mutatie.
Als een betaling morgen wordt betwist, een webhook drie keer binnenkomt of een PSP-payout twee fees bevat, moet je nog steeds kunnen terugwijzen naar dezelfde bankregel, remittance, openstaande post en goedkeuring. Dan automatiseer je geen geruststellend vinkje, maar een financiële werkelijkheid die standhoudt zodra iemand er vragen over stelt.
Veelgestelde vragen
Je AR-flow onder controle
Ik denk mee over de regels achter remittance, deelbetalingen en vrijgave, ontwerp de reviewflow en realiseer de koppeling end-to-end in jouw bank-, PSP- en ERP-stack.
Dit artikel is geproduceerd samen met het Agent Team. Meer over de redactie.
