Navigation

fino data services logo

Viden · E-faktura

Valider e-fakturaer og læs valideringsrapporten korrekt

Når en e-faktura fra din software bliver afvist, skal dit team ud fra valideringsrapporten finde ud af, hvilket felt der udløste meldingen, og hvem der kan rette det.

Vi viser, hvordan du læser en valideringsrapport, og hvor valideringen hører hjemme i din software.

Hvad der kontrolleres ved validering af en e-faktura

En validator kontrollerer en e-faktura efter hinanden mod tre regelsæt og registrerer enhver afvigelse i en valideringsrapport.

Syntaksens XML-skema

En e-faktura efter EN 16931 foreligger i en af to syntakser, UBL eller UN/CEFACT CII. Alle gængse applikationsspecifikationer bygger på disse to syntakser, f.eks. XRechnung, ZUGFeRD og Peppol BIS Billing 3.0.

Syntaksens XML-skema fastlægger, hvilke elementer der er tilladt, i hvilken rækkefølge de står, og hvilken datatype de har.

Skemafejl har intet regel-ID. XML-parseren melder dem med sine egne koder, f.eks. cvc-complex-type.2.4.a for et element et sted, hvor skemaet ikke forventer det.

Ved ZUGFeRD er en CII-fil indlejret i en PDF. Validatoren kontrollerer XML-delen. Ved afvigelser fra billeddelen er det denne del, der er afgørende, ifølge det tyske finansministeriums skrivelse af 15. oktober 2025 (BMF-Schreiben) om indførelsen af den obligatoriske e-faktura.

Forretningsreglerne i EN 16931

Forretningsreglerne kontrollerer oplysningerne i en e-faktura for logiske fejl, f.eks. om obligatoriske felter er udfyldt, og om summerne stemmer overens. Den Europæiske Standardiseringsorganisation (CEN) offentliggør disse regler som Schematron-filer på GitHub, både for UBL og for CII.

Ud fra præfikset i regel-ID’et kan du se, hvilken slags kontrol der er tale om. Regler med BR og et tal kontrollerer obligatoriske felter og deres antal, BR-CO kontrollerer beregninger og afhængigheder mellem felter, BR-CL kontrollerer kodelister og BR-DEC decimalerne i beløb. Regler som BR-S, BR-AE eller BR-IC kontrollerer oplysningerne om de enkelte momskategorier.

CEN-filerne indeholder desuden syntaksspecifikke regler. Regler med præfikset UBL-CR melder f.eks. en advarsel, hvis en UBL-fil indeholder elementer, der ikke hører til datamodellen i EN 16931.

Regler i XRechnung og Peppol BIS Billing 3.0

XRechnung og Peppol BIS Billing 3.0 er applikationsspecifikationer af EN 16931, i fagsproget kaldet CIUS (Core Invoice Usage Specification). De foreskriver yderligere felter og supplerer EN 16931 med egne regler. Nye datafelter må en CIUS ikke indføre.

Reglerne i XRechnung begynder med BR-DE og stammer fra det tyske koordineringskontor for IT-standarder (Koordinierungsstelle für IT-Standards, KoSIT). Peppol BIS Billing 3.0 tilføjer regler med præfikserne PEPPOL-EN16931 og PEPPOL-COMMON samt landespecifikke regler.

Specifikations-ID’et i BT-24 fastlægger, hvilken applikationsspecifikation der gælder for filen. KoSIT’s validator vælger ud fra dette ID det passende valideringsscenarie. Et forkert eller forældet ID kan derfor føre til, at filen kontrolleres mod andre regler eller afvises.

Hvad en validering ikke kontrollerer

En validator kan ikke se, om momssatsen passer til ydelsen, eller om ydelsesbeskrivelsen er tilstrækkelig.

