Loonstroken naar jaaroverzicht: DGA en kleine werkgever

Bouw uit 12 PDF-loonstroken een Excel-jaaroverzicht voor reconciliatie tegen de jaaropgaaf en input voor de loonjournaalpost — voor DGA's en kleine werkgevers.

Published
Updated
Reading Time
15 min
Topics:
Financial DocumentsPayrollNetherlandsExcelDGAjaaropgaaf reconciliationloonjournaalpost

Om uit 12 maandelijkse PDF-loonstroken een jaaroverzicht te bouwen, extraheer je per strook het bruto loon, de werknemerspremies, de loonheffing, de werkgeverslast en het netto loon, sorteer je de regels per werknemer en per maand, en sommeer je tot één jaartabel. Het resulterende fiscaal-loon-totaal moet kloppen met de jaaropgaaf van januari over het voorgaande jaar; verschillen wijzen op correctie-stroken, eindheffing of een verrekening uit een eerdere periode. Voor een DGA hoort daar nog een tweede toets bij: het bruto jaarloon moet de gebruikelijk-loon-norm halen — minimaal € 58.000 in 2026 (€ 56.000 in 2024 en 2025).

Voor één DGA zijn dat 12 stroken. Een kleine werkgever met acht werknemers heeft 96 stroken per jaar; bij vijf werknemers zestig. De werkstroom — extractie, consolidatie, jaarcontrole — is in beide gevallen hetzelfde, alleen het volume verschilt. Loonstroken naar jaaroverzicht is daarmee feitelijk één werkstroom met twee schaalniveaus.

Hetzelfde jaaroverzicht doet drie dingen tegelijk. Het laat zich reconciliëren tegen de jaaropgaaf van de Belastingdienst. Het levert maandaggregaten die als loonjournaalpost in de boekhouding worden geboekt. En het dient als bewijslast tijdens een audit of een accountant-controle, omdat elk getal terug te voeren is op de bronstrook waaruit het komt. Wie deze drie outputs uit één Excel haalt, doet het werk één keer in plaats van drie keer.

Veel bestaande hulp begint aan de andere kant van het probleem. Explainer-pagina's leggen uit wat op een loonstrook staat, template-sellers verkopen Excel-bestanden die loonstroken bouwen vanuit ruwe salarisdata, en payroll-pakketten verwerken hun eigen output in hun eigen rapportage. Wie 12 PDF-stroken van een externe partij heeft ontvangen — NMBRS, Loket, Visma, AFAS, Personeel & Salaris — en daar zelf een Excel-jaaroverzicht uit wil bouwen, valt buiten alle drie deze routes. Dezelfde extractie-aanpak die werkt voor bonnetjes en facturen naar Excel voor ZZP-boekhouding, werkt ook voor loonstroken — alleen het schema verschilt.

Welke velden staan op een Nederlandse loonstrook

Een Nederlandse loonstrook draagt drie groepen velden, en alle drie zijn nodig voor een bruikbaar jaaroverzicht.

Identificatie en periode. werknemer-naam, BSN, loontijdvak (of periode, afhankelijk van het bureau), werkgever-naam en loonheffingennummer. Deze vijf velden vormen de sleutel waarmee elke regel later eenduidig naar één werknemer en één maand is te herleiden. Zonder die sleutel breekt de consolidatie.

Werknemer-velden. Het bruto loon, de vakantiegeld-reservering, de pensioenpremie van de werknemer, de WGA/WIA-premie van de werknemer, de Zvw-bijdrage van de werknemer, de loonheffing (loonbelasting plus premies volksverzekeringen samengevoegd), de toegepaste arbeidskorting, of de heffingskorting in deze periode is toegepast (ja/nee), het netto loon, en de cumulatieven year-to-date per relevant veld. Dit is het werknemer-perspectief op de strook: alles wat van het bruto naar het netto loopt en alles wat de werknemer op zijn rekening krijgt of als korting verzilvert.

Werkgeverslast. De werkgevers-Zvw-bijdrage, de werkgevers-pensioenpremie, de WW-premie (laag of hoog, afhankelijk van het contract), de Aof-premie (laag voor kleine werkgevers, hoog voor middelgrote en grote), en eventueel een sectorpremie of WHK-bijdrage. Werkgeverslast staat op de strook als informatie voor de werknemer, maar gaat niet door zijn netto loon. Het is een aparte werkgeverskostenpost die in de loonjournaalpost als debet-werkgeverslast geboekt wordt — niet als inhouding op het bruto.

De cumulatieven year-to-date zijn de loop-getallen vanaf januari tot en met de huidige periode. Op de december-strook staat dus de jaartotaalkolom direct naast de december-kolom — een ingebouwde controle van het bureau zelf. Die kolom is kritiek voor de jaarcontrole verderop: als de cumulatieven in december niet kloppen met de som van de twaalf periode-kolommen, ontbreekt een strook of zit er een dubbele in.

Een laatste detail dat in de reconciliatie-formule terugkomt: loonheffing op de strook is geen losse loonbelasting maar de loonbelasting plus de premies volksverzekeringen (AOW, Anw, Wlz) als één bedrag. De jaaropgaaf van januari toont diezelfde samenvoeging onder ingehouden loonheffing. Daarom staat in de reconciliatie de som van twaalf maand-loonheffingen rechtstreeks tegenover één veld op de jaaropgaaf, zonder verdere uitsplitsing.

Bureau-specifieke layouts en de extractie-prompt

Alle Nederlandse loonstroken dragen dezelfde wettelijke kerngegevens, maar geen twee payroll-bureaus zetten ze op precies dezelfde plek. Dat is geen detail om over te kijken: een prompt die op NMBRS-stroken werkt, vindt op Visma-stroken niet zonder aanpassing dezelfde velden, en een batch waarin halverwege de kolomvolgorde verschuift, breekt elke draaitabel of SOM.ALS in het jaaroverzicht.

Een paar concrete observaties per bureau:

  • NMBRS. Cumulatieven year-to-date staan vaak in een aparte kolom rechts naast de periode-kolom, op dezelfde regel als het periodecijfer.
  • Loket. Werkgeverslast wordt expliciet onder een aparte kop getoond, soms met afzonderlijke regels per premie-component (WW, Aof, Zvw, pensioen) in plaats van één samengevoegd totaal.
  • Visma. Correctie-stroken — verrekeningen over een eerdere periode — verschijnen als negatieve regels of als een aparte sectie binnen dezelfde strook, niet als losse herstel-strook.
  • AFAS. Veldlabels zijn vaak afgekort of bedrijfsspecifiek aanpasbaar, dus een prompt moet toleranter zijn in zijn label-mapping en bij voorkeur op semantische beschrijving werken in plaats van op een exacte tekstmatch.
  • Personeel & Salaris. Vergelijkbare opbouw als Loket, maar met soms andere terminologie voor pensioencomponenten — bijvoorbeeld een aparte regel voor netto pensioen of een gesplitste opbouw voor middelloon en eindloon.

De praktische oplossing is één opgeslagen prompt per bureau. Eén prompt voor NMBRS-stroken, een tweede voor Visma-stroken, een derde voor Loket, enzovoort. Elke prompt produceert dezelfde kolomvolgorde en dezelfde kolomnamen, ongeacht waar de waarden in de PDF staan. De extractie-laag tussen ontvangen PDF-strook en samengesteld Excel-jaaroverzicht — AI-extractie voor PDF-loonstroken naar Excel — zit precies op deze plek. Wie batchgewijs werkt heeft baat bij een Prompt Library waarin per bureau één gevalideerde prompt klaar staat: 12 stroken voor één DGA in één run, 96 stroken voor een werkgever met acht werknemers ook in één run, met identieke kolomopzet over de hele batch.

Een werkbare basis-prompt in het Nederlands ziet er zo uit:

