Peppol & e-facturatie

Peppol: bruto en nettoprijs

In een Peppol-factuur staat bij de artikelprijs een nettoprijs, na eventuele prijskorting. Vergelijk daarom bruto, korting en netto binnen dezelfde prijsgroep voordat je een verschil in het regelbedrag probeert te herstellen.

Kort antwoord

Lees PriceAmount onder Price als artikelnettoprijs zonder btw. Staat onder diezelfde prijs een AllowanceCharge met bruto en korting, controleer dan bruto min korting. Noteer ook op hoeveel eenheden die prijs betrekking heeft.

Onze fictieve proef PK2610 laat zien waarom dat nodig is: € 80 bruto min € 5 prijskorting geeft € 75 netto per vijf stuks. Voor tien stuks is dat € 150. Vijf euro als korting op de hele regel aftrekken geeft in een andere structuur € 155. Hetzelfde getal heeft daar een andere reikwijdte.

Welke velden horen bij de artikelprijs?

OpenPeppol beschrijft de prijsgroep met een verplichte PriceAmount en een optionele BaseQuantity. Het eerste is de nettoprijs; het tweede geeft aan op hoeveel artikeleenheden die prijs slaat. Een prijs mag niet negatief zijn.

De optionele kortingsgroep onder Price bevat verplicht een ChargeIndicator met waarde false en een Amount voor de prijskorting. BaseAmount is hier de optionele brutoprijs vóór die korting, zonder btw. Bruto betekent hier dus geen prijs inclusief btw.

Schrijf de volledige locatie naast ieder bedrag. Een los veld met de naam Amount zegt nog niet welk bedrag je bekijkt. Ook BaseAmount en BaseQuantity zijn verschillende gegevens: een geldbedrag tegenover een aantal eenheden.

De plaats van de korting bepaalt haar bereik

Een AllowanceCharge binnen Price hoort bij de artikelprijs. Een groep rechtstreeks onder InvoiceLine hoort bij de hele factuurregel. Een groep onder het factuurdocument heeft weer een andere plaats. Gebruik onze controle van regelkorting en documentkorting als het bedrag op een van die andere niveaus staat.

R044 staat binnen de prijskortingsgroep alleen false toe: daar wordt geen prijstoeslag vastgelegd. Verander een onverklaard positief bedrag daarom niet op goed geluk in een toeslag op die plaats. Vraag eerst welke afspraak en welk niveau de export moet weergeven.

Eigen vergelijking: drie gedeeltelijke XML-varianten

Alle bedragen hieronder zijn fictief, in euro en zonder btw. We factureren tien stuks; de prijsbasis is vijf stuks, telkens met eenheid H87. Documentkortingen en toeslagen ontbreken. We hebben drie eigen gedeeltelijke XML-fragmenten op elementlocatie en berekening gecontroleerd, met een afzonderlijke controle in hele centen.

VariantWat volgt uit de vastgelegde bedragen?
A: PriceAmount 75; onder Price korting 5 en bruto 80; BaseQuantity 5.80 − 5 = 75. Regel: 10 × (75 ÷ 5) = 150. De prijsaansluiting klopt.
B: alleen PriceAmount verandert van 75 naar 80. De prijskorting 5 en bruto 80 blijven staan.80 − 5 is geen 80. De prijsaansluiting klopt niet. Een regel berekend met netto 80 komt wel op 160.
C: PriceAmount 80; geen kortingsgroep onder Price. Korting 5 staat rechtstreeks onder InvoiceLine.Regel: 10 × (80 ÷ 5) − 5 = 155. Dit legt een korting op de hele regel vast en reproduceert afspraak A niet.

B verschilt van A alleen in de nettoprijs en het daarmee berekende regelbedrag. C wijzigt juist de structuur en betekenis. Een rekensom die intern sluit, bewijst dus niet dat de afgesproken prijs correct is overgenomen. Het verschil tussen A en C is € 5.

Reken de prijskorting niet nogmaals af

Bij A zijn er twee prijsbasissen van vijf stuks in de gefactureerde tien stuks. De brutoregel zou 10 × (80 ÷ 5) = € 160 bedragen. De prijskorting werkt daarin voor 2 × € 5 = € 10 door. Netto resteert € 150. Dat is dezelfde uitkomst als rechtstreeks rekenen met de nettoprijs.

De € 5 prijskorting zit al in PriceAmount 75. Trek haar niet opnieuw als regelkorting af; daarmee verander je onze afspraak. Controleer ook aantal, eenheid en prijsbasishoeveelheid voordat je een verschil aan de korting toeschrijft.

Voor het regelnetto neemt R120 de hoeveelheid maal nettoprijs gedeeld door prijsbasis, plus regeltoeslagen en min regelkortingen. Onze voorbeelden gebruiken exact sluitende bedragen; ze onderzoeken geen afrondingsgrens of tolerantie.

Wat zegt R046 wel over deze prijs?

R046 vergelijkt in de prijskortingsgroep de nettoprijs met brutoprijs min kortingsbedrag wanneer BaseAmount aanwezig is. Voor A is de vergelijking waar; voor B niet. Bij C ontbreekt die hele groep, zodat deze specifieke prijsvergelijking daar niet wordt uitgevoerd.

Lees dat laatste niet als een goedkeuring van C. Onze test beoordeelt een beperkte relatie in eigen fragmenten. De fragmenten zijn geen volledige facturen en zijn niet met volledige XSD- of Schematronvalidatie gecontroleerd. Levering, btw, exportmapping, ontvangst en betaling zijn niet getest.

Bewaar afspraak, veldlocatie en nieuwe export samen

Leg op je controleblad vast: conceptversie, bedoelde prijs per aantal, bruto en korting indien aanwezig, nettoprijs, hoeveelheid en gevonden regelbedrag. Noteer bij elke korting of zij bij de prijs, de regel of het document staat. Bewaar een verschil met de verwachte uitkomst vóór je iets corrigeert.

Laat de leverancier een onduidelijke mapping uitleggen. Herstel vervolgens het bronconcept en controleer dezelfde velden in de nieuwe export. Een PDF-label “korting” of een eerder validatieresultaat vervangt die controle niet. Gebruik fictieve gegevens in een demonstratie; onze proef is geen echte klantfactuur.

Bronnen en verder lezen

Vijf officiële OpenPeppol-pagina's rechtstreeks gecontroleerd op 26 oktober 2026. Ze tonen BIS Billing 3.0, May 2026 Release. PK2610, de bedragen en de vergelijking zijn onze eigen uitwerking.

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