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

Table 1. Version

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

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:

  1. Tax report (specifies segments available on tax report level)

  2. 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

cbc:CustomizationID

Document specification identifier
Must be value 'urn:pagero.com:puf:taxreport:1.0'.

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

cbc:ProfileID

Business process type
Identifies the business process.
Must be value 'urn:pagero.com:puf:taxreport:1.0'.

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

cbc:ID

Tax report number
A unique identifier of the tax report.

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

cbc:IssueDate

Issue date of the tax report
Format "YYYY-MM-DD".

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

cbc:IssueTime

The time, assigned by the sender, at which this document was issued.
Format "HH:mm:ss", "HH:mm:ssZZZZ", "HH:mm:ss.SSS’Z'", or "HH:mm:ss.SSS".

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

ClassificationIdentifier

Classification Identifier. Indicates if report is considered an Income or expense report
Valid values are INCOME or EXPENSE.

Example
ClassificationIdentifier with example value

<TaxReport>
  <!-- Code omitted for clarity -->
  <ClassificationIdentifier>INCOME</cbc:ClassificationIdentifier>
  <!-- Code omitted for clarity -->
</TaxReport>

Type

Path Description

Type

Type of transmission.
Valid values are: NEW, ADDITIONAL, CORRECTIVE, RECTIFICATION.

Example
Type with example value

<TaxReport>
  <!-- Code omitted for clarity -->
  <Type>RECTIFICATION</cbc:ClassificationIdentifier>
  <!-- Code omitted for clarity -->
</TaxReport>

ReportPeriod

Table 2. Elements available in ReportPeriod
Path Description

cbc:StartDate

Report period start date
Format "YYYY-MM-DD".

cbc:EndDate

Report period end date
Format "YYYY-MM-DD".

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

Table 3. Additional elements added within cac:IssuerParty
Path Description

cac:PartyName/cbc:Name

Issuer name
Issuer name.

cac:PartyLegalEntity/cbc:RegistrationName

Registration name
Issuer’s formal name or company name.

cac:PartyLegalEntity/cbc:CompanyID

Legal company identifier
Issuer legal registration identifier.

cac:PartyLegalEntity/cbc:CompanyID/@schemeID

Legal company scheme identifier
Issuers legal registration identifier scheme identifier
Value must be according to code list PUF-008-IDENTIFICATIONSCHEME.

cac:PartyLegalEntity/cac:Country/cbc:IdentificationCode

Country code
Issuers legal entity 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

cbc:DocumentCurrencyCode

Document currency code
The currency in which payment amounts are given..
Value must be according to ISO 4217 Currency codes.
For valid values see code list PUF-004-CURRENCYCODE.

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

Table 4. Elements available in ReferencedDocument (Information of a referenced document (E.g invoice))
Path Description

PaymentDataType

Indicates if the payment relates to an invoice or a receipttransaction.
Valid values are INVOICE or RECEIPTTRANSACTION".

cbc:ID

ID of the referenced document
E.g. invoice number.

cbc:IssueDate

Issue date of the referenced document
E.g. invoice date. Format "YYYY-MM-DD".

cbc:DocumentTypeCode

Document typecode of the referenced document

cbc:UUID

A universally unique identifier for the referenced document

cac:AccountingSupplierParty/cac:Party/cac:PartyName/cbc:Name

Party name

cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cbc:RegistrationName

Registration name
Formal name for the seller of the referenced document

cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cbc:CompanyID

Legal company identifier
Legal registration identifier of the seller of the referenced document.

cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cbc:CompanyID/@schemeID

Legal company scheme identifier
Scheme ID for the legal registration identifier of the seller of the referenced document+ Value must be according to code list PUF-008-IDENTIFICATIONSCHEME.

cac:AccountingCustomerParty/cac:Party/cac:PartyName/cbc:Name

Party name

cac:AccountingCustomerParty/cac:Party/cac:PartyLegalEntity/cbc:RegistrationName

Registration name
Formal name for the buyer of the referenced document

cac:AccountingCustomerParty/cac:Party/cac:PartyLegalEntity/cbc:CompanyID

Legal company identifier
Legal registration identifier of the buyer of the referenced document.

cac:AccountingCustomerParty/cac:Party/cac:PartyLegalEntity/cbc:CompanyID/@schemeID

Legal company scheme identifier
Scheme ID for the legal registration identifier of thebuyer of the referenced document+ Value must be according to code list PUF-008-IDENTIFICATIONSCHEME.

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

cbc:PaidDate

Paid date
The date when the payment was received.
Format "YYYY-MM-DD".

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

cbc:PaymentMeansCode

Payment means code
The means, expressed as code, for how a payment has been settled

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

Table 5. Elements available in PaymentTotal (Information about a payment)
Path Description

cbc:TaxExclusiveAmount

Total received payment amount excluding TAX.

cbc:TaxInclusiveAmount

Total received payment amount including TAX.

PaymentSubtotal/cbc:TaxExclusiveAmount

Received payment amount exclusive TAX per subtotal

PaymentSubtotal/cbc:TaxInclusiveAmount

Received payment amount including TAX per subtotal

PaymentSubtotal/cbc:Percent

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.

Table 6. Table of supported countries
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

Table 7. Table of the code lists used
Business Term Path listID

Currency code

cbc:DocumentCurrencyCode
/*/@currencyID

PUF-004-CURRENCYCODE

Identification scheme

cac:PartyLegalEntity/cbc:CompanyID/@schemeID

PUF-008-IDENTIFICATIONSCHEME

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:

  1. XML well-formedness

  2. 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.