Date
Category
Inzichten

Op papier is three-way matching eenvoudig. De bestelbon zegt 240 liter siroop aan een bepaalde prijs. De ontvangstbon zegt dat er 240 liter geleverd is. De factuur zegt 240 liter aan diezelfde prijs. Drie documenten zijn het eens, dus je betaalt.
Dan komt de echte factuur binnen: "48 × Siroop 5 L bidon". Dezelfde goederen. Hetzelfde bedrag. Geen enkel veld dat overeenkomt met de bestelling. Een rigide matcher markeert het als afwijking, en iemand van aankoop opent drie documenten om het rekenwerk uit het hoofd te doen. Vermenigvuldig dat met een paar honderd lijnen per maand.
Het voorbije jaar bouwden we bestelbonmatching voor bedrijven in groothandel, staal, voedingsproductie, horeca en zorg. Elke controle erin begon met een echte factuur waar een eenvoudigere controle de mist in ging. Dit hebben die facturen ons geleerd.
Niemand is het eens over de eenheid
De meest voorkomende reden waarom een factuurlijn niet op haar bestellijn lijkt, is dat beide documenten in een andere eenheid tellen.
Verpakkingen op de factuur, stuks op de bestelling. "5 × handzeep x12" tegenover een bestelling van 60 stuks.
Verpakkingen op de bestelling, stuks op de factuur. 12 handschoenen aan €2,00 per stuk tegenover één "12-pack" besteld aan €24,00.
De verpakkingsgrootte staat alleen in de omschrijving. De siroop hierboven: de eenheid is op beide documenten liter, maar het ene telt bidons van 5 liter.
Ton tegenover kilo. €475 per ton op de factuur, €0,475 per kg op de bestelling.
Per plaat tegenover per kg. Staal besteld op gewicht en gefactureerd per plaat. Het gedrukte nettogewicht van elke plaat slaat de brug.
Een verloren voorvoegsel. Beide documenten zeggen kg, maar de ene prijs is €426,10 en de andere €0,4261.
Van de ongeveer 1.300 facturen die Cashfeed de voorbije 90 dagen aan een bestelling koppelde, had 13% van de gekoppelde lijnen zo'n omrekening nodig. Eén op de zes facturen had er minstens één.
De valkuil is te gretig omrekenen. Rozijnen aan €52,85 per verpakking tegenover €3,53 per stuk geeft een verhouding van 14,97. Dat is geen verpakkingsgrootte. De hoeveelheden beslissen: 360 stuks besteld, 24 verpakkingen gefactureerd, dus een verpakking bevat er 15. En sommige gevallen moet je weigeren, ook als het geld klopt: 1 kg aan €160 tegenover 20 kg aan €8 is geen "verpakking van 20". Het is een ander product, of een prijsprobleem, en iemand moet ernaar kijken.
Een omrekening wordt dus alleen aanvaard als het geld ze bevestigt. En een omrekening verandert nooit het bedrag: of de factuur boven of onder de bestelling zit, wordt apart gecontroleerd, op de bedragen.
Eén bestellijn is niet één factuurlijn
De tweede verrassing is hoe vaak de lijnen niet één op één overeenkomen.
Meerdere factuurlijnen op één bestellijn. Gesplitste facturatie (4 + 4 tegenover 8), of een aanrekening gevolgd door een creditering voor het ongebruikte deel. Dat gebeurde bij 17% van de facturen met een bestelling.
Een gemengde partij. 17 staalplaten, elk aan een licht andere prijs per kg, tegenover één bestellijn aan een gemiddelde prijs. Plaat per plaat beoordeeld is elke lijn fout. Als groep beoordeeld komen ze uit op 2.506 van de 2.500 bestelde kg, en exact op het bestelde bedrag.
Eén factuurlijn over meerdere bestellijnen. 46,2 meter hout op één lijn, tegenover bestellijnen van 5,4, 33, 5,4 en 2,4 meter. Of maten die op de lijn zelf staan: "6'6: 5 | 6'9: 5", tegenover één bestellijn per maat.
Dat laatste is zeldzaam, ongeveer 1% van de facturen. Maar als het gebeurt, zit een matcher die alleen lijn per lijn denkt bij elke lijn fout. We splitsen een lijn alleen als de openstaande bestellijnen exact optellen. 850 eenheden tegenover openstaande lijnen van 1.350 en 650 laten we aan een mens over.
Een deellevering is geen fout
Een raambestelling die in delen afgeroepen wordt, levert elke keer opnieuw een factuur op die "onder" de bestelling zit. In onze gegevens bevatte 12% van de facturen met een bestelling een deellevering.
Een matcher die dat als afwijking behandelt, stuurt aankoop een alarm voor de gewone gang van zaken. Erger nog: mensen leren het alarm te negeren, ook die keer dat het er wel toe doet.
Een deellevering krijgt dus een eigen label, en de rest van de bestellijn blijft open voor de volgende factuur. Het omgekeerde is net zo belangrijk: een bestellijn die volledig gefactureerd is, moet afvallen. Anders wordt de volgende bestelling voor hetzelfde artikel aan de oude gekoppeld.
Het bestelbonnummer staat zelden waar je het verwacht
Voor je lijnen kunt matchen, heb je de juiste bestelling nodig. Leveranciers zijn creatief:
"PO 48 217" met spaties, of "PO26011637-Jan Peeters" met de naam van de aankoper eraan vastgeplakt.
Het bestelbonnummer alleen in de eerste woorden van een lijnomschrijving.
Een referentie onder "Extern nr." op facturen uit een ERP, of onder een kale "Referentie".
Je eigen btw-nummer in het veld "Uw referentie". We vonden tientallen facturen, bij meer dan tien bedrijven, waar dat nummer anders als bestelbonnummer gelezen zou zijn.
Het verkoopordernummer van de leverancier zelf in plaats van het jouwe.
Als er geen bruikbaar bestelbonnummer op staat, vallen we terug op de openstaande bestellingen van de leverancier, maar alleen als omschrijving, hoeveelheid en prijs allemaal kloppen. Passen twee openstaande bestellingen even goed, dan wordt er niets gekoppeld. Gokken tussen twee bestellingen is precies hoe goederen twee keer betaald worden.
Prijzen hebben een marge nodig, en een reden
Prijzen op een factuur komen zelden tot op de cent overeen met de bestelling. Een afrondingsverschil, een kortingspercentage op de bestellijn, een prijslijst die veranderde tussen bestelling en levering. Een bruikbare matcher past eerst de korting van de bestelling toe voor hij vergelijkt, laat een kleine marge toe die je zelf instelt, en verklaart het verschil wanneer hij kan. Een factuur met prijzen inclusief btw tegenover een bestelling zonder btw is geen prijsdaling. Het is dezelfde prijs, en de match moet dat ook zeggen.
Het derde been: wat er echt geleverd is
Three-way matching voegt de ontvangstbon toe, en daarmee drie verschillende situaties die er allemaal uitzien als "hoeveelheid klopt niet":
De goederen zijn nog niet ontvangen.
Er is meer gefactureerd dan ontvangen.
De ontvangst werd al opgebruikt door een eerdere factuur.
Wie de laatste met de eerste verwart, vertelt een klant dat goederen waarvoor al getekend werd nog altijd ontbreken. Goederen die na facturatie teruggestuurd worden, zijn een vierde geval: ze blijven gemarkeerd tot de creditnota binnenkomt.
Wat we leerden tijdens het bouwen
Een gemiste match is veel minder schadelijk dan een foute match. Een gemiste match kost iemand een minuut. Een foute sluit een bestellijn af die nog open staat, of houdt er een voor altijd open. Bij twijfel laat de matcher het aan een mens over.
Laat AI lezen, laat code beslissen. Het model leest de factuur en stelt voor bij welke bestellijn elke lijn hoort. Code toetst elk voorstel aan de bestelling, de hoeveelheden en het geld, en berekent het oordeel. Een antwoord dat verwijst naar een bestelling die de factuur nergens vermeldt, wordt weggegooid.
Een afwijking moet zeggen waarom. Van de lijnen in onze gegevens die niet matchten, was bijna drie op de tien helemaal geen probleem: deelleveringen, goederen die nog niet ontvangen zijn, of een lagere prijs dan besteld. Elk krijgt een eigen label, zodat de echte afwijkingen opvallen.
Achter elke controle zit een echte factuur. Voor we de matcher aanpassen, spelen we de wijziging opnieuw af op echte matches, om zeker te zijn dat ze niets breekt wat al werkte. Facturen zijn eindeloos inventief, en de enige verdediging is de voorbeelden bijhouden.
Waar Cashfeed past
Cashfeed synchroniseert je bestelbonnen uit Exact Online, Business Central, Odoo of AFAS, of je maakt ze aan in Cashfeed. Ontvangstbonnen komen mee uit Exact Online, Business Central en Odoo. Elke factuurlijn wordt gekoppeld aan haar bestellijn, omgerekend waar de eenheden verschillen, en beoordeeld met een reden die je kunt lezen.
Je beslist per koppeling wat een onvolledige match doet: de boeking tegenhouden tot iemand kijkt, of boeken en het verschil tonen. Hoe dan ook krijgt aankoop alleen de facturen die echt hun aandacht nodig hebben.
“Het moeilijke aan matching is niet de bestelling vinden. Het is weten wanneer twee documenten die er verschillend uitzien hetzelfde zeggen, en wanneer twee die er hetzelfde uitzien dat niet doen.”

Jonathan Callewaert
,
CTO