Ifølge det tyske finansministerium skal alle momsretlige obligatoriske oplysninger stå i den strukturerede del af e-fakturaen. En blot henvisning til et bilag med ydelsesbeskrivelsen er ikke nok. Et varenavn som „se bilag“ i BT-153 består alligevel valideringen, fordi ingen regel vurderer indholdet i dette felt.

KoSIT og Forum elektronische Rechnung Deutschland (FeRD) har offentliggjort en tabel, der knytter de obligatoriske oplysninger efter den tyske momslov til de tilsvarende BT-felter. Ud fra denne tabel kan du fastlægge, hvilke obligatoriske oplysninger din software bør sikre med egne plausibilitetskontroller.

Opbygningen af en valideringsrapport

Hver post i valideringsrapporten indeholder som regel fire oplysninger.

Regel-ID

Regel-ID’et, f.eks. BR-CO-15 eller BR-DE-2, henviser til reglen i dokumentationen for det pågældende regelsæt.

Alvorlighedsgrad

En validator markerer hver melding som fejl eller advarsel. I Peppol-reglerne kaldes fejl fatal. En advarsel alene fører som regel ikke til afvisning. Nogle validatorer giver desuden hints, altså anbefalinger til en ren implementering uden indflydelse på resultatet. KoSIT-validatoren anbefaler i slutningen af sin rapport at acceptere eller afvise dokumentet.

Peppol indfører ofte nye regler først som advarsel og opgraderer dem til fejl i en senere release. Med version 3.0.21 blev f.eks. reglerne PEPPOL-COMMON-R052 og PEPPOL-COMMON-R053 ændret fra advarsler til fejl, som det fremgår af release notes for Peppol BIS Billing 3.0.

Placering

Placeringen er et XPath-udtryk, der peger på det berørte element i XML-filen. Det samme BT-nummer ligger forskellige steder i UBL og CII. Fakturabeløbet inklusive moms (BT-112) står i UBL i elementet cbc:TaxInclusiveAmount under cac:LegalMonetaryTotal og i CII i elementet ram:GrandTotalAmount under ram:SpecifiedTradeSettlementHeaderMonetarySummation.

Ved regler, der sammenligner flere felter, peger placeringen ofte på et overordnet element. Den værdi, der udløser meldingen, finder du så via meldingsteksten.

Meldingstekst

Meldingsteksten beskriver reglen og nævner som regel de involverede BT-numre. Meldingen til BR-CO-15 siger f.eks., at fakturabeløbet inklusive moms (BT-112) skal svare til summen af fakturabeløbet eksklusive moms (BT-109) og momsbeløbet (BT-110).

Siden version 3.0.21 begynder teksterne i Peppol-reglerne med regel-ID’et.

Gennemgå valideringsrapporter i den rigtige rækkefølge

En lang valideringsrapport skyldes ofte få årsager.

  1. Ret skemafejl

    Så længe filen ikke opfylder skemaet, er resultaterne af forretningsreglerne ikke særlig sigende eller mangler helt. Ret derfor først skemafejlene i eksporten, og valider derefter filen igen.

  2. Gruppér poster efter regel-ID

    En fejl i mappingen kan optræde i hver fakturalinje. En faktura med 40 linjer giver så 40 poster til den samme regel, som alle skyldes én enkelt årsag. Gennemgå derfor rapporten efter regel-ID.

  3. Genkend følgefejl

    Et manglende element kan overtræde flere regler på én gang. Hvis momsspecifikationen (BG-23) mangler, melder validatoren f.eks. BR-CO-18 og desuden regler for den berørte momskategori som BR-S-01. Ret først årsagen, og valider igen, før du behandler de øvrige meldinger enkeltvis.

  4. Via BT-nummeret ind i din egen datamodel

    BT-nummeret forbinder valideringsrapporten med din software. Vedligehold en kobling fra hvert BT-nummer til databasefeltet, til formularfeltet i din brugerflade og til ansvaret. Ansvaret fastlægger, om dit team retter en fejl eller din kunde, f.eks. hvis der mangler stamdata.

  5. Vurder og registrér advarsler

    Beslut for hver advarsel, om du retter den eller bevidst accepterer den, og registrér beslutningen. Kontrollér ved hver ny release, om en accepteret advarsel bliver opgraderet til fejl.

Typiske fejlårsager efter regelgruppe

Regelgruppen viser ofte allerede, hvor i din software rettelsen skal ske.

Skemafejl uden regel-ID

Årsagen ligger i elementrækkefølgen, namespace eller en forkert datatype i eksporten. Rettelsen sker i eksportfunktionen, én gang for alle kunder.

BR med tal

Årsagen er et obligatorisk felt, der ikke er mappet eller er tomt i stamdataene. Rettelsen sker i mappingen eller ved det obligatoriske felt i brugerfladen.

BR-CO og BR-DEC

Årsagen ligger i summer, afrunding, rabatter og tillæg på dokumentniveau. Rettelsen sker i beregningslogikken i fakturaoprettelsen.

BR-CL

Årsagen er en forældet eller egen kode, f.eks. for måleenheder eller lande. Rettelsen sker i kodelisterne i din software.

BR-S, BR-AE, BR-IC og andre kategorier

Momskategori, momssats og fritagelsesgrund passer ikke sammen. Rettelsen sker i momslogikken og i varestamdataene.

UBL-CR

Eksporten indeholder UBL-elementer uden for datamodellen i EN 16931. Rettelsen sker i eksportfunktionen.

BR-DE

Sælgerens kontaktoplysninger, betalingsoplysninger eller køberreferencen mangler. Rettelsen sker som regel i dine kunders stamdata.

PEPPOL-EN16931 og PEPPOL-COMMON

Den elektroniske adresse mangler, eller et ID har det forkerte format. Rettelsen sker i stamdataene og i administrationen af Peppol-ID’er.

Manglende køberreference ved XRechnung (BR-DE-15)

Reglen BR-DE-15 melder en manglende køberreference i BT-10. Ved fakturaer til den offentlige forvaltning står myndighedens Leitweg-ID her. For B2B-fakturaer er det ifølge det tyske finansministerium momsretligt tilstrækkeligt med en pladsholder som „-“, hvis fakturamodtageren ikke angiver sin egen identifikator. Din software kan derfor forudfylde feltet for B2B-fakturaer med en pladsholder, som dine kunder kan overskrive.

Afrundingsdifferencer i momsen (BR-S-09)

Reglen BR-S-09 sammenligner momsbeløbet i kategorien standardsats med produktet af beregningsgrundlag og momssats. Hvis din software afrunder momsen pr. linje og lægger beløbene sammen, kan summen afvige herfra. Ved mange linjer kan afvigelsen blive større end den tolerance, reglen tillader. Beregn derfor momsbeløbet pr. kategori ud fra beregningsgrundlag og momssats, som reglen foreskriver.

Byg validering ind i din software

Valideringen hører hjemme fem steder i din software og din udviklingsproces.

Før afsendelse

Din software bør validere hver e-faktura direkte efter oprettelsen og stoppe afsendelsen ved fejl. Dine kunder kan ikke bruge et regel-ID eller et XPath-udtryk til ret meget. Oversæt derfor de regler, som dine kunder selv kan rette, til en besked ved det berørte formularfelt. Beskeden til BR-DE-6, telefonnummeret på sælgerens kontaktperson i BT-42, kan f.eks. lyde „Angiv venligst et telefonnummer til spørgsmål“.

Fejl, der skyldes din mapping eller din beregningslogik, kan din kunde ikke rette. Sådanne fejl bør gå som intern besked til dit team.

Ved modtagelse

Din software bør også validere indgående e-fakturaer og vise resultatet ved bilaget. Gem den originale fil uændret og valideringsrapporten som et separat dokument ved siden af. Det tyske finansministerium kræver, at i det mindste den strukturerede del af en e-faktura opbevares uændret i sin oprindelige form.

Hvis en indgående faktura indeholder fejl, kan din kunde anmode afsenderen om en berigtiget faktura. Din software kan understøtte dette trin, f.eks. med en forberedt henvendelse til afsenderen, der indeholder valideringsrapporten.

I automatiserede tests

Opret en samling af testfakturaer, der dækker dine fakturatyper med deres koder, f.eks. 380 for en faktura og 384 for en berigtiget faktura. Dæk desuden hver momskategori, som dine kunder bruger. Dertil kommer rabatter og tillæg samt hver syntaks, som din software genererer. Medtag også bevidst fejlbehæftede filer, og kontrollér, at validatoren afviser dem.

KoSIT-validatoren er et open source-program til kommandolinjen og kan integreres i en build-pipeline. KoSIT stiller desuden en testsuite med eksempelfakturaer til rådighed, som egner sig som udgangspunkt for din egen samling.

Efter hver opdatering af regelsættene

Regelsættene ændrer sig også uden nyt versionsnummer. KoSIT offentliggør jævnligt bundles med fejlrettelser til XRechnung 3.0.2, senest i udgaven af 31. august 2026. XRechnung 3.0 forbliver gældende mindst indtil 31. juli 2027.

Forhåndsversionen af specifikationen XRechnung 4.0 udkom den 15. september 2026. Den er udtrykkeligt ikke beregnet til produktiv brug, men giver dig et tidligt overblik over de nye og ændrede funktionaliteter. Den endelige version forventes at udkomme i foråret 2027 sammen med de tekniske komponenter.

OpenPeppol offentliggør jævnligt nye releases af Peppol BIS Billing 3.0, de seneste år hver maj og november. Version 3.0.21 blev offentliggjort den 20. maj 2026 og har været bindende siden 17. august 2026.

Planlæg for hver release en fast dato, hvor du validerer din testsamling mod de nye regler. Registrér i hver valideringsrapport, med hvilken version af validator og regelsæt den er lavet. Så kan du også eftervise et resultat, når reglerne er ændret i mellemtiden. Til skiftet til XRechnung 4.0 bør dit testmiljø kunne kontrollere begge versioner parallelt.

Analysér valideringsrapporter på tværs af alle kunder

Hvis din software genererer e-fakturaer for mange kunder, kan det betale sig at analysere valideringsrapporterne på tværs af alle kunder. Dukker det samme regel-ID pludselig op hos mange kunder, ligger årsagen sandsynligvis i mappingen eller i et nyt regelsæt. Optræder det kun hos én kunde, ligger årsagen snarere i dennes stamdata.

Validering med InvoiceRails

Trinene i denne artikel kan du implementere fuldt ud selv. Den engangsindsats, det kræver, er overskuelig, men det er den løbende ikke: Regelsæt, kodelister og valideringskonfigurationer ændrer sig flere gange om året, og hver ændring skal ind i dine tests, din afsendelse og din releaseplanlægning.

Validering, afsendelse og vedligeholdelse af regelsættene kan derfor også overlades til et certificeret Peppol access point som InvoiceRails.

E-faktura-validator til enkeltkontroller

Den gratis e-faktura-validator fra InvoiceRails kontrollerer XML-filer i UBL og CII samt hybride PDF-fakturaer uden login. Den genkender automatisk syntaks, version og profil, herunder XRechnung, Peppol BIS Billing 3.0, ZUGFeRD, Factur-X og andre profiler af EN 16931. Den validerer derefter filen mod XML-skemaet samt mod Schematron- og forretningsreglerne i den genkendte profil. Valideringsrapporten kan du downloade som PDF eller dele via et link, f.eks. når din support gennemgår en afvist faktura med en kunde.

InvoiceRails-API i din software

InvoiceRails er det OpenPeppol-certificerede Peppol access point fra fino data services. Din software tilslutter InvoiceRails via en REST-API og sender og modtager e-fakturaer gennem den for et vilkårligt antal kunder, efter ønske som white label.

API’en tilbyder valideringen som et selvstændigt endpoint, ligeledes med automatisk profilgenkendelse. Din software kan dermed kontrollere e-fakturaer direkte efter oprettelsen. Hver melding i svaret indeholder regel-ID, alvorlighedsgrad, meldingstekst og placering som XPath. Din software kan gemme validerings-ID’et ved fakturaen og hente resultatet igen i mindst 90 dage.

InvoiceRails validerer hver fil, som din software sender via Peppol, også uden dette kald. Din software skal på forhånd kontrollere, hvilke formater en modtager understøtter.

InvoiceRails kontrollerer også indgående e-fakturaer og overdrager den originale fil sammen med de udlæste fakturadata til din software. En webhook melder enhver ændring i leveringsstatus til din software.

Din software står fortsat for koblingen af felterne fra din datamodel, de letforståelige beskeder i din brugerflade og plausibilitetskontrollerne for obligatoriske oplysninger, som ingen regel dækker.

Ofte stillede spørgsmål

KoSIT’s validator kontrollerer XML-dokumenter mod skema og Schematron. Den indlæste valideringskonfiguration bestemmer, hvilke regler der gælder. KoSIT offentliggør en konfiguration for XRechnung og en for Peppol BIS Billing 3.0, der bygger på OpenPeppols valideringsfiler. Hvis du ikke selv vil vedligeholde regelsættene, kan du integrere valideringen via endpointet i InvoiceRails-API’en, der automatisk genkender profilen. Det tyske finansministerium anbefaler ikke en bestemt validator. Det vigtige er, at din validator bruger de aktuelt gældende versioner af regelsættene.

Validatorerne kan bruge forskellige versioner af regelsættene eller kontrollere filen mod forskellige applikationsspecifikationer. En validator, der kun kontrollerer EN 16931, melder f.eks. ikke overtrædelser af XRechnung-regler som BR-DE-15. Nogle validatorer kontrollerer desuden egne regler, der ikke står i noget officielt regelsæt. Sammenlign derfor først versionsangivelserne, den kontrollerede specifikation og oprindelsen af det meldte regel-ID.

En automatisk afvisning er ikke påkrævet. Ifølge det tyske finansministerium er en validering ikke en direkte forudsætning for den skattemæssige anerkendelse af en faktura. Beslutningen ligger hos dine kunder. Din software bør vise dem valideringsrapporten som grundlag.

Det afgørende er den profil, der står i specifikations-ID’et BT-24. Profilerne MINIMUM og BASIC-WL opfylder ifølge det tyske finansministerium ikke de momsretlige krav til en e-faktura. Din software bør derfor generere en højere profil til e-fakturaer.

Læs videre

Hvad er Peppol BIS Billing 3.0?
E-faktura

Hvad er Peppol BIS Billing 3.0?

Peppol BIS Billing 3.0 er OpenPeppols specifikation for fakturaer og kreditnotaer i Peppol-netværket. Den er en applikationsspecifikation (CIUS) af den europæiske standard EN 16931.

E-fakturering i Belgien
Faktaark

E-fakturering i Belgien

I Belgien har den strukturerede e-faktura i B2B siden 1. januar 2026 været obligatorisk for både afsendelse og modtagelse på samme tid, uden indfasning efter virksomhedsstørrelse.

XRechnung, ZUGFeRD og BIS Billing 3.0: hvilke e-fakturaformater din software bør understøtte
E-faktura

XRechnung, ZUGFeRD og BIS Billing 3.0: hvilke e-fakturaformater din software bør understøtte

Fra 1. januar 2027 skal virksomheder med en samlet omsætning på over 800.000 euro i det foregående år sende e-fakturaer.

Validering, afsendelse og modtagelse via én API

Vi viser, hvordan din software validerer, sender og modtager e-fakturaer via InvoiceRails for et vilkårligt antal kunder.

Se InvoiceRails