FlowParse
E-facturatie 10 augustus 2026 14 min lezen

Pdf-factuur naar data

Een gestructureerde factuur komt binnen als gegevens. Een pdf komt binnen als bestand. Deze pagina gaat over het gieten van die tweede stroom in precies dezelfde vorm — één tabel per maand, dezelfde kolommen — zodat je niet met twee administraties eindigt.

FlowParse
flowparse.io

Twee vormen, één tabel

Het probleem bij een gemengde postbus is niet dat er twee soorten facturen binnenkomen. Het probleem is dat ze in twee verschillende vormen in je administratie belanden.

De gestructureerde stroom komt binnen als velden en gaat rechtstreeks je pakket in. De pdf-stroom komt binnen als bestanden en gaat via een mens je pakket in — met andere leveranciersnamen, een andere codering en een ander moment.

Wat je wil is dat de herkomst na binnenkomst niets meer uitmaakt. Eén set kolommen, één leverancierslijst, één tabel per maand waarin niet meer te zien is welke factuur over het netwerk kwam en welke uit een mailbijlage.

Deze pagina gaat over de uitvoerkant van dat verhaal: welke vorm je nodig hebt, hoe je honderd bestanden in één handeling verwerkt, en wat er misgaat bij het importeren. Over hóe een pdf gelezen wordt gaat UBL-veldherkenning; over losse facturen omzetten gaat factuurgegevens extraheren.

Welke vorm je nodig hebt

Eerst een keuze die het meeste bepaalt: één rij per factuur, of één rij per factuurregel.

VormWaarvoorNadeel
Eén rij per factuurBoeken, btw, betaallijstGeen zicht op wat er gekocht is
Eén rij per regelKosten verdelen, controle op prijzenMeer rijen dan de meeste pakketten willen
Allebei, twee tabbladenBoeken én analyserenTwee bestanden om bij te houden

De meeste administraties beginnen bij de eerste rij en komen binnen een paar maanden bij de derde uit. Zodra iemand vraagt waarom de kosten van één leverancier zijn gestegen, is het factuurtotaal niet genoeg meer en moet je bij de regels zijn.

Belangrijk: kies de vorm één keer en houd hem vast. Een tabel waarvan de vorm per maand verschilt, is niet te vergelijken met de maand ervoor — en vergelijken is uiteindelijk waarom je hem maakt.

FlowParse
flowparse.io

Kolommen die aansluiten op de gestructureerde stroom

Het hele idee valt of staat hiermee: de kolommen uit de pdf-stroom moeten dezelfde zijn als wat er uit een e-factuur komt. Niet ongeveer dezelfde — dezelfde.

KolomLet op
LeverancierEén schrijfwijze per leverancier, ook als de factuur varieert
Btw-nummerHandiger dan de naam om op te koppelen
FactuurnummerZoals de leverancier hem schrijft, inclusief voorloopnullen
FactuurdatumEén notatie, bij voorkeur jaar-maand-dag
VervaldatumLeeg laten als er alleen een termijn staat
Bedrag excl.Per btw-tarief als er meerdere zijn
Btw-bedragIdem, en nul bij verlegging
Btw-tariefOvergenomen, niet omgerekend
TotaalDe optelling moet kloppen met de regels
ValutaAltijd meegeven, ook bij euro's
Bronbestand en paginaDe kolom die een controle van uren naar seconden brengt

De eerste rij is degene die in de praktijk het meeste stukgaat. Dezelfde leverancier heet op de ene factuur “Van Dijk Installaties B.V.”, op de andere “van dijk installaties” en in je pakket “Van Dijk”. Koppelen op btw-nummer lost dat op, koppelen op naam niet.

De laatste rij wordt het vaakst weggelaten en is bij een controle het meeste waard. Zonder die verwijzing is “waar komt dit vandaan” een zoektocht door mappen; met die verwijzing is het één klik.

FlowParse
flowparse.io

Een maand in één handeling

