NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #3467 most downloaded on Packagist
A modern object-oriented PHP library to create valid UBL and Peppol BIS 3.0 files
Last release 8 months ago
09 Feb 2026
Release timing varies
gaps range from 2 weeks to 4 months
Rarely documented
notes for 10 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
84 releases · first in 2018
This release fixes parsing of UBL invoices containing large embedded attachments.
This release fixes parsing of UBL invoices containing large embedded attachments.
LIBXML_PARSEHUGE to support parsing UBL documents with large base64-encoded PDF attachments (>10MB). Previously, libxml would throw "huge text node" errors when encountering large embedded binary objects. (Fixes #168)This release adds support for AdditionalItemProperty in Items and improves the robustness of the CommodityClassification reader.
This release adds support for AdditionalItemProperty in Items and improves the robustness of the CommodityClassification reader.
cac:AdditionalItemProperty elements. Items can now contain additional properties with name/value pairs. (Credits: @vtsiountas)CommodityCode element as fallback when ItemClassificationCode is not present. This prevents "Trying to access array offset on null" warnings when parsing UBL files that use CommodityCode. (Fixes #167)One column per quarter.
This release adds support for the IssueTime field in Invoice documents.
This release adds support for self-billing credit notes and new getter methods for ID properties.
This release adds support for self-billing credit notes and new getter methods for ID properties.
CreditNoteTypeCode when deserializing credit notes, enabling proper handling of self-billing credit notes (UNCL1001 code 261).getCustomizationId() and getProfileId() getter methods to retrieve customization and profile identifiers.SELF_BILLING_CREDIT_NOTE constant (261) for self-billing credit note documents.This release adds support for UBL 2.1 DebitNote documents and fixes SettlementPeriod date handling to comply with Peppol BIS 3.0 specification.
This release adds support for UBL 2.1 DebitNote documents and fixes SettlementPeriod date handling to comply with Peppol BIS 3.0 specification.
DebitNote and DebitNoteLine classes, Generator::debitNote() method, and Reader support.StartDate and EndDate optional per Peppol BIS 3.0 spec (BR-CO-19) - at least one of the dates must be present instead of requiring both.SettlementPeriod.This release includes significant improvements to UBL invoice parsing, new features for tax handling, and several bug fixes for XML serialization.
This release includes significant improvements to UBL invoice parsing, new features for tax handling, and several bug fixes for XML serialization.
cbc:TaxCurrencyCode on invoices. (Credits: @CasperBE)cac:TaxSubtotal elements from cac:TaxTotal instead of only the first one. (Credits: @CasperBE)cac:PayeeParty with a dedicated class that properly handles its different structure. (Credits: @CasperBE)cac:TaxCategory on cac:AllowanceCharge elements. (Credits: @CasperBE)OrderReference, ProjectReference, ContractDocumentReference, and InvoiceDocumentReference. (Credits: @TNAJanssen)TaxAmount values.cbc:BaseQuantity optional in Price XML serialization, aligning with the UBL 2.1 schema specification. Previously it was incorrectly written with a 0 value even when not set. (Credits: @hevesi)ActualDeliveryDate to properly cast to a DateTime object. (Credits: @CasperBE)NumberFormatter: Fixed PHP 7.4 compatibility by removing trailing commas in function signatures that were only supported in PHP 8.0+.
format() method for improved readability - simplified decimal point detection by always using localeconv(), applied consistent code style, and clarified comments explaining locale decimal point usage.Full Changelog: v2.0.2...v2.0.3
This release fixes a TypeError that occurred when using InvoiceTypeCode constants with strict types enabled.
This release fixes a TypeError that occurred when using InvoiceTypeCode constants with strict types enabled.
Note: This release contains a breaking change . Please refer to the Upgrading Guide .
This release includes bug fixes for XML deserialization and number formatting, along with a cleanup
of deprecated methods.
Note: This release contains a breaking change. Please refer to the Upgrading
Guide.
TaxCategory from TaxSubTotal during XMLTaxTotal information. (Credits: @CasperBE)Invoice::setSupplierAssignedAccountID() andInvoice::getSupplierAssignedAccountID(). Use AccountingParty::setSupplierAssignedAccountId()AccountingParty::getSupplierAssignedAccountId() instead. (Credits: @CasperBE)See the upgrade guide for migration details:
UPGRADING.md
Note: This is a major version release containing breaking changes . Please refer to the Upgrading Guide .
This release introduces the ability to deserialize XML files into object trees. It also adds support for Carbon 3.x and Doctrine Collections 2.x, along with various updates to UBL structures.
Note: This is a major version release containing breaking changes. Please refer to the Upgrading Guide.
xmlDeserialize support for the CreditNote class to parse <cac:CreditNoteLine> elements. (Credits: @RoanB)<cac:DespatchDocumentReference> to <Invoice>. (Credits: @fMads)<cac:ReceiptDocumentReference> to <Invoice>.<cac:OriginatorDocumentReference> to <Invoice>.0225) to EASCode. (Credits: @UbiManu)AllowanceCharge::allowanceChargeReasonCode to accept int|string|null, allowing string values like "ZZZ". (Credits: @Mikael-Leger)Attachment::xmlSerialize() to prevent output of EmbeddedDocumentBinaryObject when only externalReference is set. (Credits: @fMads)Invoice::setAccountingSupplierParty and getAccountingSupplierParty now use an AccountingParty object instead of Party.Invoice::setAccountingCustomerParty and getAccountingCustomerParty now use an AccountingParty object instead of Party.Invoice::accountingCustomerPartyContact. Use Invoice::getAccountingCustomerParty()->setAccountingContact() instead.Invoice::setSupplierAssignedAccountID/get moved to AccountingParty::setSupplierAssignedAccountID/get.Attachment: setFileStream/getFileStream renamed to setBase64Content/getBase64Content.setUBLVersionID -> setUBLVersionIdsetSupplierAssignedAccountID -> setSupplierAssignedAccountIdsetUnitCodeListID -> setUnitCodeListIdsetSchemeID -> setSchemeIdsetCustomizationID -> setCustomizationIdsetProfileID -> setProfileIdSee the upgrade guide for migration details:
UPGRADING.md
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →