Peppol & e-facturatie

Peppol: aantal en prijsbasis

Lees bij een Peppol-factuurregel het aantal, de eenheid en de prijsbasis samen. Een prijs van € 80 per 10 stuks is iets anders dan € 80 per stuk. Controleer deze gegevens in dezelfde conceptversie en gestructureerde export; een herkenbaar woord als “uur” op de pdf vertelt nog niet welke eenheidscode wordt meegestuurd.

Kort antwoord

Leg voor één regel vast: wat is geleverd, hoeveel wordt gefactureerd, welke code hoort daarbij, welk nettobedrag is de prijs en voor hoeveel eenheden geldt die prijs? Reken daarna het regelnetto na. Deze controle is onze eigen praktische uitwerking van de OpenPeppol-documentatie. We hebben geen pakket geopend, factuur verzonden of volledig XML-bestand gevalideerd.

Begin bij hoeveelheid en eenheid

In de OpenPeppol-uitleg over InvoicedQuantity is dit de hoeveelheid goederen of diensten die op de regel wordt gefactureerd, BT-129. Het bijbehorende attribuut unitCode geeft de eenheid aan en is verplicht. Een los getal zonder de betekenis van die eenheid is dus onvoldoende voor je vergelijking.

Neem eerst de afspraak en levering erbij. Betekent 25 vijfentwintig losse artikelen, vijfentwintig dozen of vijfentwintig uur werk? Schrijf die betekenis op voordat je een code beoordeelt. Een omschrijving die “doos” vermeldt en een hoeveelheid die stuks telt, vraagt om uitleg over de gekozen prijs- en leveringsafspraak.

Bij tijd blijft ook de eerdere omzetting van registraties belangrijk. Vergelijk de eenheid en het tarief in het concept met de export. Dat een pakket in een invoerveld uren:minuten accepteert, bewijst op zichzelf niet welke hoeveelheid en code het in een Peppol-document schrijft.

Vraag op hoeveel eenheden de prijs slaat

PriceAmount, BT-146, is in deze specificatie de artikelnettoprijs exclusief btw na een eventuele artikelprijskorting. Het is niet zonder meer het nettobedrag van de hele factuurregel. Houd de prijs en het regelbedrag op twee afzonderlijke plaatsen op je controleblad.

BaseQuantity, BT-149, beschrijft het aantal eenheden waarvoor de prijs geldt. De syntax laat dit element nul of één keer toe; het is dus niet op iedere regel verplicht aanwezig. Het eigen attribuut unitCode is daar optioneel. Noteer ook expliciet wanneer je een element of attribuut niet aantreft, in plaats van zelf een gevonden getal aan te vullen.

Laat bij een pakketdemonstratie aanwijzen waar “prijs per 10” wordt vastgelegd en hoe dat in de gekozen export terugkomt. Bewaar het scherm en de export van hetzelfde concept bij elkaar. Een prijsveld met alleen “80” maakt nog niet duidelijk of je naar een prijs per stuk of per tien kijkt.

Een code is geen automatische omrekening

De BIS-uitleg, onderdeel 11.11, toont onder meer H87 voor stuk, HUR voor uur en MIN voor minuut. Dit zijn voorbeelden uit de toegestane eenhedenlijsten. Een lokale keuzenaam in je pakket is niet hetzelfde als de code die daadwerkelijk in de export staat.

Regel R130 verlangt dat een opgegeven eenheidscode bij de prijsbasishoeveelheid gelijk is aan die van de gefactureerde hoeveelheid. De regel kijkt naar BaseQuantity met een aanwezig unitCode-attribuut. Hij rekent niet voor jou minuten naar uren of dozen naar losse artikelen om.

Controleer hoeveelheid en prijs daarom opnieuw als je de bedoelde eenheid wijzigt. Alleen de tekst “minuut” vervangen door “uur” maakt dezelfde hoeveelheid nog niet inhoudelijk juist. Laat een onduidelijke omzetting in het bronpakket verklaren voordat je een volgende export als gecontroleerd beschouwt.

Eigen voorbeeld: 25 stuks, prijs per 10

