Syllabus
This is the attempt to collect e-procurement/ZUGFeRD/XRechnung/Factur-X related training topics and texts under a free license (public domain).
Currently we’re collecting topics and why they may be important. Fundamentally it’s a german view but it can be extended to other countries.
Until we have conducted more trainings and can better specify the content and time needed for each chapter we will put A-C if it’s a small, medium or large topic.
An example of a good syllabus is the ITSQB syllabus and we might later use their learning levels
-
K1: Remember
-
K2: Understand
-
K3: Apply
Attributes: Dependencies, how long, how important, how interactive, how known, how autonomous, how popular
Legal and compliance
The European legal situation for e-procurement, in particular in Germany for B2G invoices
GoBD The european legal situation for e-orders
and e-invoices, in particular in Germany for B2G invoices
Auditing requirements
The auditing requirements of the GoBD vis a vis tools to store e-invoices, their processes, their backups and their as well as their unalterability
Procedural documentation
The requirements of the GoBD as regards to procedural documentation e.g. of the decision if the XML or the PDF-part of an invoice be processed
VAT regulations
Why and how the legislation of identical copies (Inhaltsgleiche Mehrstücke) affected Factur-X/ZUGFeRD
EU/2014/55 Directive EU/2014/55 of the European Commision was the
start of a unified requirement vis a vis all European member countries to be able to process electronic invoices
EN16931
CEN EN16931-1 – EN16931-5 is the standard to aid EU/2014/55. We will have a look e.g. at the eligible syntaxes and the calculation rules.
E-Government-Gesetz
The german E-Government-Gesetz is the german ratification of EU/2014/55 and additionally to enforcing the authorities to accept e-invoices, it also prohibits most vendors to further send paper invoices
E-Rechnungs-VO
The E-Rechnungs-Verordnung aids the E-Government-Gesetz and e.g. established deadlines until when the migration has to take place.
E-Rechnungen international
We’ll have a look at special requirements of certain countries, e.g. digital signature (Hungary) or Rappenrundung (Switzerland)
Gross price definition
In germany, gross is often translated as Brutto, including VAT that conflicts with the definition in EN16931, CII and UBL where gross is more of a basic list price, without VAT
Substitutional scans
The GoBD imposes certain requirement on the processes and tools if paper invoices are to be destroyed after their scan.
Invoice Recognition and ZUGFeRD We cover the topic if and how potentially
incomplete OCRs can still build a valid Factur-X file and if profiles are upwards compatible.
Paper-hidden requirements
Some XML requirements, like VAT type codes, are now required and were never displayed on any paper invoice.
B2B: Continuous Transaction Controls
FatturaPA, How Italy introduced B2B e-invoicing, how France introduces B2B-e-invoicing, CTC models, situation in Germany
History and generic info
How the standards have evolved and what are their purposes
EDI, EDIFACT and APERAK
Electronic Data Interchange, EDI, combines the meaning of a format with the addressing and exchange of a protocol. Despite being more complex, EDI is much older than XML based e-invoicing, and still in use today. The introduction of (international) e-invoicing standards in germany in fact dates back to the 1977 introduction of EDIFACT.
APERAK
The XML Application error and acknowledgement messages can be used to signal acceptance or rejection of invoices
unstructured vs structured invoices
Unstructured invoices are human-readable (e.g. image files, TIFF, PDF even with OCR layer), structured invoices are machine readable (e.g. XML files). Unstructured invoices are generally easier to obtain, e.g. by scanning paper invoices, but they can not be processed automatically.
UN/CEFACT vs UBL UBL was initiated by the UN/CEFACT
but later replaced by it’s own standard. There are slight differences between OASIS UBL and UN/CEFACT, their extentability, their governance, and their institutions.
ZUGFeRD v1
In 2014 ZUGFeRD defined how to embed XML in PDF to get a hybrid invoice, both structured and unstructured at the same time. PDF/A was selected as the carrier, a customized UN/CEFACT CII/2013b for the data and three subsets („profiles“) were defined.
ZUGFeRD v2
ZUGFeRD version 2~=Factur-X version 1 switched UN/CEFACT CII from a customized 2013b to a unchanged 2016b version, introduced first two more profiles and renamed one. Later, in v2.1.1, the concept of reference profiles were conceived.
Factur-X
Factur-X 1 started as a french fork of ZUGFeRD 2 led by the FNFE. The „Factur-X namespace“ soon also became the recommended name(space?) for ZUGFeRD.
Order-X
Order-X is the sister standard to Factur-X, with in PDF embedded XML of orders instead of invoices. Process-wise it also supports proposal and acceptance of changes. For this purpose, UN/CEFACT CrossIndustryOrder 2020b is used, the embedded file is called Order-X.xml.
Deliver-X
GS1 and BVL were working on hybrid electronic despatch advices based on UN/CEFACT Cross Industry Despatch Advice, crossing the gap between orders and invoices, which will be the basis for the upcoming Deliver-X standard
unit codes and other codelists
The different lists of the different standards for eligible attribute values have been centralized by the CEF, who republish them as excel. They are binding for EN16931, i.e. not only CII but also UBL.
XRechnung
The XRechnung is the requirements specification of the german government vis a vis electronic invoices. XML-wise they are mapped to CII and UBL and it makes certain attributes mandatory, e.g. the postal address of the receiver and a seller contact as well as the governmental routing number „Leitweg-ID“. Due to political reasons cash discounts are handled using a proprietary format, not XML. This lesson clarifies Business Term IDs, how to find them (and their cardinalities) in ZUGFeRD’s technical appendix, which industry recommendation exists, what the difference is between the two XRechnung profiles, how to convert between the XML formats, how to validate XRechnung, how to visualize them and how they are mapped to Peppol-IDs to facilitate automatic transmission.
Invoice attachments
Invoice attachments like protocols, bills of material or measurements are added either as embedded file within the PDF (Factur.-X) or base64-encoded in the XRechnung.
CIUS vs additional data Core Invoice Usage
Specifications, CIUS, like the german XRechnung, can make optional attributes mandatory, Andreas Starke’s additional data can cater additional structured attributes for electronic invoices.
Industry recommendations
E.g. the Deutsche Bahn or the construction industry has published requirements vis á vis Xrechnung respective ZUGFeRD files, and the french Chorus Pro has published requirements both for french B2G as well as for french B2B invoices.
PEPPOL
PEPPOL is a international EDI organization, based on UBL messages and the AS/4 protocol, which implement a four-corner model for their paying customers.
Tools
Software stack/Creation tools
Free software and editors which perform e.g. schema validation for XML authoring
XML
XRechnung and Factur-X/ZUGFeRD consist of XML files, this convers XML’s validity, in general, tools to validate, address, mix and transform XML and gives an intro to the two most important XML formats for electronic invoices, UN/CEFACT Cross Industry Invoice (used for Factur-X/ZUGFeRD and XRechnung) and UBL (used for XRechnung and Peppol)
Well-formedness
Describes how XML is a hierarchical format and what all XML files must and must not have, as well as a authoring tool to ensure that
Schema
Schema files also allow to specify which format e.g. attributes should take, e.g. that the total amount has to consist of numbers with two decimals.
UN/CEFACT CII, CIO and CIDA
UN/CEFACT CII is a standard used for electronic invoices, the „MUG“ has been determined as it’s european subset. For orders, CIO can be used. The current version, schema file, the root, the basic elements and the basic namespaces are described.
UBL
UBL is another XML invoice standard. Alternative XML structures and why they are deprecated are discussed (e.g. OpenTrans, FinInvoice). Here as well the current version, schema file, the root, the basic elements and the basic namespaces are described.
XSLT
XSL transformations allow to transform any XML file in one format into anotther file in the same, or a different format.
PDF is the second pillar of hybrid invoices
Creation
Ghostscript is one of the very few free open source tools capable of converting PDF to PDF/A. It is often used in virtual PDF printing software and actually Ghostscript can read and process PDF files so well that it is occasionally used to fix even corrupted PDFs. Even Factur-X comliant PDF/A-3 can be created with Ghostscript.
Structure analysis
Open-Source tools like itext RUPS, Exiftool, or the structure view of the commercial Acrobat Pro highlight the internal hierachy or metadata within the PDF files.
PDF-A
This lesson will discuss the difference between PDF and it’s archival counterparts, PDF/A-1 to 4 and why it is important to at least use PDF/A-1
Mustang
How Mustang can be used and embedded
Validation
Validation with the command line tool, meaning of the error types. How to follow up on rounding errors.
Conversion
How the commandline can be used to convert ZUGFeRD from v1 to v2, from CII to UBL and (for the purpose of visualization) from CII to HTML. How Mustang can be used in automated tests.
Visualization
Integration
How to embed the Mustang Library and the Mustang validator in Java software. How to facilitate checks (and tests, e.g. the HATE test) if the calculation match. How XRechnung can be extracted from the invoice class and how invoices can be parsed either coarse or fine.
-
Use Mustang to extract, combine, convert to HTML or UBL and/or validate
-
Use Kosit to validate XRechnung
-
Use Kosit to display HTML, PDF
-
How to apply schematron the XSLT way
-
How to identify a rounding error in the schematron
-
correction of various invalid XML invoices
-
correction of invalid PDF invoices
-
correct this invoice: 50% eggs were broken
-
make this order a delivery, invoice
-
Xpath authoring
-
Assign Which BT is which attribute
-
What is the correct unit code?
-
How to calculate correctly: The HATE test, gross prices
-
How to find my cardinality?
-
May I use this element?
-
Getting aquainted with rounding errors in official schematrons