Losse facturen omzetten schaalt lineair mee met je volume: tien keer zoveel facturen is tien keer zoveel handelingen. Een stapel in één keer verwerken doet dat niet.

1 · Verzamel

Alle pdf's en scans van de periode in één map. Bijlagen uit mail erbij.

2 · Upload in één keer

Tot 100 bestanden. Scans gaan automatisch eerst door OCR.

3 · Laat rekenen

Regels tegen totaal, btw tegen percentage, per document.

4 · Kijk het gemarkeerde na

Niet alles — alleen de velden waar de zekerheid laag was.

5 · Exporteer één tabel

Vaste kolommen, met bronbestand en pagina per rij.

6 · Importeer

In je pakket, naast de facturen die al gestructureerd binnenkwamen.

Stap 4 is waar de tijdwinst werkelijk vandaan komt. Bij honderd facturen vraagt doorgaans een handvol velden aandacht; de rest hoeft niemand te lezen. Wie alles nakijkt, heeft overtikken vervangen door overlezen en is nauwelijks sneller.

FlowParse
flowparse.io

Excel, CSV, JSON of XML — en welke wanneer

Excel als er nog met de hand aan gewerkt wordt: filteren, een kolom toevoegen, iets aan iemand laten zien. Het is het formaat waarin een tabel ook een gesprek kan zijn.

CSV voor import in een boekhoudpakket. Saai, betrouwbaar, en het formaat dat vrijwel elk pakket accepteert zonder mopperen over versies.

JSON voor wie er een eigen verwerking achter hangt — een script, een koppeling, een tussenstap die iets met de regels doet voordat ze het pakket in gaan.

XML voor systemen die daarom vragen. Belangrijk en eerlijk: dat is een eigen schema en geen valide UBL. Het is bruikbaar voor import in systemen die je zelf inricht, en het is géén e-factuur die je over het netwerk kunt versturen.

Die laatste zin is het verschil dat op deze hele pagina het scherpst moet blijven. De inhoud komt overeen met wat een e-factuur draagt. Het bestand is iets anders, en een verzendbare e-factuur maak je met factuursoftware — zie e-facturatie en UBL verwerken.

FlowParse
flowparse.io

Importeren in je pakket zonder gedoe

Waar het bij importeren misgaat, is bijna nooit de inhoud. Het zijn steeds dezelfde vier dingen.

Datumnotatie — het pakket verwacht er één en krijgt een andere. Kies jaar-maand-dag en het probleem verdwijnt.

Decimaalteken — een komma waar een punt verwacht wordt, of andersom. Controleer dit bij de eerste import en daarna nooit meer.

Leveranciers die nog niet bestaan — het pakket weigert de rij of maakt een dubbele aan. Koppelen op btw-nummer voorkomt het tweede.

Kolomnamen die per export verschillen — daarom ligt de kolomvolgorde vast en verandert die niet tussen maanden.

Doe de eerste import met tien facturen in plaats van honderd. Als die tien er goed in staan, gaat de rest ook goed — en als er iets mis is, herstel je tien rijen in plaats van honderd.

Voor de gangbare pakketten bestaan er uitvoerformaten die de kolommen al goed zetten. Werk je met een pakket dat er niet tussen staat, dan is CSV met vaste kolommen vrijwel altijd de kortste weg.

Dubbele facturen, het voordeel van één tabel

Zolang facturen los verwerkt worden, is een dubbele bijna niet te zien: hij komt drie weken na de eerste binnen, bij een andere persoon, en er is niets dat de twee naast elkaar zet.

In één tabel staan ze wel naast elkaar. Sorteren op leverancier en factuurnummer laat ze in twee seconden zien, en dat is een controle die vóór het betalen kan in plaats van erna.

Let op wat dat wel en niet is. De tabel laat zien dat dezelfde combinatie twee keer voorkomt. Of dat een fout is, beoordeel jij — een leverancier kan een factuur legitiem opnieuw sturen na een creditering, en dan hoort hij er twee keer te staan.