We verzinnen één factuurregel voor 25 stuks. De artikelnettoprijs is € 80,00 voor 10 stuks; er zijn geen toeslagen of kortingen op regelniveau. Beide hoeveelheidscodes zijn in deze proef H87. Alle prijzen en hoeveelheden zijn eigen rekenwaarden, geen marktprijs, echte levering of uitkomst uit een getest pakket.

GegevenEigen proef
Aantal25
Eenheid H87
Nettoprijs€ 80,00
Valuta EUR
Prijsbasis10
Eenheid H87
Regelnetto€ 200,00
Valuta EUR

De prijs per stuk is € 80,00 ÷ 10 = € 8,00. Voor de gekozen 25 stuks wordt het regelnetto 25 × (€ 80,00 ÷ 10) = € 200,00. Dit volgt voor onze vereenvoudigde regel uit de berekeningsopzet van R120. Die regel betrekt ook eventuele toeslagen en kortingen op regelniveau; onze proef neemt die op nul.

Wie in plaats daarvan 25 × € 80,00 rekent, krijgt € 2.000,00. Het verschil is € 2.000,00 − € 200,00 = € 1.800,00. De prijsbasis overslaan verandert hier dus de uitkomst. We berekenen geen btw, factuurtotaal of te betalen bedrag en bepalen geen recht om een bedrag te factureren.

Houd een codeverschil en een rekenverschil apart

Stel dat je in een tweede, eveneens fictieve variant 25 met code H87 ziet en een prijsbasis van 10 met code HUR. Dan verschillen de twee aanwezige codes en past deze combinatie niet bij R130. Alleen het bedrag op € 200 zetten herstelt dat codeverschil niet. Zoek eerst uit welke hoeveelheid en prijsafspraak werkelijk bedoeld zijn.

Controleer daarnaast een opgenomen prijsbasis op nul of een negatieve waarde. R121 verlangt voor een aanwezige prijsbasishoeveelheid een waarde groter dan nul. Dat maakt de afspraak nog niet inhoudelijk juist: ook een positieve 10 kan verkeerd zijn als de afgesproken prijs per één geldt.

Herstel het concept en maak een nieuwe export

Noteer regelnummer, omschrijving, hoeveelheid, beide eventuele codes, prijs en prijsbasis. Schrijf naast ieder verschil wat uit de opdracht of levering volgt. Laat je softwareleverancier aangeven welk invoerveld die exportwaarde bepaalt. Bewerk niet alleen een leesbare pdf om een ander bedrag te tonen terwijl het gestructureerde document achterblijft.

Maak na een verklaarde correctie een nieuwe conceptweergave en export. Vergelijk opnieuw met de controle van leesbare en gestructureerde gegevens. Bewaar welke versie is bekeken en laat de validatie voor het daadwerkelijk gebruikte formaat uitvoeren. Een oud rapport hoort niet automatisch bij het gewijzigde bestand.

Rond af met een beperkte conclusie

Een bruikbare slotnotitie voor onze eigen proef is: “25 stuks, € 80 per 10 stuks, beide codes H87; zonder regeltoeslagen of regelkortingen rekenkundig € 200 netto.” Zo kun je later terugvinden welke aannames bij het bedrag hoorden. Een losse vink bij “bedrag klopt” bewaart die betekenis niet.

Deze veldvergelijking vervangt de volledige documentvalidatie en de inhoudelijke factuurcontrole niet. Dezelfde codes en een passend regelnetto bewijzen bijvoorbeeld niet dat de juiste artikelen zijn geleverd. Behandel onze tabel ook niet als een complete geldige XML-factuur; het is een fictief controleblad.

Bronnen en verder lezen

Zeven primaire OpenPeppol-pagina's rechtstreeks gecontroleerd op 16 oktober 2026, onder de May 2026 Release van BIS Billing 3.0. De controlevolgorde, goederen, hoeveelheden en prijzen zijn onze eigen fictieve uitwerking. Er is geen klantfactuur verstuurd, pakketmapping getest of volledig XML-document gevalideerd.

Bekijk het Peppol-overzicht voor andere controles vóór verzending.