Extraheer per loonstrook in het bestand de volgende velden, in deze kolomvolgorde: bronbestand, bronpagina, werknemer-naam, BSN, werkgever-naam, loonheffingennummer, loontijdvak, bruto loon, vakantiegeld reservering, pensioenpremie werknemer, WGA/WIA premie werknemer, Zvw bijdrage werknemer, loonheffing, arbeidskorting, heffingskorting toegepast, netto loon, werkgevers-Zvw, werkgevers-pensioen, WW-premie, Aof-premie, en de cumulatieven year-to-date als aparte kolommen voor cum. bruto loon, cum. loonheffing, cum. werknemerspremies en cum. netto loon. Maak één rij per normale loonperiode en een aparte rij per correctie-regel wanneer een strook meerdere perioden of negatieve verrekeningen bevat. Datum-format YYYY-MM; gebruik voor correcties het tijdvak waarin de correctie op de strook staat en vermeld de oorspronkelijke periode in een aparte notitie-kolom. Bedragen in euro's met twee decimalen. Sorteer de output per werknemer-naam en daarbinnen op loontijdvak. Negatieve bedragen behouden hun teken — dit zijn correctie-regels.

Bij een specifiek bureau voeg je één of twee zinnen toe die de eigenaardigheden afvangen. Voor NMBRS-stroken: "Cumulatieven year-to-date staan in de rechterkolom naast de periodewaarde; gebruik die kolom voor de cum.-velden." Voor Visma-stroken: "Negatieve regels binnen dezelfde strook zijn correctie-stroken over eerdere perioden; behandel ze als reguliere regels met een afwijkend loontijdvak zodat ze in het jaaroverzicht zichtbaar blijven." Een korte aanpassing, één keer ingericht, en daarna jaarlijks of maandelijks herbruikbaar.

Een harde grens in de positionering hoort hier ook expliciet thuis: Invoice Data Extraction extraheert. Het berekent geen salarissen, dient geen loonaangifte in en vervangt geen payroll-pakket. De DGA of werkgever blijft eigenaar van de berekening en de aangifte; het product zorgt alleen dat de data uit de PDF-stroken in een gestructureerde Excel landt waarop de eigenaar zijn eigen reconciliatie en loonjournaalpost kan uitvoeren.

Consolideren tot een jaaroverzicht per werknemer

Na de extractie heb je een platte Excel — één rij per loonstrook, twaalf rijen voor een DGA, 96 voor een werkgever met acht werknemers. De doelvorm is daar één stap verwijderd van: een tabel waarin elke rij een combinatie is van werknemer en maand, met kolommen voor alle bruto-, premie-, loonheffing-, netto- en werkgeverslast-velden uit de vorige sectie. Onderaan elk werknemer-blok — of in een tweede tabblad, afhankelijk van hoe je het overzicht wilt lezen — staat per werknemer een jaartotalenrij die de twaalf maanden optelt.

Voor de DGA is consolidatie triviaal. Twaalf rijen, één werknemer, één jaartotaal. Een eenvoudige SOM-formule onder de twaalf periodewaarden of een draaitabel met werknemer-naam als rij-as en loontijdvak als kolom-as levert direct het overzicht. Hier zit weinig werk; de moeite zat in de extractie en in de keuze om een opgeslagen prompt te gebruiken zodat de twaalf rijen daadwerkelijk dezelfde kolommen dragen.

Voor de kleine werkgever ligt de tabel anders. De werknemer × maand × veld-structuur is dezelfde, maar nu met N werknemers en daarmee 12 × N rijen. Vanaf hier vertakt het overzicht in twee gebruikspaden. Het eerste pad zijn per-werknemer-jaaroverzichten: één blok of tabblad per werknemer, met de twaalf maand-rijen en de jaartotalenrij eronder. Dat blok is wat je naast de individuele jaaropgaaf legt om te controleren dat het fiscaal loon van die werknemer klopt. Het tweede pad zijn maandaggregaten over alle werknemers heen, voor de loonjournaalpost — sommen per maand over alle medewerkers in de tabel. Hoe je die maandaggregaten precies opbouwt en welke kolommen daarin moeten landen, komt in de loonjournaalpost-sectie hieronder.

Dat brengt één punt scherp naar voren: de waarde van een vaste kolomvolgorde uit de extractie-stap zit hier. Als de extractie van NMBRS-stroken in de eerste maand pensioenpremie werknemer op kolom H zet en in de zevende maand op kolom J — bijvoorbeeld omdat de prompt halverwege is aangepast of omdat één strook van een ander bureau in de batch zat — dan haalt geen SOM.ALS of draaitabel die regels nog correct samen. Eén prompt per bureau, ingericht om kolomvolgorde en kolomnamen te fixeren, betekent dat de consolidatie-stap mechanisch wordt: kopiëren, plakken, draaitabel.

Correctie-stroken vragen om een keuze. Een verrekening over maart die in juli verschijnt, is een aparte regel in de geconsolideerde tabel — niet één die je samenvoegt met de oorspronkelijke maart-regel of negeert. Geef hem een afwijkende loontijdvak-waarde (bijvoorbeeld 2025-07-correctie-2025-03), zodat hij in de jaartotalen wordt meegenomen maar in de maandgrafiek of de loonjournaalpost als aparte regel zichtbaar blijft. Onzichtbare correcties zijn de bron van de meeste reconciliatie-verschillen die in de volgende sectie aan bod komen.

Reconciliëren tegen de jaaropgaaf

De jaaropgaaf van januari, uitgegeven over het voorgaande jaar, is de officiële samenvatting van wat de Belastingdienst van die werknemer over dat jaar heeft gezien. Voor de reconciliatie zijn vijf velden relevant: fiscaal loon, ingehouden loonheffing, arbeidskorting, verrekende arbeidskorting en de werkgeversbijdrage Zvw. Het jaaroverzicht uit de vorige sectie moet op die vijf punten kloppen met de jaaropgaaf. Twee primaire formules vangen het meeste werk af.

De eerste formule:

som(maand-bruto-loon) − som(maand-werknemerspremies) = jaar-fiscaal-loon

en die uitkomst moet gelijk zijn aan het veld fiscaal loon op de jaaropgaaf. De werknemerspremies zijn hier de pensioenpremie van de werknemer, de WGA/WIA-premie van de werknemer en de Zvw-bijdrage van de werknemer — de inhoudingen die het bruto loon verlagen voordat de loonheffing berekend wordt.

De tweede formule is rechttoe-rechtaan:

som(maand-loonheffing) = jaar-loonheffing

en die som moet gelijk zijn aan ingehouden loonheffing op de jaaropgaaf. Beide kanten zijn samenvoegingen van loonbelasting plus premies volksverzekeringen, dus de optelling kan kolom-tegen-veld gemaakt worden zonder verdere uitsplitsing.

Een derde controle is de cumulatieven-check, en die hoort eigenlijk vóór de twee formules thuis omdat hij goedkoper is. De cumulatieven year-to-date in de december-strook moeten gelijk zijn aan de som van de twaalf periode-kolommen — bruto, loonheffing, werknemerspremies, netto. Een verschil hier wijst meteen op een ontbrekende of een dubbele strook, en dat is een fout die je oplost in de extractie- of consolidatie-stap, niet in de reconciliatie-stap.

Als die check klopt en de twee primaire formules toch een verschil opleveren, dan is het verschil diagnostisch. Een paar gevallen die in de praktijk telkens terugkomen:

  • Een verschil tussen som(maand-loonheffing) en de jaaropgaaf-loonheffing wijst meestal op een correctie-strook — een verrekening over een eerdere periode die in een latere maand op de strook is verwerkt — of op eindheffing die wel in de jaaropgaaf is meegenomen maar niet zichtbaar was op de werknemer-stroken.
  • Een verschil in fiscaal loon wijst op een correctie van het bruto loon zelf: een bonus die buiten de gewone maand om is uitgekeerd en op een aparte strook of in een aparte regel staat, een verlofuitbetaling bij uitdiensttreding, of een herrekening na een cao-wijziging die met terugwerkende kracht is verwerkt.
  • Een afwijking in de arbeidskorting ontstaat vaak doordat de heffingskorting niet in elke periode is toegepast — bijvoorbeeld omdat de werknemer halverwege het jaar een tweede dienstverband kreeg of de keuze tot toepassing introk. De jaaropgaaf telt dan een ander totaal dan twaalf gelijk-toegepaste maanden zouden geven.

