Navigering

fino data services logo

Kunskap · E-faktura

Validera e-fakturor och läs valideringsrapporten rätt

När en e-faktura från din programvara avvisas måste ditt team utifrån valideringsrapporten ta reda på vilket fält som utlöste meddelandet och vem som kan rätta det.

Vi visar hur du läser en valideringsrapport och var valideringen hör hemma i din programvara.

Vad som kontrolleras vid validering av en e-faktura

En validator kontrollerar en e-faktura i tur och ordning mot tre regelverk och registrerar varje avvikelse i en valideringsrapport.

Syntaxens XML-schema

En e-faktura enligt EN 16931 finns i en av två syntaxer, UBL eller UN/CEFACT CII. Alla vanliga tillämpningsspecifikationer bygger på dessa två syntaxer, till exempel XRechnung, ZUGFeRD och Peppol BIS Billing 3.0.

Syntaxens XML-schema fastställer vilka element som är tillåtna, i vilken ordning de står och vilken datatyp de har.

Schemafel har inget regel-ID. XML-parsern rapporterar dem med egna koder, till exempel cvc-complex-type.2.4.a för ett element på en plats där schemat inte förväntar sig det.

I ZUGFeRD är en CII-fil inbäddad i en PDF. Validatorn kontrollerar XML-delen. Vid avvikelser från bilddelen är det denna del som gäller, enligt det tyska finansdepartementets skrivelse (BMF-Schreiben) av den 15 oktober 2025 om införandet av obligatorisk e-faktura.

Affärsreglerna i EN 16931

Affärsreglerna kontrollerar uppgifterna i en e-faktura med avseende på logiska fel, till exempel om obligatoriska fält är ifyllda och om summorna stämmer med varandra. Europeiska standardiseringskommittén (CEN) publicerar dessa regler som Schematron-filer på GitHub, en för UBL och en för CII.

Av regel-ID:ts prefix framgår vilken typ av kontroll det gäller. Regler med BR och ett nummer kontrollerar obligatoriska fält och deras antal, BR-CO kontrollerar beräkningar och beroenden mellan fält, BR-CL kontrollerar kodlistor och BR-DEC antalet decimaler i belopp. Regler som BR-S, BR-AE eller BR-IC kontrollerar uppgifterna för enskilda momskategorier.

CEN-filerna innehåller dessutom syntaxspecifika regler. Regler med prefixet UBL-CR ger till exempel en varning när en UBL-fil innehåller element som inte ingår i datamodellen i EN 16931.

Regler för XRechnung och Peppol BIS Billing 3.0

XRechnung och Peppol BIS Billing 3.0 är tillämpningsspecifikationer av EN 16931, i fackspråket kallade CIUS (Core Invoice Usage Specification). De gör ytterligare fält obligatoriska och kompletterar EN 16931 med egna regler. Nya datafält får en CIUS inte införa.

Reglerna för XRechnung börjar med BR-DE och kommer från den tyska samordningsmyndigheten för IT-standarder (Koordinierungsstelle für IT-Standards, KoSIT). Peppol BIS Billing 3.0 lägger till regler med prefixen PEPPOL-EN16931 och PEPPOL-COMMON samt landsspecifika regler.

Specifikationsidentifieraren i BT-24 anger vilken tillämpningsspecifikation som gäller för filen. KoSIT:s validator väljer utifrån denna identifierare rätt valideringsscenario. En felaktig eller föråldrad identifierare kan därför leda till att filen kontrolleras mot andra regler eller avvisas.

Vad en validering inte kontrollerar

En validator upptäcker inte om skattesatsen passar leveransen eller om beskrivningen av leveransen är tillräcklig.

Enligt det tyska finansdepartementet måste alla obligatoriska momsuppgifter finnas i e-fakturans strukturerade del. En hänvisning till en bilaga med beskrivningen av leveransen räcker inte. Ett artikelnamn som ”se bilaga” i BT-153 klarar ändå valideringen, eftersom ingen regel bedömer innehållet i detta fält.

KoSIT och Forum elektronische Rechnung Deutschland (FeRD) har publicerat en tabell som kopplar de obligatoriska uppgifterna enligt den tyska momslagen till motsvarande BT-fält. Med hjälp av tabellen kan du bestämma vilka obligatoriska uppgifter din programvara bör säkra med egna rimlighetskontroller.

En valideringsrapports uppbyggnad

Varje post i valideringsrapporten innehåller i regel fyra uppgifter.

Regel-ID

Regel-ID:t, till exempel BR-CO-15 eller BR-DE-2, hänvisar till regeln i dokumentationen för respektive regelverk.

Allvarlighetsgrad

En validator markerar varje meddelande som fel eller som varning. I Peppol-reglerna kallas fel fatal. En varning leder i regel inte ensam till avvisning. Vissa validatorer ger dessutom upplysningar, alltså rekommendationer för en korrekt implementering utan påverkan på resultatet. KoSIT-validatorn rekommenderar i slutet av sin rapport att dokumentet antingen godtas eller avvisas.

Peppol inför ofta nya regler först som varning och uppgraderar dem till fel i en senare release. Med version 3.0.21 blev till exempel reglerna PEPPOL-COMMON-R052 och PEPPOL-COMMON-R053 fel i stället för varningar, enligt releaseanteckningarna för Peppol BIS Billing 3.0.

Position

Positionen är ett XPath-uttryck som pekar på det berörda elementet i XML-filen. Samma BT-nummer ligger på olika ställen i UBL och CII. Fakturabeloppet inklusive moms (BT-112) står i UBL i elementet cbc:TaxInclusiveAmount under cac:LegalMonetaryTotal, i CII i elementet ram:GrandTotalAmount under ram:SpecifiedTradeSettlementHeaderMonetarySummation.

För regler som jämför flera fält pekar positionen ofta på ett överordnat element. Värdet som utlöser meddelandet hittar du då via meddelandetexten.

Meddelandetext

Meddelandetexten beskriver regeln och nämner oftast de berörda BT-numren. Meddelandet för BR-CO-15 säger till exempel att fakturabeloppet inklusive moms (BT-112) måste motsvara summan av fakturabeloppet exklusive moms (BT-109) och momsbeloppet (BT-110).

Sedan version 3.0.21 börjar texterna i Peppol-reglerna med regel-ID:t.

Utvärdera valideringsrapporter i rätt ordning

En lång valideringsrapport går ofta tillbaka på ett fåtal orsaker.

  1. Åtgärda schemafel

    Så länge filen inte uppfyller schemat säger resultaten av affärsreglerna inte mycket eller saknas helt. Åtgärda därför först schemafelen i exporten och validera sedan filen på nytt.

  2. Gruppera poster efter regel-ID

    Ett fel i mappningen kan uppstå i varje fakturarad. En faktura med 40 rader ger då 40 poster för samma regel, som alla går tillbaka på en enda orsak. Utvärdera därför rapporten efter regel-ID.

  3. Känn igen följdfel

    Ett saknat element kan bryta mot flera regler samtidigt. Om momsuppdelningen (BG-23) saknas rapporterar validatorn till exempel BR-CO-18 och dessutom regler för den berörda momskategorin, som BR-S-01. Åtgärda först orsaken och validera på nytt innan du hanterar de övriga meddelandena ett i taget.

  4. Via BT-numret till din egen datamodell

    BT-numret kopplar valideringsrapporten till din programvara. Underhåll en mappning från varje BT-nummer till databasfältet, till formulärfältet i ditt gränssnitt och till ansvaret. Ansvaret anger om det är ditt team eller din kund som åtgärdar ett fel, till exempel när grunddata saknas.

  5. Bedöm och dokumentera varningar

    Bestäm för varje varning om du åtgärdar den eller medvetet accepterar den, och dokumentera beslutet. Kontrollera vid varje ny release om en accepterad varning uppgraderas till fel.

Typiska felorsaker per regelgrupp

Regelgruppen visar ofta redan var i din programvara rättelsen ska göras.

Schemafel utan regel-ID

Orsaken ligger i elementordningen, namnrymden eller en felaktig datatyp i exporten. Rättelsen görs i exportfunktionen, en gång för alla kunder.

BR med nummer

Orsaken är ett obligatoriskt fält som inte är mappat eller som är tomt i grunddata. Rättelsen görs i mappningen eller vid det obligatoriska fältet i gränssnittet.

BR-CO och BR-DEC

Orsaken ligger i summor, avrundning, rabatter och tillägg på dokumentnivå. Rättelsen görs i beräkningslogiken för fakturaskapandet.

BR-CL

Orsaken är en föråldrad eller egen kod, till exempel för måttenheter eller länder. Rättelsen görs i kodlistorna i din programvara.

BR-S, BR-AE, BR-IC och fler kategorier

Momskategori, skattesats och undantagsskäl stämmer inte överens. Rättelsen görs i skattelogiken och i artikelgrunddata.

UBL-CR

Exporten innehåller UBL-element utanför datamodellen i EN 16931. Rättelsen görs i exportfunktionen.

BR-DE

Säljarens kontaktuppgifter, betalningsuppgifter eller köparreferensen saknas. Rättelsen görs oftast i dina kunders grunddata.

PEPPOL-EN16931 och PEPPOL-COMMON

Den elektroniska adressen saknas eller en identifierare har fel format. Rättelsen görs i grunddata och i hanteringen av Peppol-ID:n.

Saknad köparreferens i XRechnung (BR-DE-15)

Regeln BR-DE-15 rapporterar en saknad köparreferens i BT-10. För fakturor till den offentliga förvaltningen står myndighetens Leitweg-ID där. För B2B-fakturor räcker enligt det tyska finansdepartementet ur momssynpunkt en platshållare som ”-”, om fakturamottagaren inte anger någon egen identifierare. Din programvara kan därför förifylla fältet för B2B-fakturor med en platshållare som dina kunder kan skriva över.

Avrundningsdifferenser i momsen (BR-S-09)

Regeln BR-S-09 jämför momsbeloppet för kategorin normalskattesats med produkten av beskattningsunderlag och skattesats. Om din programvara avrundar momsen per rad och adderar beloppen kan summan avvika. Med många rader kan avvikelsen bli större än den tolerans som regeln tillåter. Beräkna därför skattebeloppet per kategori utifrån beskattningsunderlag och skattesats, så som regeln föreskriver.

Bygg in validering i din programvara

Valideringen hör hemma på fem ställen i din programvara och din utvecklingsprocess.

Före sändning

Din programvara bör validera varje e-faktura direkt efter att den skapats och stoppa sändningen vid fel. Dina kunder har svårt att tolka ett regel-ID eller ett XPath-uttryck. Översätt därför de regler som dina kunder själva kan åtgärda till en anvisning vid det berörda formulärfältet. Anvisningen för BR-DE-6, telefonnumret till säljarens kontaktperson i BT-42, kan till exempel lyda ”Ange ett telefonnummer för frågor”.

Fel som beror på din mappning eller din beräkningslogik kan din kund inte åtgärda. Sådana fel bör gå som ett internt meddelande till ditt team.

Vid mottagning

Din programvara bör även validera inkommande e-fakturor och visa resultatet vid verifikationen. Spara originalfilen oförändrad och valideringsrapporten som ett separat dokument bredvid. Det tyska finansdepartementet kräver att åtminstone den strukturerade delen av en e-faktura arkiveras oförändrad i sin ursprungliga form.

Om en inkommande faktura innehåller fel kan din kund begära en korrigerad faktura från avsändaren. Din programvara kan stödja detta steg, till exempel med en förberedd förfrågan till avsändaren som innehåller valideringsrapporten.

I automatiserade tester

Skapa en samling testfakturor som täcker dina fakturatyper med deras koder, till exempel 380 för en faktura och 384 för en korrigerad faktura. Täck dessutom in varje momskategori som dina kunder använder. Därtill kommer rabatter och tillägg samt varje syntax som din programvara skapar. Ta också med medvetet felaktiga filer och kontrollera att validatorn avvisar dem.

KoSIT-validatorn är ett program med öppen källkod för kommandoraden och kan byggas in i en byggpipeline. KoSIT tillhandahåller dessutom en testsvit med exempelfakturor som lämpar sig som utgångspunkt för din egen samling.

Efter varje uppdatering av regelverken

Regelverken ändras även utan nytt versionsnummer. KoSIT publicerar regelbundet paket med felrättningar för XRechnung 3.0.2, senast i versionen av den 31 augusti 2026. XRechnung 3.0 gäller till minst den 31 juli 2027.

Förhandsversionen av specifikationen XRechnung 4.0 publicerades den 15 september 2026. Den är uttryckligen inte avsedd för produktiv användning, utan ger dig en tidig överblick över nya och ändrade funktioner. Den slutliga versionen väntas publiceras våren 2027 tillsammans med de tekniska komponenterna.

OpenPeppol publicerar regelbundet nya releaser av Peppol BIS Billing 3.0, under de senaste åren i maj och i november. Version 3.0.21 publicerades den 20 maj 2026 och är bindande sedan den 17 augusti 2026.

Planera för varje release ett fast datum då du validerar din testsamling mot de nya reglerna. Ange i varje valideringsrapport med vilken version av validator och regelverk den togs fram. Då kan du förstå ett resultat även om reglerna har ändrats sedan dess. Inför bytet till XRechnung 4.0 bör din testmiljö kunna kontrollera båda versionerna parallellt.

Utvärdera valideringsrapporter för alla kunder

Om din programvara skapar e-fakturor för många kunder lönar det sig att utvärdera valideringsrapporterna för alla kunder sammantaget. Om samma regel-ID plötsligt dyker upp hos många kunder ligger orsaken troligen i mappningen eller i ett nytt regelverk. Om det bara förekommer hos en kund ligger orsaken snarare i den kundens grunddata.

Validering med InvoiceRails

Stegen i denna artikel kan du genomföra helt på egen hand. Engångsinsatsen för det är överskådlig, den löpande insatsen däremot inte: regelverk, kodlistor och valideringskonfigurationer ändras flera gånger om året, och varje ändring måste in i dina tester, din sändning och din releaseplanering.

Validering, sändning och underhåll av regelverken kan därför också lämnas över till en certifierad Peppol-accesspunkt som InvoiceRails.

Validator för e-fakturor för enskilda kontroller

Den kostnadsfria validatorn för e-fakturor från InvoiceRails kontrollerar XML-filer i UBL och CII samt hybrida PDF-fakturor, utan inloggning. Den känner automatiskt igen syntax, version och profil, bland annat XRechnung, Peppol BIS Billing 3.0, ZUGFeRD, Factur-X och andra profiler av EN 16931. Därefter validerar den filen mot XML-schemat samt mot Schematron- och affärsreglerna för den identifierade profilen. Valideringsrapporten kan du ladda ner som PDF eller dela via länk, till exempel när din support går igenom en avvisad faktura med en kund.

InvoiceRails-API:et i din programvara

InvoiceRails är den OpenPeppol-certifierade Peppol-accesspunkten från fino data services. Din programvara ansluter till InvoiceRails via ett REST-API och skickar och tar emot e-fakturor för valfritt antal kunder, om så önskas som white label.

API:et erbjuder valideringen som en egen endpoint, även den med automatisk profilidentifiering. Din programvara kan därmed kontrollera e-fakturor direkt efter att de skapats. Varje meddelande i svaret innehåller regel-ID, allvarlighetsgrad, meddelandetext och position som XPath. Din programvara kan spara validerings-ID:t vid fakturan och hämta resultatet igen i minst 90 dagar.

InvoiceRails validerar varje fil som din programvara skickar via Peppol, även utan detta anrop. Din programvara måste i förväg kontrollera vilka format en mottagare stöder.

InvoiceRails kontrollerar även inkommande e-fakturor och lämnar över originalfilen tillsammans med de utlästa fakturauppgifterna till din programvara. En webhook meddelar din programvara varje ändring av leveransstatusen.

Din programvara ansvarar fortfarande för mappningen av fälten från din datamodell, de begripliga anvisningarna i ditt gränssnitt och rimlighetskontrollerna för obligatoriska uppgifter som ingen regel täcker.

Vanliga frågor

KoSIT:s validator kontrollerar XML-dokument mot schema och Schematron. Den inlästa valideringskonfigurationen avgör vilka regler som tillämpas. KoSIT publicerar en konfiguration för XRechnung och en för Peppol BIS Billing 3.0, som bygger på OpenPeppols valideringsfiler. Om du inte vill underhålla regelverken själv kan du integrera valideringen via InvoiceRails-API:ets endpoint, som känner igen profilen automatiskt. Det tyska finansdepartementet rekommenderar ingen bestämd validator. Det viktiga är att din validator använder de för närvarande gällande versionerna av regelverken.

Validatorerna kan använda olika versioner av regelverken eller kontrollera filen mot olika tillämpningsspecifikationer. En validator som bara kontrollerar EN 16931 rapporterar till exempel inga överträdelser av XRechnung-regler som BR-DE-15. Vissa validatorer kontrollerar dessutom egna regler som inte finns i något officiellt regelverk. Jämför därför först versionsuppgifterna, den kontrollerade specifikationen och ursprunget för det rapporterade regel-ID:t.

En automatisk avvisning är inte nödvändig. Enligt det tyska finansdepartementet är en validering inte en direkt förutsättning för att en faktura ska godtas skattemässigt. Beslutet ligger hos dina kunder. Din programvara bör visa dem valideringsrapporten som underlag.

Avgörande är den profil som anges i specifikationsidentifieraren BT-24. Profilerna MINIMUM och BASIC-WL uppfyller enligt det tyska finansdepartementet inte momskraven på en e-faktura. Din programvara bör därför skapa en högre profil för e-fakturor.

Läs vidare

Vad är Peppol BIS Billing 3.0?
E-faktura

Vad är Peppol BIS Billing 3.0?

Peppol BIS Billing 3.0 är OpenPeppols specifikation för fakturor och kreditnotor i Peppol-nätverket. Den är en tillämpningsspecifikation (CIUS) av den europeiska standarden EN 16931.

E-faktura i Belgien
Faktablad

E-faktura i Belgien

I Belgien är den strukturerade e-fakturan inom B2B sedan den 1 januari 2026 obligatorisk för både sändning och mottagning samtidigt, utan stegvis införande efter företagsstorlek.

XRechnung, ZUGFeRD och BIS Billing 3.0, vilka e-fakturaformat din programvara bör stödja
E-faktura

XRechnung, ZUGFeRD och BIS Billing 3.0, vilka e-fakturaformat din programvara bör stödja

Från den 1 januari 2027 måste företag i Tyskland med en total omsättning på mer än 800 000 euro föregående år skicka e-fakturor.

Validering, sändning och mottagning via ett API

Vi visar hur din programvara validerar, skickar och tar emot e-fakturor via InvoiceRails, för valfritt antal kunder.

Se InvoiceRails