A specification developed by Pagero. The XML-schema is developed by Pagero but incorporates components from Universal Business Language (UBL). The format enables the exchange of compliant documents worldwide via our e-business platform Pagero Online.
1. Introduction
Pagero Universal Format, hereafter referred to as "PUF", is a collection of business document specifications developed and maintained by Pagero Group.
The XML-schema for PUF Tax Report is developed and maintained by Pagero but incorporates components from Universal Business Language (UBL)
The PUF landing page lists all document types supported in the suite and in which directions these are available.
To align with new regulation and business needs throughout the world, the core idea of PUF is to enable its users to send/receive the data required to meet requirements in these markets and jurisdictions.
Based on extensive analysis, PUF has been designed to meet various country-, industry-, format- and/or system-specific requirements.
Another core idea of PUF is to create flexible, extendable business document specifications which can be updated quickly to meet the requirements of the fast-changing global electronic document landscape.
1.1. Version and changelog
Version |
Date |
Description |
1.0 |
2026-02-05 |
Beta version published |
2. Guidelines
When it comes to tax reporting, the most suitable data source is often the business document (for example, the invoice issued to the buyer/recipient).
In some cases, however, required reporting data is not provided to a business recipient and is instead submitted only to the tax authority.
To simplify reporting and standardize the required content, the PUF Tax Report specification has been developed. Currently this specification support reporting of Payments received.
2.1. How to get started with PUF
In the following chapters you can see which elements and what type of information that PUF supports.
In some cases you will also get longer snippets of code and implementation guidelines in order how to properly provide the data.
There is also a section with Examples that can be useful when implementing PUF.
2.1.1. Working with XML schemas
-
Download the PUF XML schemas.
|
In the XML schemas provided in chapter XML schemas you will see the structure and the occurrences of every element available in PUF. This specification will not include any cardinality from a schema perspective nor from what is required in a specific legal domain since this might differ depending on which specific country, region or business requirements you will have to comply with. In order to know what information is sufficient to provide you should first check what the requirements from a legal and business perspective and then refer to this specification on where to provide this information. |
2.2. Namespaces
Target root name space - TaxReport:
-
urn:pagero:PageroUniversalFormat:TaxReport:1.0
Example:
TaxReport example for target namespace
<TaxReport xmlns="urn:pagero:PageroUniversalFormat:TaxReport:1.0">
<!-- Code omitted for clarity -->
</TaxReport >
2.3. Customization and Profile ID
To indicate the correct PUF specification identifer and the profile identifier, the values in below table must be sent in cbc:CustomizationID and cbc:ProfileID.
| Type | Element cbc:CustomizationID |
Element cbc:ProfileID |
|---|---|---|
Tax report |
urn:pagero.com:puf:taxreport:1.0 |
urn:pagero.com:puf:taxreport:1.0 |
Example of CustomizationID and ProfileID:
<cbc:CustomizationID>urn:pagero.com:puf:taxreport:1.0</cbc:CustomizationID>
<cbc:ProfileID>urn:pagero.com:puf:taxreport:1.0</cbc:ProfileID>
2.4. Release management
PUF will be continuously updated to meet new market demands.
2.4.1. Minor release
A minor release will always be backward compatible and will take place without prior notice and will be implemented whenever needed.
Minor releases may include bugfixes, new elements, schematron updates and other features.
These releases can be followed on GitHub.
2.4.2. Major release
A major release may include changes that are not backward compatible.
Such a release will be notified at least three months prior to date of implementation, to users who registered an account on Pagero validex or on GitHub.
To register for PUF major release notification you can create a free account on Pagero Validex.
But we urge all interested parties to follow the project on GitHub where all releases will be notified.
3. Syntax
The chapter is divided into two parts for easier navigation:
-
Tax report (specifies segments available on tax report level)
-
Payment (specifies segments available on payment level)
3.1. Tax report
Information in this section describe the elements available on document level.
cbc:CustomizationID
| Path | Description |
|---|---|
|
Document specification identifier |
Example
cbc:CustomizationID populated with correct value
<TaxReport>
<!-- Code omitted for clarity -->
<cbc:CustomizationID>urn:pagero.com:puf:taxreport:1.0</cbc:CustomizationID>
<!-- Code omitted for clarity -->
</TaxReport>
cbc:ProfileID
| Path | Description |
|---|---|
|
Business process type |
Example
cbc:ProfileID populated with correct value
<TaxReport>
<!-- Code omitted for clarity -->
<cbc:ProfileID>urn:pagero.com:puf:taxreport:1.0</cbc:ProfileID>
<!-- Code omitted for clarity -->
</TaxReport>
cbc:ID
| Path | Description |
|---|---|
|
Tax report number |
Example
cbc:ID with example value
<TaxReport>
<!-- Code omitted for clarity -->
<cbc:ID>51234882</cbc:ID>
<!-- Code omitted for clarity -->
</TaxReport>
cbc:IssueDate
| Path | Description |
|---|---|
|
Issue date of the tax report |
Example
cbc:IssueDate with example value
<TaxReport>
<!-- Code omitted for clarity -->
<cbc:IssueDate>2021-01-30</cbc:IssueDate>
<!-- Code omitted for clarity -->
</TaxReport>
cbc:IssueTime
| Path | Description |
|---|---|
|
The time, assigned by the sender, at which this document was issued. |
Example
cbc:IssueTime with example value
<Invoice>
<!-- Code omitted for clarity -->
<cbc:IssueTime>21:32:52</cbc:IssueTime>
<!-- Code omitted for clarity -->
</Invoice>
ClassificationIdentifier
| Path | Description |
|---|---|
|
Classification Identifier. Indicates if report is considered an Income or expense report |
Example
ClassificationIdentifier with example value
<TaxReport>
<!-- Code omitted for clarity -->
<ClassificationIdentifier>INCOME</cbc:ClassificationIdentifier>
<!-- Code omitted for clarity -->
</TaxReport>
Type
| Path | Description |
|---|---|
|
Type of transmission. |
Example
Type with example value
<TaxReport>
<!-- Code omitted for clarity -->
<Type>RECTIFICATION</cbc:ClassificationIdentifier>
<!-- Code omitted for clarity -->
</TaxReport>
ReportPeriod
| Path | Description |
|---|---|
|
Report period start date |
|
Report period end date |
Example
ReportPeriod with example values
<TaxReport>
<!-- Code omitted for clarity -->
<ReportPeriod>
<cbc:StartDate>2026-01-01</cbc:StartDate>
<cbc:EndDate>2026-01-10</cbc:EndDate>
</ReportPeriod>
<!-- Code omitted for clarity -->
</TaxReport>
cac:IssuerParty
Below table show available fields in cac:IssuerParty
| Path | Description |
|---|---|
|
Issuer name |
|
Registration name |
|
Legal company identifier |
|
Legal company scheme identifier |
|
Country code |
Example
cac:IssuerParty example
<TaxReport>
<!-- Code omitted for clarity -->
<cac:IssuerParty>
<cac:PartyName>
<cbc:Name>Issuer Name</cbc:Name>
</cac:PartyName>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Issuer Registration Name</cbc:RegistrationName>
<cbc:CompanyID schemeID="0002">123456789</cbc:CompanyID>
<cac:RegistrationAddress>
<cac:Country>
<cbc:IdentificationCode>FR</cbc:IdentificationCode>
</cac:Country>
</cac:RegistrationAddress>
</cac:PartyLegalEntity>
</cac:IssuerParty>
<!-- Code omitted for clarity -->
</TaxReport>
3.2. Payment
Information in this section describe the elements available on payment level.
cbc:DocumentCurrencyCode
| Path | Description |
|---|---|
|
Document currency code |
Example
cbc:DocumentCurrencyCode populated with example value
<TaxReport>
<!-- Code omitted for clarity -->
<Payment>
<!-- Code omitted for clarity -->
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<!-- Code omitted for clarity -->
</Payment>
<!-- Code omitted for clarity -->
</TaxReport>
ReferencedDocument
| Path | Description |
|---|---|
|
Indicates if the payment relates to an invoice or a receipttransaction. |
|
ID of the referenced document |
|
Issue date of the referenced document |
|
Document typecode of the referenced document |
|
A universally unique identifier for the referenced document |
|
Party name |
|
Registration name |
|
Legal company identifier |
|
Legal company scheme identifier |
|
Party name |
|
Registration name |
|
Legal company identifier |
|
Legal company scheme identifier |
Example
ReferencedDocument with example values
<TaxReport>
<!-- Code omitted for clarity -->
<Payment>
<!-- Code omitted for clarity -->
<ReferencedDocument>
<PaymentDataType>INVOICE</PaymentDataType>
<cbc:ID>123456789</cbc:ID>
<cbc:IssueDate>2026-01-01</cbc:IssueDate>
<cac:AccountingSupplierParty>
<cac:Party>
<cac:PartyLegalEntity>
<cbc:CompanyID schemeID="9934">123456789</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingSupplierParty>
<!-- Accounting customer Party of the referenced document (buyer party) -->
<cac:AccountingCustomerParty>
<cac:Party>
<cac:PartyLegalEntity>
<cbc:CompanyID schemeID="9934">123456789</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingCustomerParty>
</ReferencedDocument>
<!-- Code omitted for clarity -->
</Payment>
</TaxReport>
cbc:PaidDate
| Path | Description |
|---|---|
|
Paid date |
Example
cbc:PaidDate with example value
<TaxReport>
<!-- Code omitted for clarity -->
<Payment>
<!-- Code omitted for clarity -->
<cbc:PaidDate>2026-01-01</cbc:PaidDate>
<!-- Code omitted for clarity -->
</Payment>
<!-- Code omitted for clarity -->
</TaxReport>
cbc:PaymentMeansCode
| Path | Description |
|---|---|
|
Payment means code |
Example
cbc:PaidDate with example value
<TaxReport>
<!-- Code omitted for clarity -->
<Payment>
<!-- Code omitted for clarity -->
<cbc:PaymentMeansCode>1</cbc:PaymentMeansCode>
<!-- Code omitted for clarity -->
</Payment>
<!-- Code omitted for clarity -->
<TaxReport>
PaymentTotal
| Path | Description |
|---|---|
|
Total received payment amount excluding TAX. |
|
Total received payment amount including TAX. |
|
Received payment amount exclusive TAX per subtotal |
|
Received payment amount including TAX per subtotal |
|
Tax percent for the subtotal |
Example
PaymentTotal with example values
<TaxReport>
<!-- Code omitted for clarity -->
<Payment>
<!-- Code omitted for clarity -->
<PaymentTotal>
<cbc:TaxExclusiveAmount currencyID="EUR">200.00</cbc:TaxInclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">220.00</cbc:TaxInclusiveAmount>
<PaymentSubtotal>
<cbc:TaxExclusiveAmount currencyID="EUR">100.00</cbc:TaxInclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">120.00</cbc:TaxInclusiveAmount>
<cbc:Percent>20</cbc:Percent>
</PaymentSubtotal>
<PaymentSubtotal>
<cbc:TaxExclusiveAmount currencyID="EUR">100.00</cbc:TaxInclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">100.00</cbc:TaxInclusiveAmount>
<cbc:Percent>0</cbc:Percent>
</PaymentSubtotal>
</PaymentTotal>
<!-- Code omitted for clarity -->
</Payment>
<!-- Code omitted for clarity -->
</Invoice>
4. Country specifics
This section will provide information regarding on how to include common country specific data in PUF.
The list of supported countries/regions are updated continuously as PUF is developed to follow new identified markets/requirements.
4.1. Supported countries
The following list gives an overview of country support in PUF.
| Country | Supported by PUF | Comment |
|---|---|---|
France |
Yes |
Beta version |
5. Code lists
Certain elements require the use of PUF specific code list/s.
Below you will find the lists and where the lists are applicable.
In some of these code lists PUF only points towards an external code list to be used.
Other times the code list to be used are a mix between values defined specifically for PUF and other external list/s.
Lastly, in some cases, all the values are defined solely for PUF.
5.1. Code lists for coded elements
| Business Term | Path | listID |
|---|---|---|
Currency code |
|
|
Identification scheme |
|
6. XML schemas
The PUF Tax report schemas can be downloaded here:
7. Validation
To validate PUF documents please create a free account on Pagero Validex.
The validations available on Validex are:
-
XML well-formedness
-
XSD schema
The validation artefacts are also available on GitHub.
8. Examples
Example files can be downloaded here:
9. Support
If you have any questions related to PUF, please create a support ticket via Pagero Support.