De volgorde van de controle is praktisch belangrijk. Doe eerst de cumulatieven-check op de december-strook. Pas daarna de jaartotalen per werknemer uit het overzicht. En pas daarna de twee formules tegen de jaaropgaaf. Een verschil dat al in de cumulatieven-check opduikt, hoeft niet meer in de jaartotalen of de jaaropgaaf-vergelijking te worden uitgezocht — het zit in de invoer. Een verschil dat pas in de jaaropgaaf-vergelijking opduikt, terwijl de cumulatieven en de jaartotalen kloppen, zit in de payroll-administratie zelf en vraagt om navraag bij het bureau of een blik op de eindheffings- en correctie-regels van de werkgever.

De DGA-controle: bruto jaarloon en gebruikelijk-loon-norm

Voor een directeur-grootaandeelhouder van een BV doet het jaaroverzicht naast de jaaropgaaf-reconciliatie nog een tweede toets: de gebruikelijk-loon-norm. De norm voorkomt dat een DGA zichzelf onnodig laag uitkeert om dividend uit box 2 minder zwaar te belasten — de fiscus eist dat het loon ten minste in lijn is met wat een vergelijkbare werknemer zonder aandelenbelang voor hetzelfde werk zou ontvangen.

Volgens de gebruikelijk-loon-toelichting van de Belastingdienst is de gebruikelijk-loon-norm voor een directeur-grootaandeelhouder van een BV in 2026 minimaal € 58.000 (in 2024 en 2025 was dit € 56.000). De norm is een ondergrens; in veel gevallen ligt het feitelijke gebruikelijk loon hoger, bepaald door wat marktconform is voor de functie en de sector waarin de DGA werkt.

De toets op het jaaroverzicht is mechanisch. Tel de twaalf maand-bruto-bedragen op — vakantiegeld dat al deel uitmaakt van het reguliere bruto-bedrag of dat in mei of juni als aparte uitbetaling binnen hetzelfde jaar is verwerkt, telt mee. De uitkomst is het bruto jaarloon en moet ten minste de norm voor dat jaar halen. Wie eronder uitkomt heeft twee opties: een onderbouwing waarom een lager loon in zijn geval marktconform is, of een correctie via een aanvullende uitbetaling, een bonus, of een december-correctie die het tekort vóór 31 december aanvult.

De norm kent uitzonderingen, maar die moet je smal lezen. Een lager loon kan alleen wanneer de DGA aannemelijk maakt dat een vergelijkbare werknemer in een vergelijkbare functie ook minder zou verdienen; ook kan een zeer laag gebruikelijk loon onder de grens van € 5.000 anders uitpakken. De oude start-upversoepeling is sinds 2023 niet meer algemeen beschikbaar voor nieuwe gevallen en liep alleen nog door voor beperkte overgangssituaties. Wat hier voor het jaaroverzicht telt: de norm is geen absoluut minimum in elke denkbare situatie, maar een afwijking eronder vraagt actief om onderbouwing en is daarmee een aandachtspunt dat al in december zichtbaar moet zijn — niet pas in januari als de aangifte rondkomt.

Maandaggregaten voor de loonjournaalpost

De geconsolideerde tabel werknemer × maand × veld levert nog één output: een maandaggregatie die als loonjournaalpost de boekhouding ingaat. Per maand sommeer je over alle werknemers de velden die de boeking nodig heeft. In de praktijk komt dat neer op zeven aggregaat-velden:

  • Bruto loon totaal — som van het bruto loon over alle werknemers in die maand.
  • Werknemerspremies totaal — pensioenpremie, WGA/WIA en Zvw-bijdrage van de werknemers, gegroepeerd of in aparte sub-totalen, afhankelijk van het rekeningschema van het boekhoudpakket.
  • Loonheffing afgedragen — de aan de Belastingdienst af te dragen loonheffing voor die maand.
  • Pensioenpremie afgedragen — het totaal aan pensioenpremie (werknemer plus werkgever) dat naar de pensioenuitvoerder gaat.
  • Zvw werkgeversbijdrage afgedragen — het werkgevers-Zvw-deel.
  • Werkgeverslast totaal — WW-premie, Aof-premie en eventuele sectorpremies of WHK-bijdragen, samengevoegd of als aparte regels.
  • Netto uit te keren — de som van het netto loon dat naar de werknemers gaat.

Elk van deze zeven velden is één SOM.ALS per maand-kolom uit het werknemer × maand × veld-overzicht. Voor twaalf maanden levert dat een tabel van twaalf rijen die — kolom voor kolom — debet- en credit-zijde van de loonjournaalpost vormt.

Waarom als één boeking per maand en niet per werknemer? In de meeste boekhoudingen worden de afdrachten op maandbasis gedaan: één betaling aan de Belastingdienst voor de loonheffing van die maand, één aan de pensioenuitvoerder voor de pensioenpremie, en N betalingen aan de werknemers voor het netto. De boeking volgt die structuur. Twaalf maandboekingen per jaar in plaats van 12 × N werknemerboekingen scheelt administratief werk en sluit één-op-één aan op de bankafschriften.

De maandaggregatie-tabel is daarmee importklaar. Voor SnelStart-gebruikers vertaalt dat zich naar boekingen importeren in SnelStart vanuit Excel waarbij de twaalf maandregels als losse boekingen met de juiste grootboekrekening-codes binnenkomen. Voor e-Boekhouden-gebruikers werkt het via mutaties importeren in e-Boekhouden vanuit Excel, met een vergelijkbare debet/credit-opzet. Andere pakketten — Exact Online, Twinfield — accepteren een Excel- of CSV-import met dezelfde kolommen, alleen met hun eigen schema voor grootboekrekening-codes.

Een tegencheck die te vaak wordt overgeslagen: de afdrachten en netto-uitkeringen verschijnen ook op de zakelijke bankafschriften. Wie PDF-bankafschriften omzetten naar Excel als parallel werkstroom inricht, kan de extractie van de bankregels tegen de loonjournaalpost-aggregaten leggen en directe controle uitvoeren: de loonheffing-betaling aan de Belastingdienst, de pensioenpremie-betaling aan de pensioenuitvoerder en de N netto-betalingen aan de werknemers moeten in totaal kloppen met de maandaggregaten in dezelfde periode. Verschil daar wijst op een gemiste correctie of op een afdracht die naar een latere maand is doorgeschoven.

Tot slot: een correctie-strook die in een latere maand verschijnt — bijvoorbeeld een herrekening over maart die in juli op de strook komt — landt in de juli-aggregatie, niet alsnog in maart. De boekhouding volgt de feitelijke afdrachten en uitkeringen, niet de oorspronkelijke periode waarvoor de correctie geldt. Wie correctie-stroken terugschuift naar de oorspronkelijke maand, raakt het verband tussen de loonjournaalpost en de werkelijke bankmutaties kwijt — en dat is precies het verband dat de tegencheck via de bankafschriften benut.

Extract invoice data to Excel with natural language prompts

Upload your invoices, describe what you need in plain language, and download clean, structured spreadsheets. No templates, no complex configuration.

Exceptional accuracy on financial documents
1–8 seconds per page with parallel processing
50 free pages every month — no subscription
Any document layout, language, or scan quality
Native Excel types — numbers, dates, currencies
Files encrypted and auto-deleted within 24 hours
Continue Reading