Drie kolommen samen zijn hiervoor genoeg: leverancier, factuurnummer en bedrag. Wie een vierde wil, neemt de factuurdatum erbij, want de meest voorkomende echte dubbele is dezelfde factuur die twee keer is gemaild.

FlowParse
flowparse.io

Een archief van jaren

Er is één moment waarop dit meer oplevert dan de maandelijkse routine: als je een paar jaar pdf-facturen op een schijf hebt staan en er niets mee kunt.

Dat archief is nu alleen doorzoekbaar op bestandsnaam. Wat er niet in staat: hoeveel je bij die leverancier hebt besteed, wanneer de prijs is gestegen, of een bepaalde post elk jaar terugkomt.

In batches van honderd is zo’n archief om te zetten naar dezelfde tabel die je nu maandelijks maakt. Een paar uur werk voor een paar jaar geschiedenis, en daarna is de vraag “wat gaven we hier vorig jaar aan uit” een filter in plaats van een project.

Twee praktische tips. Begin bij het meest recente jaar, want dat gebruik je het vaakst en dan heb je meteen iets bruikbaars. En zet de jaartallen in aparte tabellen met dezelfde kolommen — samenvoegen kan altijd nog, splitsen wordt vervelend.

FlowParse
flowparse.io

Eén naam per leverancier, en waarom dat het halve werk is

Van alle dingen die een tabel onbruikbaar maken, staat dit bovenaan: dezelfde leverancier die er in drie schrijfwijzen in staat.

Het ontstaat vanzelf. De factuur van januari zegt “Van Dijk Installatietechniek B.V.”, die van maart zegt “Van Dijk Installatietechniek”, de creditnota zegt “VDI B.V.”, en in je pakket staat “Van Dijk”. Voor een mens is dat allemaal dezelfde partij. Voor een draaitabel zijn het er vier.

Het gevolg merk je pas bij de eerste vraag die je aan de gegevens stelt. Uitgaven per leverancier kloppen niet, de grootste leverancier staat er niet bij, en niemand weet waarom de cijfers niet stroken met het gevoel.

De oplossing is één kolom: het btw-nummer. Dat is per leverancier één waarde, het staat op vrijwel elke factuur, en het verandert niet als iemand de handelsnaam anders opschrijft. Koppel daarop en het probleem verdwijnt.

Waar het btw-nummer ontbreekt — bij kleine bonnetjes bijvoorbeeld — houd je één schrijfwijze aan en corrigeer je de rest bij de export. Sorteer de tabel op leveranciersnaam en je ziet de varianten binnen tien seconden naast elkaar staan.

Doe dat elke maand, en niet één keer per jaar. Dertig seconden per maand tegenover een middag opruimen achteraf, en de tussenliggende rapportages waren in dat tweede geval allemaal een beetje mis.

Wanneer je de factuurregels echt nodig hebt

Voor boeken is het factuurtotaal genoeg. Er zijn vier momenten waarop dat plotseling niet meer zo is, en het loont om ze te herkennen voordat je een jaar aan tabellen hebt zonder regeldetail.

Als iemand vraagt waarom een kostenpost is gestegen. Het totaal zegt dát het gestegen is. Alleen de regels zeggen of er meer is afgenomen of dat de prijs omhoog is gegaan — twee heel verschillende gesprekken met een leverancier.

Als kosten over projecten of afdelingen verdeeld moeten worden. Eén factuur bevat vaak werk voor meerdere plekken. Zonder regels kun je hem alleen in zijn geheel ergens neerzetten, en dan klopt geen van beide bestemmingen.

Als er meerdere btw-tarieven op staan. Een totaal met één btw-bedrag verbergt dat er 9% en 21% door elkaar loopt, en dat is precies wat je voor de aangifte uit elkaar moet houden.

Als je prijzen wilt controleren tegen een afspraak. Een offerte gaat over eenheidsprijzen. Een factuurtotaal is daar niet mee te vergelijken zonder de regels ertussen.

