PackageTrack
Sign in Get early access

num-num/ubl-invoice

A modern object-oriented PHP library to create valid UBL and Peppol BIS 3.0 files

v2.4.1 993K downloads/mo #4029 most downloaded on Packagist num-num/ubl-invoice

What this package is like to depend on

Last release 6 months ago

09 Feb 2026

Release timing varies

gaps range from 2 weeks to 4 months

Rarely documented

notes for 10 of 66 stable releases

Nothing withdrawn

no release was ever pulled

8 years old

84 releases · first in 2018

17 releases in the last 12 months

see the full history below

Release timeline

84 releases · Nov 2018 to Feb 2026
2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 60 of 84
  1. v2.4.1 09 Feb 2026
    Release notes

    This release fixes parsing of UBL invoices containing large embedded attachments.

    Bug Fixes

    • Reader: Enable 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)
    Open source →
    Release notes

    v2.4.1 Latest

    Latest

    Compare

    Choose a tag to compare

    Open source →
  2. v2.4.0 06 Feb 2026
    Release notes

    This release adds support for AdditionalItemProperty in Items and improves the robustness of the CommodityClassification reader.

    New Features & Improvements

    • Item: Added support for cac:AdditionalItemProperty elements. Items can now contain additional properties with name/value pairs. (Credits: @vtsiountas)

    Bug Fixes

    • CommodityClassification: Fixed reader to support 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)

    Maintenance

    • Bump symfony/process from 5.4.47 to 5.4.51.
    • Bump phpunit/phpunit from 9.6.22 to 9.6.33.

    Contributors

    @vtsiountas

    Open source →
    Release notes

    v2.4.0

    Compare

    Choose a tag to compare

    Open source →
  3. v2.3.1 26 Jan 2026
    Release notes

    This release adds support for the IssueTime field in Invoice documents.

    New Features & Improvements

    • Invoice: Added support for <cbc:IssueTime> tag, allowing you to set the issue time on invoices. This is required for Croatian e-invoicing compliance. (Credits: @hevesi)

    Contributors

    @hevesi

    Open source →
    Release notes

    v2.3.1

    Compare

    Choose a tag to compare

    Open source →
  4. v2.3.0 26 Jan 2026
    Release notes

    This release adds support for self-billing credit notes and new getter methods for ID properties.

    New Features & Improvements

    • CreditNote: Added support for reading CreditNoteTypeCode when deserializing credit notes, enabling proper handling of self-billing credit notes (UNCL1001 code 261).
    • Invoice: Added getCustomizationId() and getProfileId() getter methods to retrieve customization and profile identifiers.
    • InvoiceTypeCode: Added SELF_BILLING_CREDIT_NOTE constant (261) for self-billing credit note documents.
    Open source →
    Release notes

    v2.3.0

    Compare

    Choose a tag to compare

    Open source →
  5. v2.2.0 22 Jan 2026
    Release notes

    This release adds support for UBL 2.1 DebitNote documents and fixes SettlementPeriod date handling to comply with Peppol BIS 3.0 specification.

    New Features & Improvements

    • DebitNote: Add support for UBL 2.1 DebitNote documents, including DebitNote and DebitNoteLine classes, Generator::debitNote() method, and Reader support.

    Bug Fixes

    • SettlementPeriod: Make 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.

    Maintenance

    • Translate comments from Dutch to English in SettlementPeriod.
    Open source →
    Release notes

    v2.2.0

    Compare

    Choose a tag to compare

    Open source →
  6. v2.1.0 14 Jan 2026
    Release notes

    This release includes significant improvements to UBL invoice parsing, new features for tax handling, and several bug fixes for XML serialization.

    New Features & Improvements

    • TaxCurrencyCode: Added support for getting and setting cbc:TaxCurrencyCode on invoices. (Credits: @CasperBE)
    • TaxSubtotal: Now reads all cac:TaxSubtotal elements from cac:TaxTotal instead of only the first one. (Credits: @CasperBE)
    • PayeeParty: Improved retrieval of cac:PayeeParty with a dedicated class that properly handles its different structure. (Credits: @CasperBE)
    • AllowanceCharge: Added support for reading cac:TaxCategory on cac:AllowanceCharge elements. (Credits: @CasperBE)

    Bug Fixes

    • Reference Classes: Fixed TypeError when parsing UBL files with missing optional ID elements by making setter types nullable for OrderReference, ProjectReference, ContractDocumentReference, and InvoiceDocumentReference. (Credits: @TNAJanssen)
    • TaxAmount: Fixed reading of TaxAmount values.
    • Price: Made 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)
    • Delivery: Fixed ActualDeliveryDate to properly cast to a DateTime object. (Credits: @CasperBE)
    • Date Handling: Improved handling of date values during parsing.

    Maintenance

    • Removed duplicate array key in codebase.
    • Renamed variable for consistency.

    Contributors

    @TNAJanssen, @CasperBE, @hevesi

    Open source →
    Release notes

    v2.1.0

    Compare

    Choose a tag to compare

    Open source →
  7. v2.0.3 14 Jan 2026
    Release notes

    Bug Fixes

    • NumberFormatter: Fixed PHP 7.4 compatibility by removing trailing commas in function signatures that were only supported in PHP 8.0+.

    Maintenance

    • NumberFormatter: Refactored 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

    Open source →
    Release notes

    v2.0.3

    Compare

    Choose a tag to compare

    Open source →
  8. v2.0.2 19 Dec 2025
    Release notes

    This release fixes a TypeError that occurred when using InvoiceTypeCode constants with strict types enabled.

    Bug Fixes

    • Invoice: Fixed TypeError when setting InvoiceTypeCode - changed type from string to int to match the constant definitions. (Fixes #96)
    Open source →
    Release notes

    v2.0.2

    Compare

    Choose a tag to compare

    Open source →
  9. v2.0.1 18 Dec 2025
    Release notes

    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
    .

    Bug Fixes

    • TaxSubTotal: Fixed a typo when reading the TaxCategory from TaxSubTotal during XML
      deserialization. Added tests for reading TaxTotal information. (Credits: @CasperBE)

    Maintenance

    • Added comprehensive documentation guides for the 2.0 release.

    Breaking Changes

    • Invoice: Removed deprecated methods Invoice::setSupplierAssignedAccountID() and
      Invoice::getSupplierAssignedAccountID(). Use AccountingParty::setSupplierAssignedAccountId()
      and AccountingParty::getSupplierAssignedAccountId() instead. (Credits: @CasperBE)

    Upgrading

    See the upgrade guide for migration details:
    UPGRADING.md

    Contributors

    @CasperBE

    Open source →
    Release notes

    v2.0.1

    Compare

    Choose a tag to compare

    Open source →
  10. v2.0.0 18 Dec 2025
    Release notes

    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.

    New Features & Improvements

    • XML Deserialization: Added functionality to deserialize XML into an object tree.
    • CreditNote: Added xmlDeserialize support for the CreditNote class to parse <cac:CreditNoteLine> elements. (Credits: @RoanB)
    • Invoice References:
      • Added <cac:DespatchDocumentReference> to <Invoice>. (Credits: @fMads)
      • Added <cac:ReceiptDocumentReference> to <Invoice>.
      • Added <cac:OriginatorDocumentReference> to <Invoice>.
    • Address & Location:
      • Added <cac:AddressLine> support to <cac:Address> for unstructured address lines. (Credits: @fMads)
      • Added <cac:OriginCountry> support to <cac:Item> for specifying country of origin. (Credits: @fMads)
    • Standards:
      • Added FRCTC Electronic Address (0225) to EASCode. (Credits: @UbiManu)
      • Updated AllowanceCharge::allowanceChargeReasonCode to accept int|string|null, allowing string values like "ZZZ". (Credits: @Mikael-Leger)

    Bug Fixes

    • Fixed Attachment::xmlSerialize() to prevent output of EmbeddedDocumentBinaryObject when only externalReference is set. (Credits: @fMads)

    Maintenance

    • Updated dependency constraints to support Carbon 3.x and Doctrine Collections 2.x. (Credits: @GHuygen)

    Breaking Changes

    • Class Structure:
      • Invoice::setAccountingSupplierParty and getAccountingSupplierParty now use an AccountingParty object instead of Party.
      • Invoice::setAccountingCustomerParty and getAccountingCustomerParty now use an AccountingParty object instead of Party.
      • Removed Invoice::accountingCustomerPartyContact. Use Invoice::getAccountingCustomerParty()->setAccountingContact() instead.
      • Invoice::setSupplierAssignedAccountID/get moved to AccountingParty::setSupplierAssignedAccountID/get.
    • Renamed Methods:
      • Attachment: setFileStream/getFileStream renamed to setBase64Content/getBase64Content.
      • setUBLVersionID -> setUBLVersionId
      • setSupplierAssignedAccountID -> setSupplierAssignedAccountId
      • setUnitCodeListID -> setUnitCodeListId
      • setSchemeID -> setSchemeId
      • setCustomizationID -> setCustomizationId
      • setProfileID -> setProfileId

    Upgrading

    See the upgrade guide for migration details:
    UPGRADING.md

    Contributors

    @RoanB, @fMads, @UbiManu, @Mikael-Leger, @GHuygen

    Open source →
    Release notes

    v2.0.0 🎉

    Compare

    Choose a tag to compare

    Open source →
  11. v2.0.0-beta9 24 Jun 2025 pre-release

    Nothing published for this version

  12. v2.0.0-beta8 19 May 2025 pre-release

    Nothing published for this version

  13. v2.0.0-beta7 05 May 2025 pre-release

    Nothing published for this version

  14. v2.0.0-beta6 05 May 2025 pre-release

    Nothing published for this version

  15. v2.0.0-beta5 26 Mar 2025 pre-release

    Nothing published for this version

  16. v2.0.0-beta4 26 Mar 2025 pre-release

    Nothing published for this version

  17. v2.0.0-beta3 06 Mar 2025 pre-release

    Nothing published for this version

  18. v2.0.0-beta2 03 Mar 2025 pre-release

    Nothing published for this version

  19. v2.0.0-beta15 18 Dec 2025 pre-release

    Nothing published for this version

  20. v2.0.0-beta14 17 Dec 2025 pre-release

    Nothing published for this version

  21. v2.0.0-beta13 06 Nov 2025 pre-release

    Nothing published for this version

  22. v2.0.0-beta12 01 Jul 2025 pre-release

    Nothing published for this version

  23. v2.0.0-beta11 01 Jul 2025 pre-release

    Nothing published for this version

  24. v2.0.0-beta10 01 Jul 2025 pre-release

    Nothing published for this version

  25. v2.0.0-beta1 18 Feb 2025 pre-release

    Nothing published for this version

  26. v2.0.0-alpha3 21 Jan 2025 pre-release

    Nothing published for this version

  27. v2.0.0-alpha2 20 Jan 2025 pre-release

    Nothing published for this version

  28. v2.0.0-alpha1 18 Jan 2025 pre-release

    Nothing published for this version

  29. v1.22.2 18 Dec 2025

    Nothing published for this version

  30. v1.22.1 17 Dec 2025

    Nothing published for this version

  31. v1.22.0 17 Dec 2025

    Nothing published for this version

  32. v1.21.4 04 Nov 2025

    Nothing published for this version

  33. v1.21.3 01 Jul 2025

    Nothing published for this version

  34. v1.21.2 01 Jul 2025

    Nothing published for this version

  35. v1.21.1 25 Jun 2025

    Nothing published for this version

  36. v1.21.0 25 Jun 2025

    Nothing published for this version

  37. v1.20.0 19 May 2025

    Nothing published for this version

  38. v1.19.1 05 May 2025

    Nothing published for this version

  39. v1.18.2 26 Mar 2025

    Nothing published for this version

  40. v1.18.1 20 Nov 2024

    Nothing published for this version

  41. v1.15.5 04 Dec 2023

    Nothing published for this version

  42. v1.15.4 02 Oct 2023

    Nothing published for this version

  43. v1.15.3 29 Aug 2023

    Nothing published for this version

  44. v1.15.2 17 Aug 2023

    Nothing published for this version

  45. v1.15.1 16 Aug 2023

    Nothing published for this version

  46. v1.10.2 26 Nov 2020

    Nothing published for this version

  47. v1.10.1 12 Nov 2020

    Nothing published for this version

  48. v1.9.6 29 Oct 2020

    Nothing published for this version

  49. v1.9.5 21 Oct 2020

    Nothing published for this version

  50. v1.9.4 20 Oct 2020

    Nothing published for this version

  51. v1.9.3 14 Oct 2020

    Nothing published for this version

  52. v1.9.2 08 Oct 2020

    Nothing published for this version

  53. v1.9.1 08 Oct 2020

    Nothing published for this version

  54. v1.9.0 22 Sep 2020

    Nothing published for this version

  55. v1.8.6 17 Sep 2020

    Nothing published for this version

  56. v1.8.5 16 Sep 2020

    Nothing published for this version

  57. v1.8.4 27 Jul 2020

    Nothing published for this version

  58. v1.8.3 27 Jul 2020

    Nothing published for this version

  59. v1.8.2 27 Jul 2020

    Nothing published for this version

  60. v1.8.1 27 May 2020

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive