Skip to main content

Factur-X: electronic invoicing standard for Germany & France

Project description

Factur-X Python library

Factur-X is the e-invoicing standard for France and Germany. The Factur-X specifications are available on the FNFE-MPE website in English and French. The Factur-X standard is also called ZUGFeRD 2.0 in Germany.

The main feature of this Python library is to generate Factur-X invoices from a regular PDF invoice and a Factur-X compliant XML file.

This lib provides additionnal features such as:

  • extract the Factur-X XML file from a Factur-X PDF invoice,

  • check a Factur-X XML file against the official XML Schema Definition.

Some of the features provided by this lib also work for ZUGFeRD 1.0 (the ancestor of the Factur-X standard).

Installation

This library works both on python 2.7 and python 3.

To install it for python 3, run:

sudo pip3 install --upgrade factur-x

To install it for python 2.7, run:

sudo pip install --upgrade factur-x

Usage

from facturx import generate_facturx_from_file

facturx_pdf_invoice = generate_facturx_from_file(regular_pdf_invoice, facturx_xml_file)

To have more examples, look at the source code of the command line tools located in the bin subdirectory.

Command line tools

Several command line tools are provided with this lib:

  • facturx-pdfgen: generate a Factur-X PDF invoice from a regular PDF invoice and an XML file

  • facturx-pdfextractxml: extract the Factur-X XML file from a Factur-X PDF invoice

  • facturx-xmlcheck: check a Factur-X XML file against the official Factur-X XML Schema Definition

  • facturx-webservice: implements a REST webservice to generate a Factur-X PDF invoice from a regular PDF and an XML file (python3 only, requires Flask)

All these commande line tools have a -h option that explains how to use them and shows all the available options.

Licence

This library is published under the BSD licence (same licence as PyPDF4 on which this lib depends).

Contributors

Changelog

  • Version 1.8 dated 2020-01-16

    • New tool facturx-webservice which implements a REST webservice using Flask to generate a Factur-X PDF invoice via a simple POST request.

    • New argument ‘attachments’ for generate_facturx_from_file() which replaces argument additional_attachments: * Possibility to set a filename for the attachment different from filename of the filepath * Possibility to set creation dates for attachments * Update script facturx-pdfgen to use the new attachments argument

  • Version 1.7 dated 2020-01-13

    • Fix bug in release 1.6 in XMP: variables were not replaced by their real value

  • Version 1.6 dated 2020-01-09

    • Generate XMP (XML-based PDF metadata) via string replacement instead of using XML lib

  • Version 1.5 dated 2019-11-13

    • Fix bug in generate_facturx_from_file() when using argument additional_attachments

  • Version 1.4 dated 2019-07-24

    • Update Factur-X XSD to the final version of Factur-X v1.0.04

    • Support XML extraction with ZUGFeRD invoices using ‘zugferd-invoice.xml’ filename (instead of the filename ‘ZUGFeRD-invoice.xml’ specified by the standard)

  • Version 1.3 dated 2019-06-12

    • Add XSD files for Extended profile in the Python package

  • Version 1.2 dated 2019-06-12

    • add support for the Extended profile

    • validate XML for Minimum and Basic WL profiles with the XSD of profile EN 16931, as asked by Cyrille Sautereau

    • minor improvements in the code for /Kids

  • Version 1.1 dated 2019-04-22

    • Improve support for embedded files extraction by adding support for /Kids

  • Version 1.0 dated 2019-01-26

  • Version 0.9 dated 2019-01-25

  • Version 0.8 dated 2018-06-10

    • Make pretty_print work for XMP file, for better readability of that file

  • Version 0.7 dated 2018-05-24

    • Fix XMP structure under /x:xmpmeta/rdf:RDF/rdf:Description (use XML tags instead of XML attributes)

    • declare PDF-1.6 instead of PDF-1.3 (still declared by default by pyPDF2)

  • Version 0.6 dated 2018-05-01

    • Now fully PDF/A-3 compliant with additionnal attachments (tested with veraPDF)

    • facturx-pdfgen: don’t overwrite by default and add –overwrite option

    • Add factur-x library version number in metadata creator entry

  • Version 0.5 dated 2018-03-29

    • Fix XMP metadata structure

    • Now fully PDF/A-3 compliant when the input PDF file is PDF/A compliant (tested with veraPDF). This implied copying /OutputIntents and /ID datas from source PDF to Factur-X PDF.

    • Fix support for additionnal attachments: they can now all be saved with Acrobat Reader

    • Improve XML extraction from PDF Factur-x file

  • Version 0.4 dated 2018-03-27

    • Factur-x specs say /AFRelationship must be /Data (and not /Alternative)

    • Update Factur-X XSD to v1.0 final

    • Add support for additionnal attachments

    • Add factur-x lib version in Creator metadata table

    • Add /PageMode = /UseAttachments, so that the attachments are displayed by default when opening Factur-X PDF invoice with Acrobat Reader

    • Improve and enrich PDF objects (ModDate, CheckSum, Size)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

factur-x-1.8.tar.gz (59.4 kB view details)

Uploaded Source

File details

Details for the file factur-x-1.8.tar.gz.

File metadata

  • Download URL: factur-x-1.8.tar.gz
  • Upload date:
  • Size: 59.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/2.7

File hashes

Hashes for factur-x-1.8.tar.gz
Algorithm Hash digest
SHA256 9ed05ef46f6c6a2ea2398ef75d39781599878a7f73b83e6ace98e52f587e3737
MD5 a4a0ed767ac3e6b03c66cf8a6fadfd41
BLAKE2b-256 f98a7bf6d049c533c3e1160aa548b52b20848836b2de3a5806d2fe48c2f00ace

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page