Het praktische advies is daarom om de regels vanaf het begin mee te nemen, ook als je ze nu niet gebruikt. Ze staan in een tweede tabblad en kosten je niets; ze achteraf alsnog uit een jaar aan documenten halen kost wel iets.

Wat je nakijkt voordat je importeert

Vijf minuten per honderd facturen, en het voorkomt het soort fout dat je pas maanden later tegenkomt.

De gemarkeerde velden. Die staan er niet voor niets. Een vlekkerige scan of een bedrag over een stempel heen is precies waar een mens sneller is dan een machine.

Het aantal rijen. Honderd bestanden horen honderd facturen te geven, tenzij er een document met meerdere facturen tussen zat. Een afwijking is een vraag waard.

De optelling. Tel de totalen op en leg dat naast wat je verwachtte uit te geven. Grote afwijkingen komen bijna altijd van één factuur met een verkeerd gelezen bedrag of een dubbele.

De leveranciersnamen. Sorteer erop en kijk of dezelfde leverancier er twee keer in verschillende schrijfwijzen staat. Dat corrigeer je nu in dertig seconden en later niet meer.

FlowParse
flowparse.io

Vijf fouten

Andere kolommen dan de gestructureerde stroom

Dan heb je twee administraties gebouwd, en aan het eind van de maand een aansluiting die niemand wil maken.

De kolomvolgorde per maand aanpassen

Elke import breekt, elke draaitabel breekt, en niemand weet waarom.

Het bronbestand niet meegeven

De goedkoopste kolom die er is, en zonder die kolom kost elke controle later een zoektocht.

Koppelen op leveranciersnaam

Dezelfde leverancier komt in drie schrijfwijzen voorbij. Het btw-nummer is één waarde.

De eerste import meteen met honderd rijen doen

Tien rijen laten dezelfde fouten zien en kosten tien correcties in plaats van honderd.

Welk ritme werkt

Eén keer per maand, één keer per week of doorlopend — het maakt meer uit dan het lijkt, en het antwoord hangt vooral af van wanneer je de gegevens nodig hebt.

Maandelijks is het gebruikelijkst en het efficiëntst per factuur: één handeling, één controle, één import. Het nadeel is dat je gedurende de maand geen beeld hebt van wat er nog betaald moet worden, en dat is precies het beeld dat je in de laatste week nodig hebt.

Wekelijks kost nauwelijks meer tijd — de controle schaalt met het aantal facturen, niet met het aantal keren — en levert een beeld op dat nooit ouder is dan een week. Voor de meeste bedrijven met enige omvang is dit de betere keuze.

Doorlopend is zinvol zodra facturen ook goedgekeurd moeten worden voordat ze betaald worden. Dan is het wachten op een verwerkingsmoment een vertraging die je zelf hebt ingebouwd.

Wat bij elk ritme geldt: houd het vast. Een maand overslaan omdat het druk was, betekent een dubbele stapel de maand erna en een periode waarin niemand wist wat er openstond. Het ritme is belangrijker dan welk ritme je kiest.

Wat dit niet is

Geen valide UBL of SI-UBL

De XML-export gebruikt een eigen schema. Voor een factuur die je over het netwerk verstuurt, heb je factuursoftware of een toegangspunt nodig.

Geen vervanging van je bewaarplicht

De rijen zijn een bewerking; het originele document bewaar je zoals je dat altijd deed.

Geen goedkeuringsproces

Er wordt niets gerouteerd en niets geaccordeerd. De vraag of je moet betalen wordt hier niet beantwoord.

Geen oordeel over de btw-behandeling

Wat er op de factuur staat, komt terug zoals het er staat. Verlegging, vrijstelling en buitenlandse tarieven blijven jouw beoordeling.

Veelgestelde vragen

Neem de stapel van vorige maand

Niet één factuur — de hele stapel. Pas bij honderd tegelijk zie je of de tabel bruikbaar is voor jouw administratie.

Verder lezen