https://github.com/atgp/factur-x
PHP library to manage your Factur-X / ZUGFeRD 2.0 PDF invoices files
https://github.com/atgp/factur-x
e-invoice factur-x invoice pdf xml zugferd
Last synced: 2 months ago
JSON representation
PHP library to manage your Factur-X / ZUGFeRD 2.0 PDF invoices files
- Host: GitHub
- URL: https://github.com/atgp/factur-x
- Owner: atgp
- License: mit
- Created: 2018-12-19T07:52:41.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2026-03-12T08:38:58.000Z (3 months ago)
- Last Synced: 2026-03-17T02:50:54.224Z (3 months ago)
- Topics: e-invoice, factur-x, invoice, pdf, xml, zugferd
- Language: PHP
- Size: 278 KB
- Stars: 135
- Watchers: 14
- Forks: 26
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
PHP Factur-X library
------------------
Factur-X is a Franco-German e-invoicing standard which complies with the European e-invoicing standard [EN 16931](https://ec.europa.eu/digital-building-blocks/wikis/display/DIGITAL/Obtaining+a+copy+of+the+European+standard+on+eInvoicing).
The Factur-X specifications are available on the [FNFE-MPE](http://fnfe-mpe.org/factur-x/) website in English and French.
The Factur-X standard is also called [ZUGFeRD](https://www.ferd-net.de/download-zugferd) in Germany.
This library enable you to manage your Factur-X PDF invoices files :
* **Generate Factur-X PDF invoice** from regular PDF invoice and Factur-X XML file
* Using [setasign\Fpdi](https://github.com/Setasign/FPDI)
* **Extract Factur-X XML** from Factur-X PDF invoice
* Using [Smalot\PdfParser](https://github.com/smalot/pdfparser)
* **Validate Factur-X XML** against the official Factur-X XML Schema Definition
* Using PHP native libxml functions
Table of contents:
------------------
- [Requirements](#requirements)
- [Installation](#installation)
- [Usage](#usage)
- [License](#license)
- [Changelog](#changelog)
- [Contributing](CONTRIBUTING.md)
Requirements
------------
- PHP 7.4+
- Composer
- [FPDI](https://github.com/Setasign/FPDI) (MIT License)
- [Smalot](https://github.com/smalot/pdfparser) (LGPL License)
Installation
------------
#### Install with Composer
```bash
composer require atgp/factur-x
```
Usage
-----
You can see the code from test page from "tests" directory, also here some simple examples of implementation :
```php
generate($pdf, $facturxXml);
// Extracts Factur-X XML
$reader = new \Atgp\FacturX\Reader();
$facturxXml = $reader->extractXML($facturxPdf);
// Validates Factur-X XML against official Factur-X XML Schema Definition
$validator = new \Atgp\FacturX\XsdValidator();
if (false === ($isValid = $validator->validate($facturxXml)) {
var_dump($validator->getErrors());
}
// ... or throw exceptions if error(s) are occurred
$validator->validateWithException($facturxXml);
```
More options are available, look at source code for more information.
License
-------
This project is licensed under MIT License
Changelog
---------
- v3.3.0 : 2026-04-17
- Fix automatic tests for PHP 7.4
- Add .gitattributes to exclude files from composer
- v3.2.0 : 2026-03-12
- Cover library with automatic tests
- v3.1.0 : 2026-02-25
- (reader/validator/writer) Handle invalid XML
- (utils) Remove useless ProfileHandler::getFromXml() method
- v3.0.0 : 2026-01-28
- (reader/validator/writer) Throw custom exception to facilitate exception handling
- v2.5.0 : 2026-01-09
- (validator) Upgrade Factur-x XSD to v1.08 — Applicable from 15 January 2026
- (validator) Handle all codes that can be used for credit notes
- v2.4.1 : 2025-11-18
- (reader) Remove backtrace from thrown exception message
- v2.4.0 : 2025-09-24
- (validator) Upgrade Factur-x XSD to v1.07.3
- v2.3.1 : 2025-03-14
- (writer) Fix binary content indicator in header
- v2.3.0 : 2024-12-11
- (ci) Add Github CI : php-stan for PHP versions between 7.4 and 8.4
- v2.2.1 : 2024-10-28
- (reader) Clarify reader extraction method
- v2.2.0 : 2024-10-28
- (validator) Upgrade Factur-x XSD to v1.0.7
- v2.1.0 : 2024-02-26
- (reader) Allow to configure Smalot pdf parser
- v2.0.0 [BC] : 2023-11-06
- Requires php 7.4+
- Refactor classes to clarify uses
- Simplify requirements for "smalot/pdfparser"
- Import external links on generated factur-x pdf
- v1.1.0 : 2019-01-09
- Upgrade Factur-x xsd to v1.0.06
- Fix PDF-A compliance regarding endobj and ICC profile
- v1.0.0 : 2019-01-09
- Requires php 5.6+
- First version of the library to read, check and write factur-x documents