darvis / ubl-peppol
UBL/PEPPOL service voor het genereren van facturen volgens de UBL/PEPPOL standaard
Requires
- php: ^8.2
- ext-dom: *
Requires (Dev)
- orchestra/testbench: ^9.0|^10.0
- pestphp/pest: ^3.0
Suggests
- illuminate/support: Required for Laravel integration (^11.0|^12.0)
Provides
None
Conflicts
None
Replaces
None
README
PHP library for generating UBL 2.1 invoices compliant with PEPPOL BIS Billing 3.0. Supports Belgian (EN 16931) and Dutch implementations.
Installation
composer require darvis/ubl-peppol
Requirements: PHP 8.2+, DOM extension
Quick Start (Standalone)
use Darvis\UblPeppol\UblBeBis3Service; $ublService = new UblBeBis3Service(); $xml = $ublService->generateInvoice($invoiceData); file_put_contents('invoice.xml', $xml);
See examples/ for complete implementations.
Laravel Integration
Additional features: Peppol network integration, logging, artisan commands.
php artisan vendor:publish --tag=ubl-peppol-config php artisan migrate
Documentation
Authoritative source for PEPPOL rules
For PEPPOL BIS Billing 3.0 business rules, this project uses the official BIS documentation as the source of truth:
When reviewing, interpreting, or updating rule compliance in this package (BE and NL), always consult that BIS page first.
- API Reference
- Belgian Implementation
- Dutch Implementation
- VIES VAT Validation
- Company Registration Validation
- Laravel Integration
- Validation
- Troubleshooting
Author
Arvid de Jong
Email: info@arvid.nl
Website: arvid.nl
Contributing
Contributions are welcome! Feel free to create issues or submit pull requests.
License
This package is open-source software licensed under the MIT License.
Credit Notes Support (v1.6.0)
Generate PEPPOL-compliant Credit Notes with automatic validation:
use Darvis\UblPeppol\UblBeBis3Service; $service = new UblBeBis3Service(); $service->createCreditNoteDocument(); // Not createDocument()! $service->addCreditNoteHeader('C2026-001', '2026-01-21'); $service->addBillingReference('F2026-050', '2026-01-15'); // REQUIRED (BR-55) // ... add parties, lines, totals ... $xml = $service->generateXml();
Key Points
- Use
createCreditNoteDocument()instead ofcreateDocument() addBillingReference()is REQUIRED (PEPPOL BR-55)- All amounts must be POSITIVE (credit nature = document type 381)
- Use
addCreditNoteLine()instead ofaddInvoiceLine()
See docs/credit-notes.md for full documentation.