1. Introduction
Pagero Universal Format, hereafter referred to as "PUF", is developed and maintained by Pagero Group. PUF is based upon Universal Business Language Version 2.1 (UBL 2.1).
To align with new regulations and the business needs that comes with the growing use of electronic invoices throughout the world, the core idea of PUF is to enable its users to provide enough data to meet the requirements in these markets.
To be able to provide the broadest support possible, PUF has been designed with the following core basis in mind:
-
European standard EN 16931-1:2017
-
EN 16931-1:2017 complies with the European Directive on electronic invoicing for public authorities (EN 2014/55 / EU). It has been prepared by the Technical Committee TC434 at CEN by the European Commission.
-
-
Peppol BIS Billing 3.0 (OpenPeppol’s CIUS (Core Invoice Usage Specification) with EN16931 as the underlying specification)
-
Other CIUS’s based on the regulations of EN 16931-1:2017
-
Extensions based on the regulations of EN 16931-1:2017
-
Country specific information found in domestic formats in various legal domains.
Based on extensive analysis of the above, PUF has been designed to meet these country-, industry-, format- and/or system-specific requirements.
Another intention of PUF has been to create a flexible, extendable format which can be updated quickly to be able to meet the requirements of the fast-changing global electronic document landscape.
PUF is not to be considered a CIUS based on EN16931 or any other CIUS or format. PUF will, however, to a large extent try to follow the work done in EN16931, Peppol and other UBL based invoicing specifications.
If one can create a valid and syntactically correct EN16931 based UBL-format; the threshold for implementing PUF should be negligible.
1.1. Version and Changelog
Version | Date | Description |
---|---|---|
2.0 |
2021-06-01 |
Second version published |
1.0 |
2019-05-02 |
First version published |
2. Guidelines
PUF was originally built to support information and content as described in PEPPOL BIS Billing 3.0 but also adding support for elements that where not present in Peppol BIS specification.
While PUF aim to fully support Peppol BIS it will not necessarily be restricted to the rules as stated in the Peppol BIS specification nor in the EN16931.
In areas where support for certain information is available in the existing UBL 2.1 structure, PUF implements these elements.
In other areas where there are no suitable elements in the existing UBL 2.1 schema, PUF implements UBLExtensions
.
Since UBLExtensions
are only available on document level in UBL 2.1, it had to be altered, adding the UBLExtension
in every aggregate thus replacing the UBL-CommonAggregateComponents-2.1.xsd
with the PUF altered PUF-CommonAggregateComponents-2.1.xsd
. The reason for this is that there would be too many semantic rules to tie each UBLExtension
on document level to their corresponding existing element on other levels.
2.1. How to get started with PUF
In the following chapters you can see which elements and what type of information that is supported in PUF.
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 test files that can be useful when implementing PUF.
If your ERP system already can create Invoices and CreditNotes in Universal Business Language Version 2.1 (UBL 2.1) or if your ERP system can create a UBL based format or CIUS such as PEPPOL BIS Billing 3.0 you can easily use this as stepping stone when moving towards PUF.
2.1.1. Moving from other UBL formats to PUF
-
Download the PUF XML Schemas.
-
Change namespaces (see chapter Namespaces).
-
Verify that your interpretation of the UBL elements mentioned in this specification are the same.
-
Change the Customization ID and Profile ID (see chapter Customization and Profile ID)
-
If elements from extensions are needed see chapter Working with extensions for details on how this is implemented.
-
Before implementing additional elements available in PUF, validate the document with the XSD schema downloaded in step 1 above.
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. Also note that the elements and their sequence order provided in specification is done with the Invoice document type.When using CreditNote please take note to use the separate XML schema provided for possible differences in element names or sequence order.
|
2.2. Namespaces
Target name space - Invoice:
-
urn:pagero:PageroUniversalFormat:Invoice:1:0
Example:
Invoice example for target namespace
<Invoice xmlns="urn:pagero:PageroUniversalFormat:Invoice:1.0">
<!-- Code omitted for clarity -->
</Invoice>
Target name space - CreditNote:
-
urn:pagero:PageroUniversalFormat:CreditNote:1:0
Example:
Credit note example for target namespace
<CreditNote xmlns="urn:pagero:PageroUniversalFormat:CreditNote:1.0">
<!-- Code omitted for clarity -->
</CreditNote>
CommonAggregateComponents - Invoice/CreditNote:
-
urn:pagero:CommonAggregateComponents:1.0
Example:
Invoice example for CommonAggregateComponents namespace
<Invoice xmlns:cac="urn:pagero:CommonAggregateComponents:1.0"> (1)
<!-- Code omitted for clarity -->
</Invoice>
1 | Note that the namespace is the same for CreditNote-root element. |
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 |
---|---|---|
Invoice and credit note |
urn:pagero.com:puf:billing:2.0 |
urn:pagero.com:puf:billing:1.0 |
Example of CustomizationID and ProfileID:
<cbc:CustomizationID>urn:pagero.com:puf:billing:2.0</cbc:CustomizationID>
<cbc:ProfileID>urn:pagero.com:puf:billing:1.0</cbc:ProfileID>
2.4. Working with extensions
In order to facilitate the use of PUF specific extensions, a schema for the extensions is provided.
The PUF-ExtensionComponent.xsd
can be found together with the other schemas in chapter XML Schemas. This chapter provides an overview on how to use
extensions.
To be able to use the PUF-ExtensionComponent
a namespace must be included in the document file.
Example
Example from Invoice
<Invoice ... xmlns:puf="urn:pagero:ExtensionComponent:1.0"> (1)
<!-- Code omitted for clarity -->
</Invoice>
1 | Note that the namespace is the same for CreditNote-root element. |
Depending on in which context the UBLExtensions
are used there are different options of what types of values you are able to provide.
To identify which context the UBLExtensions
is in the element ExtensionURI is used. When using these Pagero extensions, the URI has the same base:
-
urn:pagero:ExtensionComponent:1.0:PageroExtension
After the URI, the specific resource name is added.
Example
UBLExtension used in the Party structure.
<cac:AccountingSupplierParty>
<cac:Party>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:PartyExtension</ext:ExtensionURI>
<!-- Code omitted for clarity -->
</cac:Party>
</cac:AccountingSupplierParty>
For detailed examples and how to use possible values in each extension please check the chapters where the PUF-specific elements are described.
2.5. Continuous development and release management
PUF will continuously be updated to meet new market demands. In order to support backward compatibility, the XSD schema is built with the use of "other" elements.
The "other" elements in the XSD will prevent validation error for customers who do not frequently keep the XSD schema up-to-date.
2.5.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.5.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 an account on https://pagero.validex.net. But we urge all interested parties to follow the project on GitHub where all releases will be notified.
3. Content
The chapter is divided into two parts for easier navigation:
-
Invoice (specifies segments available on document level)
-
cac:InvoiceLine (specifies segments available on line level)
Note that most examples are only shown for document type Invoice. |
3.1. Invoice
Information in this section (3.1) describe the elements available on document level.
ext:UBLExtensions
Path | Description |
---|---|
|
Extension Content |
cbc:CustomizationID
Path | Description |
---|---|
|
Document specification identifier |
Example
cbc:CustomizationID populated with correct value
<Invoice>
<!-- Code omitted for clarity -->
<cbc:CustomizationID>urn:pagero.com:puf:billing:2.0</cbc:CustomizationID>
<!-- Code omitted for clarity -->
</Invoice>
cbc:ProfileID
Path | Description |
---|---|
|
Business process type |
Example
cbc:ProfileID populated with correct value
<Invoice>
<!-- Code omitted for clarity -->
<cbc:ProfileID>urn:pagero.com:puf:billing:1.0</cbc:ProfileID>
<!-- Code omitted for clarity -->
</Invoice>
cbc:ID
Path | Description |
---|---|
|
Invoice number |
Example
cbc:ID with example value
<Invoice>
<!-- Code omitted for clarity -->
<cbc:ID>51234882</cbc:ID>
<!-- Code omitted for clarity -->
</Invoice>
cbc:IssueDate
Path | Description |
---|---|
|
Issue date of invoice |
Example
cbc:IssueDate with example value
<Invoice>
<!-- Code omitted for clarity -->
<cbc:IssueDate>2021-01-30</cbc:IssueDate>
<!-- Code omitted for clarity -->
</Invoice>
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>
cbc:DueDate
Path | Description |
---|---|
|
Due date of invoice |
Example
cbc:DueDate with example value
<Invoice>
<!-- Code omitted for clarity -->
<cbc:DueDate>2021-02-28</cbc:DueDate>
<!-- Code omitted for clarity -->
</Invoice>
cbc:InvoiceTypeCode
Path | Description |
---|---|
|
Invoice type code |
|
Invoice type code name |
Example
cbc:InvoiceTypeCode populated with correct value
<Invoice>
<!-- Code omitted for clarity -->
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<!-- Code omitted for clarity -->
</Invoice>
cbc:Note
Path | Description |
---|---|
|
Note |
Example
cbc:Note example
<Invoice>
<!-- Code omitted for clarity -->
<cbc:Note>This</cbc:Note>
<cbc:Note>is a</cbc:Note>
<cbc:Note>free text example</cbc:Note>
<!-- Code omitted for clarity -->
</Invoice>
cbc:TaxPointDate
Path | Description |
---|---|
|
VAT point date |
Example
cbc:TaxPointDate with example value
<Invoice>
<!-- Code omitted for clarity -->
<cbc:TaxPointDate>2021-01-31</cbc:TaxPointDate>
<!-- Code omitted for clarity -->
</Invoice>
cbc:DocumentCurrencyCode
Path | Description |
---|---|
|
Document currency code |
Example
cbc:DocumentCurrencyCode populated with example value
<Invoice>
<!-- Code omitted for clarity -->
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<!-- Code omitted for clarity -->
</Invoice>
cbc:TaxCurrencyCode
Path | Description |
---|---|
|
Tax currency code |
Example
cbc:TaxCurrencyCode populated with example value
<Invoice>
<!-- Code omitted for clarity -->
<cbc:TaxCurrencyCode>USD</cbc:TaxCurrencyCode>
<!-- Code omitted for clarity -->
</Invoice>
cbc:AccountingCost
Path | Description |
---|---|
|
Accounting cost |
Example
cbc:AccountingCost populated with example value
<Invoice>
<!-- Code omitted for clarity -->
<cbc:AccountingCost>1111.22.456</cbc:AccountingCost>
<!-- Code omitted for clarity -->
</Invoice>
cbc:BuyerReference
Path | Description |
---|---|
|
Buyer Reference |
Example
cbc:BuyerReference populated with example value
<Invoice>
<!-- Code omitted for clarity -->
<cbc:BuyerReference>ASFF2222</cbc:BuyerReference>
<!-- Code omitted for clarity -->
</Invoice>
cac:InvoicePeriod
Path | Description |
---|---|
|
Invoicing period start date |
|
Invoicing period end date |
|
Description of the billing period (free text). |
Example
cac:InvoicePeriod with example values
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoicePeriod>
<cbc:StartDate>2021-01-01</cbc:StartDate>
<cbc:EndDate>2021-01-31</cbc:EndDate>
<cbc:Description>Description of invoice period</cbc:Description>
</cac:InvoicePeriod>
<!-- Code omitted for clarity -->
</Invoice>
cac:OrderReference
Below table show available fields in cac:OrderReference
, note that additional elements has also been added to the extension available in OrderReference
Path | Description |
---|---|
|
Extension Content |
|
Purchase order reference |
|
Sales order reference |
|
Issue date |
Example
cbc:OrderReference example
<Invoice>
<!-- Code omitted for clarity -->
<cac:OrderReference>
<cbc:ID>PO123215</cbc:ID>
<cbc:SalesOrderID>SO1117782</cbc:SalesOrderID>
<cbc:IssueDate>2021-01-01</cbc:IssueDate>
</cac:OrderReference>
<!-- Code omitted for clarity -->
</Invoice>
cac:BillingReference
Below table show available fields in cac:BillingReference/cac:InvoiceDocumentReference
, note that additional elements has also been added to the extension available in BillingReference.
Path | Description |
---|---|
|
Extension Content |
|
Preceding invoice number |
|
Issue date |
Example
cbc:Note example
<Invoice>
<!-- Code omitted for clarity -->
<cac:BillingReference>
<cac:InvoiceDocumentReference>
<cbc:ID>1144884</cbc:ID>
<cbc:IssueDate>2021-01-01</cbc:IssueDate>
</cac:InvoiceDocumentReference>
</<cac:BillingReference>
<!-- Code omitted for clarity -->
</Invoice>
cac:DespatchDocumentReference
Path | Description |
---|---|
|
Despatch advice reference |
|
Issue date |
Example
cac:DespatchDocumentReference example values
<Invoice>
<!-- Code omitted for clarity -->
<cac:DespatchDocumentReference>
<cbc:ID>1151555</cbc:ID>
<cbc:IssueDate>2021-01-01</cbc:IssueDate>
</cac:DespatchDocumentReference>
<!-- Code omitted for clarity -->
</Invoice>
cac:ReceiptDocumentReference
Path | Description |
---|---|
|
Receiving advice reference |
Example
cac:ReceiptDocumentReference example values
<Invoice>
<!-- Code omitted for clarity -->
<cac:ReceiptDocumentReference>
<cbc:ID>587345</cbc:ID>
</cac:ReceiptDocumentReference>
<!-- Code omitted for clarity -->
</Invoice>
cac:OriginatorDocumentReference
Path | Description |
---|---|
|
Tender reference identifier |
|
Issue date |
Example
cac:OriginatorDocumentReference example values
<Invoice>
<!-- Code omitted for clarity -->
<cac:OriginatorDocumentReference>
<cbc:ID>710654</cbc:ID>
<cbc:IssueDate>2021-01-01</cbc:IssueDate>
</cac:OriginatorDocumentReference>
<!-- Code omitted for clarity -->
</Invoice>
cac:ContractDocumentReference
Below table show available fields in cac:ContractDocumentReference
, note that additional elements has also been added to the extension available in ContractDocumentReference.
Path | Description |
---|---|
|
Extension Content |
|
Contract reference |
|
Issue date |
Example
cbc:ContractDocumentReference example
<Invoice>
<!-- Code omitted for clarity -->
<cac:ContractDocumentReference>
<cbc:ID>123215</cbc:ID>
<cbc:IssueDate>2021-01-01</cbc:IssueDate>
</cac:ContractDocumentReference>
<!-- Code omitted for clarity -->
</Invoice>
cac:AdditionalDocumentReference
In EN16931 based specifications, the cac:AdditionalDocumentReference
aggregate is used to reference a supporting document. These can either be provided as a base64 encoded document embedded within the Invoice or CreditNote itself but can also reference an invoiced object by a document number or referencing an external document via a URL.
PUF supports this handling but also has additional support in order to provide invoice or credit notes image/presentation.
Applicable XPath | Description |
---|---|
|
Identifier for the referenced object/document. |
|
Scheme identifier of the referenced object/document. |
|
Document type code. Should be 130 if referencing an invoiced object. Not used for other additional document references. |
|
A description of the referenced or attached document. |
|
The attached document base64 encoded. |
|
The mimecode of the attached document. |
|
Filename of the attached document. |
|
A URL to where the referenced document can be found. |
Invoice image/presentation and Credit Note image/presentation
Providing an invoice presentation/image or credit note image/presentation is sometimes useful. This can be done in PUF as shown in the examples below.
If cbc:DocumentDescription
is "Commercial Invoice" or "Credit Note" the attachment will be interpreted as a an invoice presentation/image otherwise the attachment will be interpreted as a miscellaneous or "other" type of document.
Example
Invoice with presentation (PDF-image)
<Invoice>
<!-- Code omitted for clarity -->
<cac:AdditionalDocumentReference>
<cbc:ID>123456</cbc:ID>
<cbc:DocumentDescription>Commercial Invoice</cbc:DocumentDescription> (1)
<cac:Attachment>
<cbc:EmbeddedDocumentBinaryObject mimeCode="application/pdf" filename="presentation.pdf">MvYmlsbGluZy...8zLjAvYmlzLw==</cbc:EmbeddedDocumentBinaryObject>
</cac:Attachment>
</cac:AdditionalDocumentReference>
<!-- Code omitted for clarity -->
</Invoice>
1 | If "Commercial Invoice" is stated in the cbc:DocumentDescription the attachment will be interpreted as a presentation. |
Example
Credit Note with (PDF-image)
<CreditNote>
<!-- Code omitted for clarity -->
<cac:AdditionalDocumentReference>
<cbc:ID>123456</cbc:ID>
<cbc:DocumentDescription>Credit Note</cbc:DocumentDescription> (1)
<cac:Attachment>
<cbc:EmbeddedDocumentBinaryObject mimeCode="application/pdf" filename="presentation.pdf">MvYmlsbGluZy...8zLjAvYmlzLw==</cbc:EmbeddedDocumentBinaryObject>
</cac:Attachment>
</cac:AdditionalDocumentReference>
<!-- Code omitted for clarity -->
</CreditNote>
1 | If "Credit Note" is stated in the Credit Note the attachment will be interpreted as a presentation. |
Invoiced object reference
If there is a need to reference a document/object number without providing a link to the location and without embedding it in the Invoice/CreditNote this can be done
in PUF within the cac:AdditionalDocumentReference
as shown in below example. Note that it is possible to provide more than one invoiced object reference.
Example
Invoice with reference to an invoiced object with a document number
<Invoice>
<!-- Code omitted for clarity -->
<cac:AdditionalDocumentReference>
<cbc:ID schemeID="AIT">123456</cbc:ID> (1)
<cbc:DocumentTypeCode>130</cbc:DocumentTypeCode>(2)
</cac:AdditionalDocumentReference>
<!-- Code omitted for clarity -->
</Invoice>
1 | The schemeID must be according to list PUF-005-INVOICEDOBJECTIDENTIFIER. |
2 | Document type code should be '130' to indicate invoiced object. |
cac:ProjectReference
Path | Description |
---|---|
|
Project reference |
Example
cac:ProjectReference example values
<Invoice>
<!-- Code omitted for clarity -->
<cac:ProjectReference>
<cbc:ID>557884</cbc:ID>
</cac:ProjectReference>
<!-- Code omitted for clarity -->
</Invoice>
cac:AccountingSupplierParty
Below table show available fields in cac:AccountingSupplierParty
, note that additional elements has also been added to the extension available in Party.
Path | Description |
---|---|
|
Customer Account ID |
|
Extension Content |
|
Electronic Identifier |
|
Electronic Identifier scheme ID |
|
Seller Identifier |
|
Seller Identifier |
|
Seller name |
|
Postal box |
|
Street name |
|
Additional Street name |
|
Building number |
|
Department |
|
Plot Identification |
|
City Subdvision Name |
|
City name |
|
Postal zone |
|
Country subentity |
|
Country subentity code |
|
Additional address line |
|
Country code |
|
Country name |
|
Company identifier |
|
Tax scheme identifier |
|
Registration name |
|
Legal company identifier |
|
Legal company scheme identifier |
|
Company legal form |
|
Contact name |
|
Contact telephone |
|
Contact E-mail |
|
Accounting telephone |
|
Accounting fax number |
|
Accounting E-mail |
Example
cac:AccountingSupplierParty example
<Invoice>
<!-- Code omitted for clarity -->
<cac:AccountingSupplierParty>
<cbc:CustomerAssignedAccountID>SupplierId</cbc:CustomerAssignedAccountID>
<cac:Party>
<cbc:EndpointID schemeID="0088">7300010000001</cbc:EndpointID>
<cac:PartyIdentification>
<cbc:ID schemeID="0088">7300010000001</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Supplier Name</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:Postbox>12345</cbc:Postbox>
<cbc:StreetName>Test Street 1</cbc:StreetName>
<cbc:Department>Department</cbc:Department>
<cbc:PlotIdentification>0000</cbc:PlotIdentification>
<cbc:CitySubdivisionName>City Subdivision Name</cbc:CitySubdivisionName>
<cbc:CityName>Town</cbc:CityName>
<cbc:PostalZone>00000</cbc:PostalZone>
<cbc:CountrySubentity>Province</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>SE</cbc:IdentificationCode>
<cbc:Name>Sweden</cbc:Name>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>SE123456123401</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Supplier Registration Name</cbc:RegistrationName>
<cbc:CompanyID schemeID="0007">1234561234</cbc:CompanyID>
<cac:RegistrationAddress>
<cbc:CityName>Supplier Hometown</cbc:CityName>
<cac:Country>
<cbc:IdentificationCode>SE</cbc:IdentificationCode>
</cac:Country>
</cac:RegistrationAddress>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>Supplier Contact Name</cbc:Name>
<cbc:Telephone>11111111</cbc:Telephone>
<cbc:ElectronicMail>supplier@contact.com</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
<cac:AccountingContact>
<cbc:Telephone>Supplier tel</cbc:Telephone>
<cbc:Telefax>Supplier Fax</cbc:Telefax>
<cbc:ElectronicMail>Supplier@mainContact.com</cbc:ElectronicMail>
</cac:AccountingContact>
</cac:AccountingSupplierParty>
<!-- Code omitted for clarity -->
</Invoice>
cac:AccountingCustomerParty
Below table show available fields in cac:AccountingCustomerParty
, note that additional elements has also been added to the extension available in Party.
Path | Description |
---|---|
|
Customer Account ID |
|
Extension Content |
|
Electronic Identifier |
|
Electronic Identifier scheme ID |
|
Buyer Identifier |
|
Buyer Identifier |
|
Buyer name |
|
Postal box |
|
Street name |
|
Additional Street name |
|
Building number |
|
Department |
|
Plot Identification |
|
City Subdvision Name |
|
City name |
|
Postal zone |
|
Country subentity |
|
Country subentity code |
|
Additional address line |
|
Country code |
|
Country name |
|
Company identifier |
|
Tax scheme identifier |
|
Registration name |
|
Legal company identifier |
|
Legal company scheme identifier |
|
Company legal form |
|
Contact name |
|
Contact telephone |
|
Contact E-mail |
|
Accounting telephone |
|
Accounting fax number |
|
Accounting E-mail |
Example
cac:AccountingCustomerParty example
<Invoice>
<!-- Code omitted for clarity -->
<cac:AccountingCustomerParty>
<cbc:SupplierAssignedAccountID>Customer Number</cbc:SupplierAssignedAccountID>
<cac:Party>
<cbc:EndpointID schemeID="0088">7300010000001</cbc:EndpointID>
<cac:PartyIdentification>
<cbc:ID schemeID="0088">7300010000001</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Customer Name</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:Postbox>54321</cbc:Postbox>
<cbc:StreetName>Customer Street</cbc:StreetName>
<cbc:Department>Customer Department</cbc:Department>
<cbc:PlotIdentification>0000</cbc:PlotIdentification>
<cbc:CitySubdivisionName>Customer City Subdivision Name</cbc:CitySubdivisionName>
<cbc:CityName>Customer City</cbc:CityName>
<cbc:PostalZone>00000</cbc:PostalZone>
<cbc:CountrySubentity>Customer Province</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>SE</cbc:IdentificationCode>
<cbc:Name>Sweden</cbc:Name>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>SE987654321001</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Customer Registration Name</cbc:RegistrationName>
<cbc:CompanyID schemeID="0007">987654-4321</cbc:CompanyID>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>Customer Contact Name</cbc:Name>
<cbc:Telephone>+465544466</cbc:Telephone>
<cbc:ElectronicMail>customer@contact.com</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
<cac:AccountingContact>
<cbc:Telephone>Customer tel</cbc:Telephone>
<cbc:Telefax>Customer Fax</cbc:Telefax>
<cbc:ElectronicMail>Customer@mainContact.com</cbc:ElectronicMail>
</cac:AccountingContact>
</cac:AccountingCustomerParty>
<!-- Code omitted for clarity -->
</Invoice>
cac:PayeeParty
Path | Description |
---|---|
|
Payee Identifier |
|
Payee scheme Identifier |
|
Payee name |
|
Legal company identifier |
|
Legal company identifier scheme identifier |
Example
cac:PayeeParty example
<Invoice>
<!-- Code omitted for clarity -->
<cac:PayeeParty>
<cac:PartyIdentification>
<cbc:ID schemeID="0088">7300000000001</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Payee Name</cbc:Name>
</cac:PartyName>
<cac:PartyLegalEntity>
<cbc:CompanyID schemeID="0007">2201611123</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:PayeeParty>
<!-- Code omitted for clarity -->
</Invoice>
cac:BuyerCustomerParty
In PUF, a new party has been added called Buyer Customer Party. This party should contain information regarding the buyer of the goods or service and should only be used if the buyer party differs from accounting customer party.
If cac:BuyerCustomerParty
is used, the cac:AccountingCustomerParty
is to be considered the receiver of the document.
Below table show available fields in cac:BuyerCustomerParty
, note that additional elements has also been added to the extension available in Party
Path | Description |
---|---|
|
Customer Account ID |
|
Extension Content |
|
Electronic Identifier |
|
Electronic Identifier scheme ID |
|
Buyer Identifier |
|
Buyer Identifier |
|
Buyer name |
|
Postal box |
|
Street name |
|
Additional Street name |
|
Building number |
|
Department |
|
Plot Identification |
|
City Subdvision Name |
|
City name |
|
Postal zone |
|
Country subentity |
|
Country subentity code |
|
Additional address line |
|
Country code |
|
Country name |
|
Company identifier |
|
Tax scheme identifier |
|
Registration name |
|
Legal company identifier |
|
Legal company scheme identifier |
|
Company legal form |
|
Contact name |
|
Contact telephone |
|
Contact E-mail |
|
Accounting telephone |
|
Accounting fax number |
|
Accounting E-mail |
Example
Party structure with both invoice recipient party and buyer party
<Invoice>
<!-- Code omitted for clarity -->
<cac:AccountingCustomerParty> (1)
<cac:Party>
<cbc:EndpointID schemeID="0088">1234567890123</cbc:EndpointID>
<cac:PartyIdentification>
<cbc:ID schemeID="0007">1234561234</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Receiver Trading Name AB</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Street 32</cbc:StreetName>
<cbc:AdditionalStreetName>Po box 878</cbc:AdditionalStreetName>
<cbc:PlotIdentification>0000</cbc:PlotIdentification>
<cbc:CitySubdivisionName>City Subdivision Name</cbc:CitySubdivisionName>
<cbc:CityName>Stockholm</cbc:CityName>
<cbc:PostalZone>123 12</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>SE</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>SE123456789001</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Receiver legal Name</cbc:RegistrationName>
<cbc:CompanyID schemeID="0007">1234561234</cbc:CompanyID>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>Anders Andersson</cbc:Name>
<cbc:Telephone>555444666</cbc:Telephone>
<cbc:ElectronicMail>contact@receiver.com</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:BuyerCustomerParty> (2)
<cac:Party>
<cbc:EndpointID schemeID="0088">7322010000001</cbc:EndpointID>
<cac:PartyIdentification>
<cbc:ID schemeID="0007">1111112222</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Buyer Trading Name AB</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Street 32</cbc:StreetName>
<cbc:AdditionalStreetName>Po box 878</cbc:AdditionalStreetName>
<cbc:PlotIdentification>0000<cbc:PlotIdentification>
<cbc:CitySubdivisionName>City Subdivision Name</cbc:CitySubdivisionName>
<cbc:CityName>Stockholm</cbc:CityName>
<cbc:PostalZone>123 12</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>SE</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>SE111111222201</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Buyer legal Name</cbc:RegistrationName>
<cbc:CompanyID schemeID="0007">1111112222</cbc:CompanyID>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>Daniel Danielsson</cbc:Name>
<cbc:Telephone>33322221111</cbc:Telephone>
<cbc:ElectronicMail>contact@buyer.com</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:BuyerCustomerParty>
<!-- Code omitted for clarity -->
</Invoice>
1 | Information in cac:AccountingCustomerParty will be used to identify the receiver of the document. |
2 | Information in cac:BuyerCustomerParty will be sent to the receiver as buyer information. |
Please note that NOT all e-invoice formats support both invoice recipient and buyer party information, therefore only use both structures when needed. |
cac:TaxRepresentativeParty
Path | Description |
---|---|
|
Seller’s tax representative name |
|
Postal box |
|
Street name |
|
Additional Street name |
|
Building number |
|
Department |
|
Plot Identification |
|
City Subdvision Name |
|
City name |
|
Postal zone |
|
Country subentity |
|
Additional address line |
|
Country code |
|
Country name |
|
Company identifier |
|
Tax scheme identifier |
Example
cac:TaxRepresentativeParty example
<Invoice>
<!-- Code omitted for clarity -->
<cac:TaxRepresentativeParty>
<cac:PartyName>
<cbc:Name>Seller's Tax Representative Name</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:Postbox>54321</cbc:Postbox>
<cbc:StreetName>Street</cbc:StreetName>
<cbc:Department>Department</cbc:Department>
<cbc:PlotIdentification>0000</cbc:PlotIdentification>
<cbc:CitySubdivisionName>City Subdivision Name</cbc:CitySubdivisionName>
<cbc:CityName>City</cbc:CityName>
<cbc:PostalZone>00000</cbc:PostalZone>
<cbc:CountrySubentity>Province</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
<cbc:Name>Germany</cbc:Name>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>DE221043210</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
</cac:TaxRepresentativeParty>
<!-- Code omitted for clarity -->
</Invoice>
cac:Delivery
Below table show available fields in cac:Delivery
, note that additional elements has also been added to the extension available in cac:Delivery and cac:Delivery/cac:DeliveryParty
Path | Description |
---|---|
|
Extension Content |
|
Delivery date |
|
Delivery location identifier |
|
Delivery location identifier scheme identifier |
|
Delivery location description |
|
Postal box |
|
Street name |
|
Additional Street name |
|
Department |
|
Plot Identification |
|
City Subdvision Name |
|
City name |
|
Postal zone |
|
Country subentity |
|
Country subentity code |
|
Additional address line |
|
Country code |
|
Country name |
|
Extension Content |
|
Seller Identifier |
|
Seller Identifier |
|
Delivery party name |
|
Delivery party contact name |
|
Delivery party contact telephone |
|
Delivery party contact email |
|
Despatch party name |
|
Despatch party street |
|
Despatch party city |
|
Despatch party postal zone |
|
Despatch party state/province code |
|
Despatch party country code |
|
Despatch party country name |
Example
cac:Delivery populated with example value
<Invoice>
<!-- Code omitted for clarity -->
<cac:Delivery>
<cbc:ActualDeliveryDate>2019-01-01</cbc:ActualDeliveryDate>
<cac:DeliveryLocation>
<cbc:ID schemeID="0088">7300010000001</cbc:ID>
<cbc:Description>Text describing the delivery location</cbc:Description>
<cac:Address>
<cbc:Postbox>121212</cbc:Postbox>
<cbc:StreetName>Delivery Street</cbc:StreetName>
<cbc:Department>Delivery Department</cbc:Department>
<cbc:PlotIdentification>0000</cbc:PlotIdentification>
<cbc:CitySubdivisionName>Delivery City Subdivision Name</cbc:CitySubdivisionName>
<cbc:CityName>Delivery City</cbc:CityName>
<cbc:PostalZone>55555</cbc:PostalZone>
<cbc:CountrySubentity>Delivery Province</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>SE</cbc:IdentificationCode>
<cbc:Name>Sweden</cbc:Name>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
<cac:DeliveryParty>
<cac:PartyName>
<cbc:Name>Delivery Name</cbc:Name>
</cac:PartyName>
<cac:Contact>
<cbc:Name>Anders Andersson</cbc:Name>
<cbc:Telephone>01113354</cbc:Telephone>
<cbc:ElectronicMail>DeliveryContact@mail.com</cbc:ElectronicMail>
</cac:Contact>
</cac:DeliveryParty>
<cac:Despatch>
<cac:DespatchParty>
<cac:PartyName>
<cbc:Name>Despatch party name</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Street 1</cbc:StreetName>
<cbc:CityName>Jammu</cbc:CityName>
<cbc:PostalZone>181131</cbc:PostalZone>
<cbc:CountrySubentityCode>01</cbc:CountrySubentityCode>
<cac:Country>
<cbc:IdentificationCode>IN</cbc:IdentificationCode>
<cbc:Name>India</cbc:Name>
</cac:Country>
</cac:PostalAddress>
</cac:DespatchParty>
</cac:Despatch>
</cac:Delivery>
<!-- Code omitted for clarity -->
</Invoice>
cac:DeliveryTerms
Path | Description |
---|---|
|
Delivery Terms |
|
Loss risk responsibility code |
|
Loss risk description |
Example
cac:DeliveryTerms example
<Invoice>
<!-- Code omitted for clarity -->
<cac:DeliveryTerms>
<cbc:SpecialTerms>Description of the delivery terms</cbc:SpecialTerms>
<cbc:LossRiskResponsibilityCode>Code to identify the responsibility for the loss risk.</cbc:LossRiskResponsibilityCode>
<cbc:LossRisk>A description of the responsibility for the loss risk.</cbc:LossRisk>
</cac:DeliveryTerms>
<!-- Code omitted for clarity -->
</Invoice>
cac:PaymentMeans
Path | Description |
---|---|
|
Payment means code |
|
Payment means name |
|
Payment Identifier |
|
Primary account number identifier |
|
Card network |
|
Card holder name |
|
Payment account number |
|
Payment account name |
|
Payment account identifier |
|
Payment bank name |
|
Payment mandate reference identifier |
|
Payer account identifier |
Example
cbc:PaymentMeans example
<Invoice>
<!-- Code omitted for clarity -->
<cac:PaymentMeans>
<cbc:PaymentMeansCode>30</cbc:PaymentMeansCode>
<cbc:PaymentID>123456</cbc:PaymentID>
<cac:PayeeFinancialAccount>
<cbc:ID>12345678</cbc:ID>
<cbc:Name>AccountName</cbc:Name>
<cac:FinancialInstitutionBranch>
<cbc:ID>SE:BANKGIRO</cbc:ID>
<cbc:Name>BankName</cbc:Name>
</cac:FinancialInstitutionBranch>
</cac:PayeeFinancialAccount>
</cac:PaymentMeans>
<!-- Code omitted for clarity -->
</Invoice>
cac:PaymentTerms
Below table show available fields in cac:PaymentTerms
, note that additional elements has also been added to the extension available in PaymentTerms.
Path | Description |
---|---|
|
Extension Content |
|
Payment terms description |
|
Penaly interest rate |
Example
cac:PaymentTerms example
<Invoice>
<!-- Code omitted for clarity -->
<cac:PaymentTerms>
<cbc:Note>3</cbc:Note>
<cbc:PenaltySurchargePercent>10</cbc:PenaltySurchargePercent>
</cac:PaymentTerms>
<!-- Code omitted for clarity -->
</Invoice>
cac:AllowanceCharge
Path | Description |
---|---|
|
Allowance or Charge indicator |
|
Allowance or charge reason code |
|
Allowance or charge reason |
|
Allowance or charge percentage |
|
Allowance or charge amount |
|
Allowance or charge amount currency |
|
Allowance or charge base amount |
|
Allowance or charge base amount currency |
|
Allowance or charge tax category code |
|
Allowance or Charge tax percent |
|
Tax exemption reason code |
|
Tax exemption reason |
|
Allowance or Charge tax scheme identifier |
|
Allowance or Charge tax Amount |
|
Allowance or Charge tax Amount currency |
Example
cac:AllowanceCharge populated with example value
<Invoice>
<!-- Code omitted for clarity -->
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Reason for allowance</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="EUR">5.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">100.00</cbc:BaseAmount>
<cac:TaxCategory>
<cbc:ID>Z</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cbc:TaxExemptionReasonCode>vatex-eu-132-1b</cbc:TaxExemptionReasonCode>
<cbc:TaxExemptionReason>Tax exemption reason description</cbc:TaxExemptionReason>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">0.00</cbc:TaxAmount>
</cac:TaxTotal>
</cac:AllowanceCharge>
<!-- Code omitted for clarity -->
</Invoice>
cac:TaxExchangeRate
Path | Description |
---|---|
|
Source currency code |
|
Target currency code |
|
Exchange calculation rate |
|
Operation used to calculate the tax in target currency |
|
Exchange rate date |
Example
cac:TaxExchangeRate with EUR as document currency and USD as tax currency
<Invoice>
<!-- Code omitted for clarity -->
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:TaxCurrencyCode>USD</cbc:TaxCurrencyCode>
<!-- Code omitted for clarity -->
<cac:TaxExchangeRate>
<cbc:SourceCurrencyCode>EUR</cbc:SourceCurrencyCode>
<cbc:TargetCurrencyCode>USD</cbc:TargetCurrencyCode>
<cbc:CalculationRate>1.16</cbc:CalculationRate>
<cbc:MathematicOperatorCode>Multiply</cbc:MathematicOperatorCode>
<cbc:Date>2019-01-01</cbc:Date>
</cac:TaxExchangeRate>
<!-- Code omitted for clarity -->
</Invoice>
cac:TaxTotal
Below table show available fields in cac:TaxTotal/cac:TaxSubtotal
, note that additional elements has also been added to the extension available in cac:TaxTotal/cac:TaxSubtotal.
Path | Description |
---|---|
|
Document total tax amount |
|
Document total tax amount currency |
|
Extension Content |
|
Total taxable amount for each tax category |
|
Total taxable amount for each tax category currency |
|
Total tax amount for each tax category |
|
Total tax amount currency for each tax category |
|
Tax category code |
|
Tax category percent |
|
Tax exemption reason code |
|
Tax exemption reason |
|
Tax scheme identfier |
Example
cac:TaxTotal example
<Invoice>
<!-- Code omitted for clarity -->
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">25.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">100.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">25.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>25</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">-5.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">0.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>Z</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<!-- Code omitted for clarity -->
</Invoice>
cac:LegalMonetaryTotal
Below table show available fields in cac:LegalMonetaryTotal, note that additional elements has also been added to the extension available in cac:LegalMonetaryTotal.
Element | Description |
---|---|
|
Extension Content |
|
Summary of all lines net amount |
|
Summary of all lines net amount currency |
|
Total invoice amount excluding tax |
|
Total invoice amount currency excluding tax |
|
Total invoice amount including tax |
|
Total invoice amount currency including tax |
|
Summary of all allowances on document level |
|
Summary of all allowances on document level currency |
|
Summary of all charges on document level |
|
Summary of all charges on document level currency |
|
Amount already prepaid |
|
Prepaid amount currency |
|
Rounding amount |
|
Rounding amount currency |
|
Payable amount |
|
Payable amount currency |
Example
cac:LegalMonetaryTotal example
<Invoice>
<!-- Code omitted for clarity -->
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">100.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">95.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">120.00</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="EUR">5.00</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="EUR">0.00</cbc:ChargeTotalAmount>
<cbc:PayableAmount currencyID="EUR">110.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<!-- Code omitted for clarity -->
</Invoice>
3.2. cac:InvoiceLine
Examples shown below are based on Invoice, for the use of credit note the corresponding element replacing Invoice/cac:InvoiceLine
is CreditNote/cac:CreditNoteLine
.
ext:UBLExtensions
Path | Description |
---|---|
|
Extension Content RestrictedInformation |
cbc:ID
Path | Description |
---|---|
|
Line Identifier |
Example
cac:InvoiceLine/cbc:ID with example value
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
cbc:Note
Path | Description |
---|---|
|
Line note |
Example
cac:InvoiceLine/cbc:Note with example value
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<!-- Code omitted for clarity -->
<cbc:Note>This</cbc:Note>
<cbc:Note>is an</cbc:Note>
<cbc:Note>Example</cbc:Note>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
cbc:InvoicedQuantity
Path | Description |
---|---|
|
Quantity invoiced |
|
Quantity unit of measure |
Example
cac:InvoiceLine/cbc:InvoicedQuantity with example value
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<!-- Code omitted for clarity -->
<cbc:InvoicedQuantity unitCode="EA">1</cbc:InvoicedQuantity>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
cbc:LineExtensionAmount
Path | Description |
---|---|
|
Net amount |
|
Net amount currency |
Example
cac:InvoiceLine/cbc:LineExtensionAmount with example value
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<!-- Code omitted for clarity -->
<cbc:LineExtensionAmount currencyID="EUR">100.00</cbc:LineExtensionAmount>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
cbc:AccountingCost
Path | Description |
---|---|
|
Invoice line accounting reference |
Example
cac:InvoiceLine/cbc:AccountingCost with example value
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<!-- Code omitted for clarity -->
<cbc:AccountingCost>Accounting cost reference</cbc:AccountingCost>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
cac:InvoicePeriod
Path | Description |
---|---|
|
Invoice line period start date |
|
Invoice line period end date |
Example
cac:InvoiceLine/cac:InvoicePeriod with example value
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<!-- Code omitted for clarity -->
<cac:InvoicePeriod>
<cbc:StartDate>2021-01-01</cbc:StartDate>
<cbc:EndDate>2021-01-31</cbc:EndDate>
</cac:InvoicePeriod>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
cac:OrderLineReference
Below table show available fields in cac:OrderLineReference
, note that additional elements has also been added to the extension available in OrderLineReference.
Path | Description |
---|---|
|
Extension Content |
|
Order line reference |
|
Sales Order line reference |
|
Identifier of the order |
|
Identifier of the sales order |
|
Date of the referenced order |
Example
cac:InvoiceLine/cac:OrderLineReference with example value
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<!-- Code omitted for clarity -->
<cac:OrderLineReference>
<cbc:LineID>1</cbc:LineID>
<cbc:SalesOrderLineID>5</cbc:SalesOrderLineID>
<cac:OrderReference>
<cbc:ID>Purchase Order ID</cbc:ID>
<cbc:SalesOrderID>Sales Order ID</cbc:SalesOrderID>
<cbc:IssueDate>2019-01-01</cbc:IssueDate>
</cac:OrderReference>
</cac:OrderLineReference>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
cac:DespatchLineReference
Path | Description |
---|---|
|
Despatch advice line reference |
|
Identifier of the depatch advice |
|
Date of the referenced despatch advice |
Example
cac:InvoiceLine/cac:DespatchLineReference with example value
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<!-- Code omitted for clarity -->
<cac:DespatchLineReference>
<cbc:LineID>1</cbc:LineID>
<cac:DocumentReference>
<cbc:ID>Despatch Document ID</cbc:ID>
<cbc:IssueDate>2019-01-01</cbc:IssueDate>
</cac:DocumentReference>
</cac:DespatchLineReference>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
cac:DocumentReference
Path | Description |
---|---|
|
Line referenced object identifier |
|
Scheme Identifier for line referenced object |
|
Document type code |
Example
cac:InvoiceLine/cac:DocumentReference with example value
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<!-- Code omitted for clarity -->
<cac:DocumentReference>
<cbc:ID schemeID="AIT">1145</cbc:ID>
<cbc:DocumentTypeCode>130</cbc:DocumentTypeCode>
</cac:DocumentReference>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
cac:Delivery
Path | Description |
---|---|
|
Delivered quantity |
|
Delivered quantity unit of measure |
|
Delivery date |
|
Delivery location idetifier |
|
Delivery location scheme identifier |
|
Street name |
|
Additional street name |
|
Plot Identification |
|
City Subdvision Name |
|
City name |
|
Post code |
|
Country sub entity |
|
Country code |
|
Country name |
Example
cac:InvoiceLine/cac:Delivery example
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<!-- Code omitted for clarity -->
<cac:Delivery>
<cbc:Quantity unitCode="PCE">1</cbc:Quantity>
<cbc:ActualDeliveryDate>2019-01-25</cbc:ActualDeliveryDate>
<cac:DeliveryLocation>
<cbc:ID schemeID="0088">0000000000000</cbc:ID>
<cac:Address>
<cbc:StreetName>Delivery Street</cbc:StreetName>
<cbc:PlotIdentification>0000</cbc:PlotIdentification>
<cbc:CitySubdivisionName>Delivery City Subdivision Name</cbc:CitySubdivisionName>
<cbc:CityName>Delivery City</cbc:CityName>
<cbc:PostalZone>12345</cbc:PostalZone>
<cbc:CountrySubentity>Delivery Province</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>SE</cbc:IdentificationCode>
<cbc:Name>Sweden</cbc:Name>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
</cac:Delivery>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
cac:AllowanceCharge
Path | Description |
---|---|
|
Line allowance or Charge indicator |
|
Line allowance or charge reason code |
|
Line allowance or charge reason |
|
Line allowance or charge percentage |
|
Line allowance or charge amount |
|
Line allowance or charge amount currency |
|
Line allowance or charge base amount |
|
Line allowance or charge base amount currency |
Example
cac:InvoiceLine/cac:AllowanceCharge populated with example value
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<!-- Code omitted for clarity -->
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Reason for allowance</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>5</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">5.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">100.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
cac:TaxTotal
If multiple taxes is provided on one line, note that cac:InvoiceLine/cac:TaxTotal/cac:TaxSubtotal
must be provided for each tax.
Path | Description |
---|---|
|
Line total tax amount |
|
Line total tax amount currency |
|
Total taxable amount for each tax category |
|
Total taxable amount for each tax category currency* |
|
Total tax amount for each tax category |
|
Total tax amount currency for each tax category |
|
Line tax category code |
|
Tax category percent |
|
Tax exemption reason code |
|
Tax exemption reason |
|
Tax scheme identfier |
Example
cac:InvoiceLine/cac:TaxTotal example
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<!-- Code omitted for clarity -->
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">25.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">100.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">25.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>25</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">-5.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">0.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>Z</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
Total tax currency amount
If the need to provide the total tax amount on each line, this should be sent as a separate cac:TaxTotal/cbc:TaxAmount
, see example below.
Example
<Invoice>
<!-- Code omitted for clarity -->
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:TaxCurrencyCode>USD</cbc:TaxCurrencyCode>
<!-- Code omitted for clarity -->
<cac:TaxExchangeRate>
<cbc:SourceCurrencyCode>EUR</cbc:SourceCurrencyCode>
<cbc:TargetCurrencyCode>USD</cbc:TargetCurrencyCode>
<cbc:CalculationRate>1.17</cbc:CalculationRate>
<cbc:MathematicOperatorCode>Multiply</cbc:MathematicOperatorCode>
<cbc:Date>2019-01-01</cbc:Date>
</cac:TaxExchangeRate>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<!-- Code omitted for clarity -->
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">25.00</cbc:TaxAmount> (1)
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">100.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">25.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>25</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="USD">29.25</cbc:TaxAmount> (2)
</cac:TaxTotal>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
</Invoice>
1 | Total tax amount in document currency |
2 | Total tax amount in tax currency |
cac:Item
Path | Description |
---|---|
|
Extension Content |
|
Item description |
|
Item name |
|
Buyer’s item identifier |
|
Seller’s item identifier |
|
Manufacturer’s item identifier |
|
Standard item identifier |
|
Standard item identifier scheme identifier |
|
Item country origin |
|
Item classification code |
|
Item classification list identifier |
|
Item classification list version identifier |
|
Tax category identifier |
|
Tax category percent |
|
Tax scheme identfier |
|
Additional item property name |
|
Additional item information value |
|
Manufactured date |
|
Best before date |
|
Serial number |
|
Lot number identifier |
Example
cac:InvoiceLine/cac:Item example
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<!-- Code omitted for clarity -->
<cac:Item>
<cbc:Description>Item description</cbc:Description>
<cbc:Name>Item name</cbc:Name>
<cac:BuyersItemIdentification>
<cbc:ID>BuyersItemIdentification</cbc:ID>
</cac:BuyersItemIdentification>
<cac:SellersItemIdentification>
<cbc:ID>SellersItemIdentification</cbc:ID>
</cac:SellersItemIdentification>
<cac:ManufacturersItemIdentification>
<cbc:ID>ManufacturersItemIdentification</cbc:ID>
</cac:ManufacturersItemIdentification>
<cac:StandardItemIdentification>
<cbc:ID schemeID="0088">7300010000001</cbc:ID>
</cac:StandardItemIdentification>
<cac:ClassifiedTaxCategory>
<cbc:ID schemeID="UNCL5305">S</cbc:ID>
<cbc:Percent>25</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
<cac:AdditionalItemProperty>
<cbc:Name>Size</cbc:Name>
<cbc:Value>XXL</cbc:Value>
</cac:AdditionalItemProperty>
<cac:ItemInstance>
<cbc:ManufactureDate>2018-01-01</cbc:ManufactureDate>
<cbc:BestBeforeDate>2018-01-01</cbc:BestBeforeDate>
<cbc:SerialID>123456789</cbc:SerialID>
<cac:LotIdentification>
<cbc:LotNumberID>1111111</cbc:LotNumberID>
</cac:LotIdentification>
</cac:ItemInstance>
</cac:Item>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
cac:Price
Below table show available fields in cac:Price
, note that additional elements has also been added to the extension available in Price.
Path | Description |
---|---|
|
Extension Content |
|
Item net price |
|
Item net price currency |
|
Base quantity |
|
Base quantity unit of measure |
|
Charge indicator |
|
Allowance Amount |
|
Allowance Amount currency |
|
Base amount |
|
Base amount currency |
Example
cac:InvoiceLine/cac:Price example
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<!-- Code omitted for clarity -->
<cac:Price>
<cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="EA">1</cbc:BaseQuantity>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:Amount currencyID="EUR">10</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">110.00</cbc:BaseAmount>
</cac:AllowanceCharge>
</cac:Price>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
4. Extensions
4.1. Document Level
Below chapters describe the different extensions added on document level.
4.1.1. RestrictedInformation
RestrictedInformation has been added on document level in order to cater the need for unique country specific data and internal customer information that might be required for internal processing.
Note that no customer specific information can be added without prior consulting with Pagero. If country specific information is available as restricted information value, this can be found in the Country Specific section. |
The UBL extension to be used for below elements can be found here.
The structure used from PUF-ExtensionComponent.xsd
is PageroExtension/RestrictedInformation
.
See example below as well as the URI to be used for this extension.
Example
<Invoice>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:RestrictedInformation</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:RestrictedInformation/> (2)
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</Invoice>
1 | URI to be used if this extension is added. |
2 | Structure to be used if information from this extension will be used. |
Below table show the definition of the new element added to the extension.
Element | Description |
---|---|
|
Key defining the type of value |
|
Value relevant to the assigned key |
Example
RestrictedInformation example from Hungary specific section
<Invoice>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:RestrictedInformation</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:RestrictedInformation>
<puf:Key>modifyWithoutMaster</puf:Key>
<puf:Value>false</puf:Value>
</puf:RestrictedInformation>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</Invoice>
4.1.2. SupplyType
In order to specify a supply type for the invoice, following elements has been added in the below extension.
The UBL extension to be used for below elements can be found here.
The structure used from PUF-ExtensionComponent.xsd
is PageroExtension/SupplyType
.
See example below as well as the URI to be used for this extension.
Example
<Invoice>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:SupplyType</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:SupplyType/> (2)
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</Invoice>
1 | URI to be used if this extension is added. |
2 | Structure to be used if information from this extension will be used. |
Below table shows the definition of the new elements added to the extension.
Element | Description |
---|---|
|
Code identifying the type of supply |
Example
Supply Type
<Invoice>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:SupplyType</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:SupplyType>
<puf:Code>B2B</puf:Code>
</puf:SupplyType>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</Invoice>
4.1.3. DutyStamp
In order to specify a duty stamp for the invoice, following elements has been added in the below extension.
The UBL extension to be used for below elements can be found here.
The structure used from PUF-ExtensionComponent.xsd
is PageroExtension/DutyStamp
.
See example below as well as the URI to be used for this extension.
Example
<Invoice>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:DutyStamp</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:DutyStamp/> (2)
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</Invoice>
1 | URI to be used if this extension is added. |
2 | Structure to be used if information from this extension will be used. |
Below table shows the definition of the new elements added to the extension.
Element | Description |
---|---|
|
Duty stamp |
|
Duty stamp currency |
Example
Duty Stamp
<Invoice>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:DutyStamp</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:DutyStamp>
<puf:Amount currencyID="EUR">2.00</puf:Amount>
</puf:DutyStamp>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</Invoice>
4.1.4. IGSTOnIntra
In order to specify if IGST is applicable on intra state supplies the following elements has been added in the below extension.
The UBL extension to be used for below elements can be found here.
The structure used from PUF-ExtensionComponent.xsd
is PageroExtension/IGSTOnIntra
.
See example below as well as the URI to be used for this extension.
Example
<Invoice>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:IGSTOnIntra</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:IGSTOnIntra/> (2)
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</Invoice>
1 | URI to be used if this extension is added. |
2 | Structure to be used if information from this extension will be used. |
Below table shows the definition of the new elements added to the extension.
Element | Description |
---|---|
|
Indicator if IGST is applicable for intra state supplies |
Example
IGST on intra_
<Invoice>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:IGSTOnIntra</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:IGSTOnIntra>true</puf:IGSTOnIntra>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</Invoice>
4.1.5. OrderReference
The UBL extension to be used for below elements can be found here.
The structure used from PUF-ExtensionComponent.xsd
is PageroExtension/OrderReferenceExtension
.
See example below as well as the URI to be used for this extension.
Example
<Invoice>
<!-- Code omitted for clarity -->
<cac:OrderReference>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:OrderReferenceExtension</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:OrderReferenceExtension/> (2)
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:OrderReference>
<!-- Code omitted for clarity -->
</Invoice>
1 | URI to be used if this extension is added. |
2 | Structure to be used if information from this extension will be used. |
Below table show the definition of the new element added to the extension.
Element | Description |
---|---|
|
Date of the sales order, date should be formatted yyyy-mm-dd. |
Example
cac:OrderReference containing all information available
<Invoice>
<!-- Code omitted for clarity -->
<cac:OrderReference>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:OrderReferenceExtension</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:OrderReferenceExtension>
<puf:SalesOrderIssueDate>2019-01-01</puf:SalesOrderIssueDate>
</puf:OrderReferenceExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:ID>Purchase Order ID</cbc:ID>
<cbc:SalesOrderID>Sales Order ID</cbc:SalesOrderID>
<cbc:IssueDate>2019-01-01</cbc:IssueDate>
</cac:OrderReference>
<!-- Code omitted for clarity -->
</Invoice>
4.1.6. BillingReference
The UBL extension to be used for below elements can be found here.
The structure used from PUF-ExtensionComponent.xsd
is PageroExtension/BillingReferenceExtension
.
Example
Example below how the URI is used for this extension.
<Invoice>
<!-- Code omitted for clarity -->
<cac:BillingReference>
<cac:InvoiceDocumentReference>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:BillingReferenceExtension</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:BillingReferenceExtension/> (2)
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
</cac:InvoiceDocumentReference>
</cac:BillingReference>
<!-- Code omitted for clarity -->
</Invoice>
1 | URI to be used if this extension is added. |
2 | Structure to be used if information from this extension will be used. |
Element | Description |
---|---|
|
Textual note describing the reason for issuing a credit/debit note |
Example
Contract document reference ID, date and extension
<Invoice>
<!-- Code omitted for clarity -->
<cac:BillingReference>
<cac:InvoiceDocumentReference>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:BillingReferenceExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:BillingReferenceExtension>
<cbc:Note>Textual note describing the reason for issuing a credit/debit note</cbc:Note>
</puf:BillingReferenceExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:ID>Invoice reference ID</cbc:ID>
<cbc:IssueDate>2021-01-01</cbc:IssueDate>
</cac:InvoiceDocumentReference>
</cac:BillingReference>
<!-- Code omitted for clarity -->
</Invoice>
4.1.7. ContractDocumentReference
The UBL extension to be used for below elements can be found here.
The structure used from PUF-ExtensionComponent.xsd
is PageroExtension/ContractDocumentReferenceExtension
.
Example
Example below how the URI is used for this extension.
<Invoice>
<!-- Code omitted for clarity -->
<cac:ContractDocumentReference>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:ContractDocumentReferenceExtension</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:ContractDocumentReferenceExtension/> (2)
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
</cac:ContractDocumentReference>
<!-- Code omitted for clarity -->
</Invoice>
1 | URI to be used if this extension is added. |
2 | Structure to be used if information from this extension will be used. |
Element | Description |
---|---|
|
ID for the buyer referenced contract document. |
|
Issue date for the buyer referenced contract document, date should be formatted yyyy-mm-dd. |
Example
Contract document reference ID, date and extension
<Invoice>
<!-- Code omitted for clarity -->
<cac:ContractDocumentReference>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:ContractDocumentReferenceExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:ContractDocumentReferenceExtension>
<puf:BuyerContractID>BuyerContractID</puf:BuyerContractID>
<puf:BuyerContractIssueDate>2019-01-01</puf:BuyerContractIssueDate>
</puf:ContractDocumentReferenceExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:ID>Contract Document ID</cbc:ID>
<cbc:IssueDate>2019-01-01</cbc:IssueDate>
</cac:ContractDocumentReference>
<!-- Code omitted for clarity -->
</Invoice>
4.1.8. Party
The UBL extension to be used for below elements can be found in the below parties:
The structure used from PUF-ExtensionComponent.xsd
is PageroExtension/PartyExtension
.
See example below as well as the URI to be used for this extension.
Example
<Invoice>
<!-- Code omitted for clarity -->
<cac:Party>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:PartyExtension</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:PartyExtension/> (2)
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:Party>
<!-- Code omitted for clarity -->
</Invoice>
1 | URI to be used if this extension is added. |
2 | Structure to be used if information from this extension will be used. |
Below table shows the definition of the new elements added to the extension.
Path | Description |
---|---|
|
Additional registration data associated with the party. |
|
To identify the type of registration data. The IDType must be coded using the PUF-001-REGISTRATIONDATA code list. |
|
Registration data IDType must have a list identifier attribute “PUF-001-REGISTRATIONDATA”. |
|
Additional destination address identifier. |
|
Name of the additional destination unit. |
|
To identify the type of additional destination address identifier. The IDType must be coded using the PUF-002-ADAID code list. |
|
IDType must have a list identifier attribute “PUF-002-ADAID”. |
Registration data
When there is a need to provide additional registration data associated with the organization this can be done using the RegistrationData element. To identify the type of registration data.
The puf:IDType
must be coded using the PUF-001-REGISTRATIONDATA code list.
See code list PUF-001-REGISTRATIONDATA for all supported types of registration data.
Example
<Invoice>
<!-- Code omitted for clarity -->
<cac:Party>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:PartyExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:PartyExtension>
<puf:RegistrationData>
<cbc:ID>SomeRegistrationData</cbc:ID>
<puf:IDType listID="PUF-001-REGISTRATIONDATA">ES:Folio</puf:IDType>
</puf:RegistrationData>
<puf:RegistrationData>
<cbc:ID>SomeRegistrationData</cbc:ID>
<puf:IDType listID="PUF-001-REGISTRATIONDATA">ES:Book</puf:IDType>
</puf:RegistrationData>
</puf:PartyExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:Party>
<!-- Code omitted for clarity -->
</Invoice>
Additional Destination Address Identifier (ADAID)
Additional Destination Address Identifier (ADAID) is used when there is a need to provide additional routing codes in order for the invoice to be sent to the correct recipient. This is mostly used to public entities (e.g. government recipients).
To identify the type of ADAID, the puf:IDType
must be coded using the PUF-002-ADAID code list.
See code list PUF-002-ADAID for supported types of ADAID.
Example
<Invoice>
<!-- Code omitted for clarity -->
<cac:Party>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:PartyExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:PartyExtension>
<puf:ADAID>
<cbc:ID>1234567890</cbc:ID>
<cbc:Name>Name of Unit</cbc:Name>
<puf:IDType listID="PUF-002-ADAID">FR:ServiceCode</puf:IDType>
</puf:ADAID>
</puf:PartyExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:Party>
<!-- Code omitted for clarity -->
</Invoice>
4.1.9. Delivery
The UBL extension to be used for below elements can be found here.
The structure used from PUF-ExtensionComponent.xsd
is PageroExtension/DeliveryExtension
.
See example below as well as the URI to be used for this extension.
Example
<Invoice>
<!-- Code omitted for clarity -->
<cac:Delivery>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:DeliveryExtension</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:DeliveryExtension/> (2)
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:Delivery>
<!-- Code omitted for clarity -->
</Invoice>
1 | URI to be used if this extension is added. |
2 | Structure to be used if information from this extension will be used. |
Below table show the definition of the additional elements added to the delivery extension.
Element | Description |
---|---|
|
Description of the delivery method (free text). |
|
A code for the delivery method. |
Example
Delivery method and code defined
<Invoice>
<!-- Code omitted for clarity -->
<cac:Delivery>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:DeliveryExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:DeliveryExtension>
<puf:DeliveryMethod>
<cbc:Note>Text describing the delivery method</cbc:Note>
<puf:Code>Deliver Method Code</puf:Code>
</puf:DeliveryMethod>
</puf:DeliveryExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:Delivery>
<!-- Code omitted for clarity -->
</Invoice>
4.1.10. PaymentTerms
The UBL extension to be used for below elements can be found here.
The structure used from PUF-ExtensionComponent.xsd
is puf:PageroExtension/puf:PaymentTermsExtension
.
See example below as well as the URI to be used for this extension.
Example
<Invoice>
<!-- Code omitted for clarity -->
<cac:PaymentTerms>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:PaymentTermsExtension</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:PaymentTermsExtension/> (2)
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:PaymentTerms>
<!-- Code omitted for clarity -->
</Invoice>
1 | URI to be used if this extension is added. |
2 | Structure to be used if information from this extension will be used. |
Below table shows the definition of the extended element.
Element | Description |
---|---|
|
Penalty text due to late payment, if the need of explicitly stating a penalty text separated from the regular payment terms. |
Example
Penalty text provided in extension
<Invoice>
<!-- Code omitted for clarity -->
<cac:PaymentTerms>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:PaymentTermsExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:PaymentTermsExtension>
<puf:Penalty>
<cbc:Note>Penalty text due to late payment</cbc:Note>
</puf:Penalty>
</puf:PaymentTermsExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:PaymentTerms>
<!-- Code omitted for clarity -->
</Invoice>
4.1.11. TaxTotal
The UBL extension to be used for below elements can be found here.
The structure used from PUF-ExtensionComponent.xsd
is PageroExtension/TaxSubtotalExtension
.
See example below as well as the URI to be used for this extension.
Example
<Invoice>
<!-- Code omitted for clarity -->
<cac:TaxTotal>
<cac:TaxSubtotal>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:TaxSubtotalExtension</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:TaxSubtotalExtension/> (2)
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:TaxSubtotal>
</cac:TaxTotal>
<!-- Code omitted for clarity -->
</Invoice>
1 | URI to be used if this extension is added. |
2 | Structure to be used if information from this extension will be used. |
Below table lists all additional elements added to the extension.
Element | Description |
---|---|
|
Tax currency taxable amount |
|
Tax currency taxable amount currency |
|
Tax currency tax amount |
|
Tax currency tax amount currency |
|
Total amount including tax |
|
Currency of TaxInclusiveAmount |
|
Total amount including tax in tax currency |
|
Currency of TaxCurrencyTaxInclusiveAmount |
|
Tax chargeability |
Tax currency amounts
In Peppol BIS 3.0 billing it’s only possible to provide the tax currency amount summary of all sub totals.
In order to extend the support, it’s possible to use PUF extension to provide the taxable and tax amount in tax currency per each sub total. See example below.
Example
<Invoice>
<!-- Code omitted for clarity -->
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:TaxCurrencyCode>USD</cbc:TaxCurrencyCode>
<!-- Code omitted for clarity -->
<cac:TaxExchangeRate>
<cbc:SourceCurrencyCode>EUR</cbc:SourceCurrencyCode>
<cbc:TargetCurrencyCode>USD</cbc:TargetCurrencyCode>
<cbc:CalculationRate>1.17</cbc:CalculationRate>
<cbc:MathematicOperatorCode>Multiply</cbc:MathematicOperatorCode>
<cbc:Date>2019-01-01</cbc:Date>
</cac:TaxExchangeRate>
<!-- Code omitted for clarity -->
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">37.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:TaxSubtotalExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:TaxSubtotalExtension>
<puf:TaxCurrencyTaxableAmount currencyID="USD">117.00</puf:TaxCurrencyTaxableAmount> (1)
<puf:TaxCurrencyTaxAmount currencyID="USD">29.25</puf:TaxCurrencyTaxAmount> (2)
<puf:TaxInclusiveAmount currencyID="EUR">125.00</puf:TaxInclusiveAmount>
<puf:TaxCurrencyTaxInclusiveAmount currencyID="USD">146.25</puf:TaxCurrencyTaxInclusiveAmount>
</puf:TaxSubtotalExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:TaxableAmount currencyID="EUR">100.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">25.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>25</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:TaxSubtotalExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:TaxSubtotalExtension>
<puf:TaxCurrencyTaxableAmount currencyID="USD">117.00</puf:TaxCurrencyTaxableAmount> (3)
<puf:TaxCurrencyTaxAmount currencyID="USD">14.04</puf:TaxCurrencyTaxAmount> (4)
<puf:TaxInclusiveAmount currencyID="EUR">112.00</puf:TaxInclusiveAmount>
<puf:TaxCurrencyTaxInclusiveAmount currencyID="USD">131.04</puf:TaxCurrencyTaxInclusiveAmount>
</puf:TaxSubtotalExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:TaxableAmount currencyID="EUR">100.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">12.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>12</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="USD">43.29</cbc:TaxAmount> (5)
</cac:TaxTotal>
<!-- Code omitted for clarity -->
</Invoice>
1 | Taxable amount in tax currency for 25 % rate |
2 | Tax amount in tax currency for 25 % rate |
3 | Taxable amount in tax currency for 12 % rate |
4 | Tax amount in tax currency for 12 % rate |
5 | Summary of all sub totals TaxCurrencyTaxAmount |
4.1.12. LegalMonetaryTotal
The UBL extension to be used for below elements can be found here.
The structure used from PUF-ExtensionComponent.xsd
is PageroExtension/LegalMonetaryTotalExtension
.
See example below as well as the URI to be used for this extension.
Example
<Invoice>
<!-- Code omitted for clarity -->
<cac:LegalMonetaryTotal>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LegalMonetaryTotalExtension</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:LegalMonetaryTotalExtension/> (2)
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:LegalMonetaryTotal>
<!-- Code omitted for clarity -->
</Invoice>
1 | URI to be used if this extension is added. |
2 | Structure to be used if information from this extension will be used. |
Below table shows the definition of the new elements added to the extension.
Element | Description |
---|---|
|
If the document currency and tax currency differs, Tax Exclusive Amount in Tax currency should be specified here. |
|
Currency of the Tax Currency Tax ExclusiveAmount. |
|
If the document currency and tax currency differs, Tax Inclusive Amount in Tax currency should be specified here. |
|
Currency of the Tax Currency TaxInclusive Amount. |
|
If the document currency and tax currency differs, Payable Amount in Tax currency should be specified here. |
|
Currency of the Tax Currency Payable Amount. |
|
Payment in kind amount on invoice. |
|
Currency of the Payment in kind amount. |
|
Description of payment in kind. |
Tax currency amounts
This section show an example of how to provide the documents total amounts in its tax currency.
Example
Example with EUR as document currency and USD as Tax currency
<Invoice>
<!-- Code omitted for clarity -->
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:TaxCurrencyCode>USD</cbc:TaxCurrencyCode>
<!-- Code omitted for clarity -->
<cac:TaxExchangeRate>
<cbc:SourceCurrencyCode>EUR</cbc:SourceCurrencyCode>
<cbc:TargetCurrencyCode>USD</cbc:TargetCurrencyCode>
<cbc:CalculationRate>1.16</cbc:CalculationRate> (1)
<cbc:MathematicOperatorCode>Multiply</cbc:MathematicOperatorCode>
<cbc:Date>2017-12-01</cbc:Date>
</cac:TaxExchangeRate>
<!-- Code omitted for clarity -->
<cac:LegalMonetaryTotal>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LegalMonetaryTotalExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:LegalMonetaryTotalExtension>
<puf:TaxCurrencyTaxExclusiveAmount currencyID="USD">116.00</puf:TaxCurrencyTaxExclusiveAmount> (2)
<puf:TaxCurrencyTaxInclusiveAmount currencyID="USD">116.00</puf:TaxCurrencyTaxInclusiveAmount> (3)
<puf:TaxCurrencyPayableAmount currencyID="USD">116.00</puf:TaxCurrencyPayableAmount> (4)
</puf:LegalMonetaryTotalExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:TaxExclusiveAmount currencyID="EUR">100.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">100.00</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="EUR">100.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<!-- Code omitted for clarity -->
</Invoice>
1 | Exchange rate which the calculation is based upon. |
2 | Amount in tax currency calculated upon TaxExclusiveAmount and CalculationRate . |
3 | Amount in tax currency calculated upon TaxInclusiveAmount and CalculationRate . |
4 | Amount in tax currency calculated upon PayableAmount and CalculationRate . |
Please note that tax has been excluded in above example. |
Payment in Kind
Payment in kind is a way to use goods or services as payment instead of cash.
The elements available in PUF allow the possibility to provide the corresponding amount of the goods and services and a description.
Example
Payment In Kind is 100 EUR
<Invoice>
<!-- Code omitted for clarity -->
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">250</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">1000</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">250</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>25.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LegalMonetaryTotalExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:LegalMonetaryTotalExtension>
<puf:PaymentInKind>
<puf:Amount currency="EUR">100</puf:Amount> (1)
<cbc:Note>Text describing the payment in kind</cbc:Note>
</puf:PaymentInKind>
</puf:LegalMonetaryTotalExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:LineExtensionAmount currencyID="EUR">1000</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">1000</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">1250</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="EUR">1150</cbc:PayableAmount> (2)
</cac:LegalMonetaryTotal>
<!-- Code omitted for clarity -->
</Invoice>
1 | The amount 100 EUR is the payment in kind. |
2 | 100 EUR is subtracted on the TaxInclusiveAmount, calculation 1250 - 100 = 1150, resulting in new Payable amount. |
4.2. Line Level
Below chapters describe the different extensions added on line level.
4.2.1. RestrictedInformation
RestrictedInformation has been added on line level in order to cater the need for unique country specific data and internal customer information that might be required for internal processing.
Note that no customer specific information can be added without prior consulting with Pagero. If country specific information is available as restricted information value, this can be found in the Country Specific section. |
The UBL extension to be used for TaxCurrencyLineExtensionAmount on line level is ext:UBLExtensions.
The structure used from PUF-ExtensionComponent.xsd
is PageroExtension/LineExtension
.
See example below as well as the URI to be used for this extension.
Example
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LineExtension</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:LineExtension>
<puf:RestrictedInformation/> (2)
</puf:LineExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
1 | URI to be used if this extension is added. |
2 | Structure to be used if information from this extension will be used. |
Below table show the definition of the new element added to the extension.
Element | Description |
---|---|
|
Key defining the type of value |
|
Value relevant to the assigned key |
Example
RestrictedInformation example from Hungary specific section
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LineExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:LineExtension>
<puf:RestrictedInformation>
<puf:Key>lineModificationReferenceLineOperation</puf:Key>
<puf:Value>CREATE</puf:Value>
</puf:RestrictedInformation>
</puf:LineExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
4.2.2. TaxCurrencyLineExtensionAmount
Element TaxCurrencyLineExtensionAmount
has been added in order to specify the lines net amount in tax currency.
The UBL extension to be used for TaxCurrencyLineExtensionAmount on line level is ext:UBLExtensions.
The structure used from PUF-ExtensionComponent.xsd
is PageroExtension/LineExtension
.
See example below as well as the URI to be used for this extension.
Example
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LineExtension</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:LineExtension/> (2)
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
1 | URI to be used if this extension is added. |
2 | Structure to be used if information from this extension will be used. |
Below table shows the definition of the new elements added to the extension.
Element | Description |
---|---|
|
Net amount in tax currency. |
|
Currency of the TaxCurrencyLineExtensionAmount. |
Example
Line with both net amount in document currency and tax currency
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LineExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:LineExtension>
<puf:TaxCurrencyLineExtensionAmount currencyID="USD">117.00</puf:TaxCurrencyLineExtensionAmount> (1)
</puf:LineExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:LineExtensionAmount currencyID="EUR">100.00</cbc:LineExtensionAmount> (2)
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
1 | The net amount in tax currency |
2 | The net amount in document currency |
4.2.3. TaxInclusiveLineExtensionAmount
Element TaxInclusiveLineExtensionAmount
has been added in order to specify the lines total amount including taxes.
The UBL extension to be used for TaxInclusiveLineExtensionAmount on line level is ext:UBLExtensions.
The structure used from PUF-ExtensionComponent.xsd
is PageroExtension/LineExtension
.
See example below as well as the URI to be used for this extension.
Example
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LineExtension</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:LineExtension/> (2)
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
1 | URI to be used if this extension is added. |
2 | Structure to be used if information from this extension will be used. |
Below table shows the definition of the new elements added to the extension.
Element | Description |
---|---|
|
Total line amount, including tax, discount and charges. |
|
Currency of the TaxInclusiveLineExtensionAmount. |
Example
Line with tax inclusive amount
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LineExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:LineExtension>
<puf:TaxInclusiveLineExtensionAmount currencyID="EUR">1100</puf:TaxInclusiveLineExtensionAmount> (1)
</puf:LineExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:LineExtensionAmount currencyID="EUR">1000</cbc:LineExtensionAmount> (2)
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">100</cbc:TaxAmount>
</cac:TaxTotal>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
1 | The amount including tax |
2 | The amount excluding tax |
4.2.4. TaxCurrencyTaxInclusiveLineExtensionAmount
Element TaxCurrencyTaxInclusiveLineExtensionAmount
has been added in order to specify the lines total amount including taxes in tax currency.
The UBL extension to be used for TaxInclusiveLineExtensionAmount on line level is ext:UBLExtensions.
The structure used from PUF-ExtensionComponent.xsd
is PageroExtension/LineExtension
.
See example below as well as the URI to be used for this extension.
Example
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LineExtension</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:LineExtension/> (2)
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
1 | URI to be used if this extension is added. |
2 | Structure to be used if information from this extension will be used. |
Below table shows the definition of the new elements added to the extension.
Element | Description |
---|---|
|
Total line amount, including tax, discount and charges in tax currency. |
|
Currency of the TaxCurrencyTaxInclusiveLineExtensionAmount. |
Example
Line with the total amount including tax both in document and tax currency
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LineExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:LineExtension>
<puf:TaxInclusiveLineExtensionAmount currencyID="EUR">100.00</puf:TaxInclusiveLineExtensionAmount> (1)
<puf:TaxCurrencyTaxInclusiveLineExtensionAmount currencyID="USD">120.00</puf:TaxCurrencyTaxInclusiveLineExtensionAmount> (2)
</puf:LineExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
1 | The amount including tax in document currency |
2 | The amount including tax in tax currency |
4.2.5. LineExclAllowanceChargeAmount
In addition to the LineExtensionAmount a new element has been added to specify the line amount excluding any allowances and charges on the line.
The UBL extension to be used for LineExclAllowanceChargeAmount on line level is ext:UBLExtensions.
The structure used from PUF-ExtensionComponent.xsd
is PageroExtension/LineExtension
.
See example below as well as the URI to be used for this extension.
Example
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LineExtension</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:LineExtension/> (2)
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
1 | URI to be used if this extension is added. |
2 | Structure to be used if information from this extension will be used. |
Below table shows the definition of the new elements added to the extension.
Element | Description |
---|---|
|
Sum of the line amounts, the amount is excluded VAT, Tax, allowances and charges. |
|
Currency of the Line Excl Allowance Charge Amount. |
Example
Line with 100 EUR discount
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LineExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:LineExtension>
<puf:LineExclAllowanceChargeAmount currencyID="EUR">1000</puf:LineExclAllowanceChargeAmount> (1)
</puf:LineExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:LineExtensionAmount currencyID="EUR">900</cbc:LineExtensionAmount> (2)
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:Amount currencyID="EUR">100</cbc:Amount>
</cac:AllowanceCharge>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
1 | The amount excluded the discount |
2 | The amount included the discount |
4.2.6. OriginatorDocumentReference
In order to specify the tender reference on line level, Originator document reference has been added to line extension.
The UBL extension to be used for OriginatorDocumentReference on line level is ext:UBLExtensions.
The structure used from PUF-ExtensionComponent.xsd
is PageroExtension/LineExtension
.
See example below as well as the URI to be used for this extension.
Example
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LineExtension</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:LineExtension>
<puf:OriginatorDocumentReference/> (2)
</puf:LineExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
1 | URI to be used if this extension is added. |
2 | Structure to be used if information from this extension will be used. |
Below table shows the definition of the new elements added to the extension.
Element | Description |
---|---|
|
Identification of the tender reference |
|
Date of issue of the referenced tender, date should be formatted yyyy-mm-dd. |
Example
Originator document reference ID and date
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LineExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:LineExtension>
<puf:OriginatorDocumentReference>
<cbc:ID>123456</cbc:ID>
<cbc:IssueDate>2018-01-01</cbc:IssueDate>
</puf:OriginatorDocumentReference>
</puf:LineExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
4.2.7. ProjectReference
In order to specify the project reference on line level, project reference has been added to line extension.
The UBL extension to be used for ProjectReference on line level is ext:UBLExtensions.
The structure used from PUF-ExtensionComponent.xsd
is PageroExtension/LineExtension
.
See example below as well as the URI to be used for this extension.
Example
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LineExtension</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:LineExtension>
<puf:ProjectReference/> (2)
</puf:LineExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
1 | URI to be used if this extension is added. |
2 | Structure to be used if information from this extension will be used. |
Below table shows the definition of the new elements added to the extension.
Element | Description |
---|---|
|
Identification of the project reference. |
Example
Project reference ID
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LineExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:LineExtension>
<puf:ProjectReference>
<cbc:ID>123456</cbc:ID>
</puf:ProjectReference>
</puf:LineExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
4.2.8. OrderLineReference
In addition, an extension has been created for providing additional information not supported in UBL 2.1.
The UBL extension to be used for below elements can be found here.
The structure used from PUF-ExtensionComponent.xsd
is PageroExtension/LineExtension
.
See example below as well as the URI to be used for this extension.
Example
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<!-- Code omitted for clarity -->
<cac:OrderLineReference>
<cac:OrderReference>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LineExtension</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:LineExtension>
<puf:OrderLineReference/> (2)
</puf:LineExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:OrderReference>
</cac:OrderLineReference>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
1 | URI to be used if this extension is added. |
2 | Structure to be used if information from this extension will be used. |
Below table show the definition of the new element added to the extension.
Element | Description |
---|---|
|
Date of the sales order, date should be formatted yyyy-mm-dd. |
Example
Order line reference containing all available elements
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<!-- Code omitted for clarity -->
<cac:OrderLineReference>
<cbc:LineID>1</cbc:LineID>
<cac:OrderReference>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LineExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:LineExtension>
<puf:OrderLineReference>
<puf:SalesOrderIssueDate>2019-01-01</puf:SalesOrderIssueDate>
</puf:OrderLineReference>
</puf:LineExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:ID>Purchase Order ID</cbc:ID>
<cbc:SalesOrderID>Sales Order ID</cbc:SalesOrderID>
<cbc:IssueDate>2019-01-01</cbc:IssueDate>
</cac:OrderReference>
</cac:OrderLineReference>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
4.2.9. ContractDocumentReference
In order to specify the contract information on line level, ContractDocumentReference has been added to Line extension.
The UBL extension to be used for ContractDocumentReference on line level is ext:UBLExtensions.
The structure used from PUF-ExtensionComponent.xsd
is PageroExtension/LineExtension
.
See example below as well as the URI to be used for this extension.
Example
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LineExtension</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:LineExtension>
<puf:ContractDocumentReference/> (2)
</puf:LineExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
1 | URI to be used if this extension is added. |
2 | Structure to be used if information from this extension will be used. |
Below table shows the definition of the new elements added to the extension.
Element | Description |
---|---|
|
Identification of the referenced contract. |
|
Date of issue of the referenced contract, date should be formatted yyyy-mm-dd. |
|
ID for the buyer referenced contract document. |
|
Issue date for the buyer referenced contract document, date should be formatted yyyy-mm-dd. |
Example
Contract document ID and date
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LineExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:LineExtension>
<puf:ContractDocumentReference>
<cbc:ID>123456</cbc:ID>
<cbc:IssueDate>2018-01-01</cbc:IssueDate>
<puf:BuyerContractID>BuyerContractID</puf:BuyerContractID>
<puf:BuyerContractIssueDate>2019-01-01</puf:BuyerContractIssueDate>
</puf:ContractDocumentReference>
</puf:LineExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
4.2.10. Item
The UBL extension to be used for below elements can be found here.
The structure used from PUF-ExtensionComponent.xsd
is PageroExtension/ItemExtension
.
See example below as well as the URI to be used for this extension.
Example
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<!-- Code omitted for clarity -->
<cac:Price>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:ItemExtension</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:ItemExtension/> (2)
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:Price>
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
1 | URI to be used if this extension is added. |
2 | Structure to be used if information from this extension will be used. |
Below table show the definition of the new element added to the extension.
Element | Description |
---|---|
|
Type of item, valid values are GOODS or SERVICE. |
Example
Line with goods item
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<cac:Item>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:ItemExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:ItemExtension>
<puf:ItemType>GOODS</puf:ItemType>
</puf:ItemExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
</cac:Item>
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
4.2.11. Price
The Price segment has been extended with new elements.
The UBL extension to be used for below elements can be found here.
The structure used from PUF-ExtensionComponent.xsd
is PageroExtension/PriceExtension
.
See example below as well as the URI to be used for this extension.
Example
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<!-- Code omitted for clarity -->
<cac:Price>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:PriceExtension</ext:ExtensionURI> (1)
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:PriceExtension/> (2)
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:Price>
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
1 | URI to be used if this extension is added. |
2 | Structure to be used if information from this extension will be used. |
Below table show the definition of the new element added to the extension.
Element | Description |
---|---|
|
Unit price including allowances or charges |
|
Currency of the unit price including allowances or charges |
|
Unit price excluding allowances or charges in tax currency |
|
Currency of TaxCurrencyPriceAmount |
Example
Line with 100 EUR discount
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<cbc:InvoicedQuantity unitCode="EA">1</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">900.00</cbc:LineExtensionAmount>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:Amount currencyID="EUR">100.00</cbc:Amount>
</cac:AllowanceCharge>
<!-- Code omitted for clarity -->
<cac:Price>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:PriceExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:PriceExtension>
<puf:PriceInclAllowanceChargeAmount currencyID="EUR">900.00</puf:PriceInclAllowanceChargeAmount> (2)
<puf:TaxCurrencyPriceAmount currencyID="USD">1170.00</puf:TaxCurrencyPriceAmount> (3)
</puf:PriceExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:PriceAmount currencyID="EUR">1000.00</cbc:PriceAmount> (1)
</cac:Price>
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
1 | The unit price excluding the discount. |
2 | The unit price including the discount. |
3 | Unit price provided in tax currency, calculated with an exchange rate of 1.17. |
5. Country Specific
This section will provide information regarding on how to include common country specific data in PUF.
5.1. Spain
This section contains information about requirements and other information concerning invoicing in Spain.
5.1.1. Routing Codes (DIR3)
To send documents to the Spanish government you are required to provide DIR3 codes. These are used as routing codes, definition of the codes can be found below.
-
Accounting Office (Oficina Contable)
-
Management Agency (Órgano Gestor)
-
Processing Authority Unit (Unidad Tramitadora)
-
Proposing Agency (Órgano Proponente)
The DIR3 codes should be provided in the extension element in cac:AccountingCustomerParty/cac:Party, in the structure PageroExtension/PartyExtension/ADAID
.
More information how to use ADAID can be found here.
Example
<cac:AccountingCustomerParty>
<cac:Party>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:PartyExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:PartyExtension>
<puf:ADAID>
<cbc:ID>1234567890</cbc:ID>
<puf:IDType listID="PUF-002-ADAID">ES:OficinaContable</puf:IDType>
</puf:ADAID>
<puf:ADAID>
<cbc:ID>1234567890</cbc:ID>
<puf:IDType listID="PUF-002-ADAID">ES:OrganoGestor</puf:IDType>
</puf:ADAID>
<puf:ADAID>
<cbc:ID>1234567890</cbc:ID>
<puf:IDType listID="PUF-002-ADAID">ES:UnidadTramitadora</puf:IDType>
</puf:ADAID>
<puf:ADAID>
<cbc:ID>1234567890</cbc:ID>
<puf:IDType listID="PUF-002-ADAID">ES:OrganoProponente</puf:IDType>
</puf:ADAID>
</puf:PartyExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:Party>
</cac:AccountingCustomerParty>
5.2. France
This section contains information about requirements and other information concerning invoicing in France.
5.2.1. Service Code
Service code is a routing code required by some customers to identify the correct recipient in French Government Portal. It’s used as an addition to the SIRET number, which is the main identifier for all government recipients.
The Service code should be provided in the extension block under cac:AccountingCustomerParty/cac:Party, in the structure puf:PageroExtension/puf:PartyExtension/puf:ADAID
(More information how to use ADAID can be found here).
See example below, note that the Name is not mandatory to send, but opens up the possibility to provide the name of the receiving unit.
Example
<cac:AccountingCustomerParty>
<cac:Party>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:PartyExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:PartyExtension>
<puf:ADAID>
<cbc:ID>1234567890</cbc:ID>
<cbc:Name>Name of receiving unit</cbc:Name>
<puf:IDType listID="PUF-002-ADAID">FR:ServiceCode</puf:IDType>
</puf:ADAID>
</puf:PartyExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:Party>
</cac:AccountingCustomerParty>
5.2.2. Legal Commitments
Entities behind French Government portal can set up validation of certain elements called legal commitments. Therefore it’s recommended to support the below values in order to fulfill the requirements of this validation.
- Customer contract defined as “Contrat”
Example
<cac:ContractDocumentReference>
<cbc:ID>Contract number</cbc:ID>
<cbc:IssueDate>2019-01-01</cbc:IssueDate>
</cac:ContractDocumentReference>
- Tender reference defined as “Marché Public”
Example
<cac:OriginatorDocumentReference>
<cbc:ID>Tender number</cbc:ID>
<cbc:IssueDate>2019-01-01</cbc:IssueDate>
</cac:OriginatorDocumentReference>
- Purchase order number defined as “Engagement”
Example
<cac:OrderReference>
<cbc:ID>Order Number</cbc:ID>
<cbc:IssueDate>2019-01-01</cbc:IssueDate>
</cac:OrderReference>
5.3. Italy
This section contains information about requirements and other information concerning invoicing in Italy.
5.3.1. Routing code (Codice Destinatario)
In order to send invoices in Italy a destination code must be provided called "Codice Destinatario".
The destination code should be sent in cac:AccountingCustomerParty/cac:Party/cbc:EndpointID
with schemeID "0201" (Indice delle Pubbliche Amministrazioni).
Example
<cac:AccountingCustomerParty>
<cac:Party>
<cbc:EndpointID schemeID="0201">123456</cbc:EndpointID>
<!-- Code omitted for clarity -->
</cac:Party>
</cac:AccountingCustomerParty>
5.3.2. Duty Stamp (Dati Bollo)
In order to provide Dati Bollo (Duty Stamp) required on some invoices in Italy the value can be provided in the following element Duty Stamp.
Example
Example for Dati Bollo in Italy
<Invoice>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:DutyStamp</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:DutyStamp>
<puf:Amount currencyID="EUR">2.00</puf:Amount>
</puf:DutyStamp>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</Invoice>
5.3.3. Tax chargeability (Esigibilita IVA)
To provide tax chargeability, the extension element (Invoice|CreditNote)/cac:TaxTotal/cac:TaxSubtotal/ext:UBLExtensions
can be used. The structure used from PUF-ExtensionComponent.xsd
is PageroExtension/TaxSubtotalExtension
. See example below:
Possible values to provide:
-
I = VAT with immediate chargeability
-
D = VAT unrealized
-
S = Splitting of payments
Example
<cac:TaxTotal>
<cac:TaxSubtotal>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:TaxSubtotalExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:TaxSubtotalExtension>
<puf:TaxChargeability>
<cbc:TaxTypeCode>S</cbc:TaxTypeCode>
</puf:TaxChargeability>
</puf:TaxSubtotalExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</cac:TaxSubtotal>
</cac:TaxTotal>
5.3.4. VAT number and Fiscal Code
It is possible to send a VAT number and/or a Fiscal code (Codice Fiscale) in PUF, below is a description and example how to provide this.
- VAT number in Italy
-
-
CompanyID - Must start with a country code (two characters) followed by 1 to 28 characters
-
TaxScheme/ID - Must be VAT
-
- Fiscal code in Italy
-
-
CompanyID - Can contain 11 to 16 characters
-
TaxScheme/ID - Must be TAX
-
Example
AccountingCustomerParty with both VAT number and Fiscal code
<cac:AccountingCustomerParty> (1)
<cac:Party>
<!-- Code omitted for clarity -->
<cac:PartyTaxScheme>
<cbc:CompanyID>IT123456789</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyTaxScheme>
<cbc:CompanyID>12345678901</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>TAX</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<!-- Code omitted for clarity -->
</cac:Party>
</cac:AccountingCustomerParty>
1 | Example contains AccountingCustomerParty but same handling applies for AccountingSupplierParty |
5.3.5. Registration data
To provide the registration data (Ufficio, NumeroREA, Capitale Sociale, Socio Unico and Stato Liquidazione) in the XML file please check the extension for AccountingSupplierParty structure here.
5.4. Portugal
This section contains information about special requirements concerning invoicing in Portugal.
5.4.1. Billing Software Certification
Invoices in Portugal must be issued via a certified software and in the extension puf:BillingSoftware
it’s possible to provide the mandatory values.
Example
Extension with the billing software details populated
<Invoice>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:BillingSoftware</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:BillingSoftware>
<puf:Number>1111/AT</puf:Number> (1)
<puf:Hash>AAaa</puf:Hash> (2)
<cbc:Description>AAaa - Processado por programa certificado n. 1111/AT.</cbc:Description> (3)
</puf:BillingSoftware>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</Invoice>
1 | Software certification identification |
2 | Hash code |
3 | Description of the software certification |
5.4.2. QR Code and ATCUD
In Portugal it can be required to provide a QR code and ATCUD. The portugese government has specified that this can be provided in elements that exist in Peppol BIS 3 and therefore also exist in PUF.
Below you will find a guide on how to provide it to comply with the portugese specification.
Example
QR code and ATCUD provided in cac:AdditionalDocumentReference
<Invoice>
<!-- Code omitted for clarity -->
<cac:AdditionalDocumentReference>
<cbc:ID schemeID="ANG">12345678-123456789123</cbc:ID> <!--ATCUD, use the schemeID ANG-->
<cbc:DocumentDescription>QR_CODE</cbc:DocumentDescription><!-- DocumentDescription must be QR_CODE -->
<cac:Attachment> <!--QR Code encoded in base64-->
<cbc:EmbeddedDocumentBinaryObject mimeCode="text/plain" filename="the filename">QRstringInBase64</cbc:EmbeddedDocumentBinaryObject><!-- mimeCode must be text/plain -->
</cac:Attachment>
</cac:AdditionalDocumentReference>
<!-- Code omitted for clarity -->
</Invoice>
5.4.3. Tax Category codes
Tax category codes for Portugal can be found here. Note that multiple tax category codes overlap due to previous portugese standards. The recommendation is to use the official UNCL5305 codes in the list if supported.
5.5. Singapore
This section contains information about requirements and other information concerning invoicing in Singapore.
5.5.1. Tax Category codes
Tax category codes for Singapore can be found here.
5.6. Saudi Arabia
This section contains information about special requirements concerning invoicing in Saudi Arabia.
5.6.1. InvoiceTypeCode and Invoice subtype
Available Invoice Type values to be used in Saudi Arabia can be found here.
In addition to provide the InvoiceType it is required to also provide the subtypes. Supported codes can be found here.
Example
Example with InvoiceTypeCode and invoice subtypes provided for Saudi Arabia
<Invoice>
<!-- Code omitted for clarity -->
<cbc:InvoiceTypeCode name="0100000">388</cbc:InvoiceTypeCode>(1)
<!-- Code omitted for clarity -->
</Invoice>
1 | InvoiceTypeCode 388 for "Tax Invoice" provided. Attribute name in this KSA scenario is used to provide the invoice subtypes. |
5.6.2. PartyIdentification
In Saudi Arabia there is a possible requirement to providing additional party identifiers that are not available in the ISO 6523 ICD list. These additional identifiers for use in Saudi Arabia can be found here.
Example
Example with additional id provided in Saudi Arabia in Party structure
<Invoice>
<!-- Code omitted for clarity -->
<cac:AccountingCustomerParty>
<!-- Code omitted for clarity -->
<cac:Party>
<!-- Code omitted for clarity -->
<cac:PartyIdentification>
<cbc:ID schemeID="SA:NAT">0123456789</cbc:ID>(1)
</cac:PartyIdentification>
<!-- Code omitted for clarity -->
</cac:Party>
</cac:AccountingCustomerParty>
</Invoice>
1 | The national id provided as cac:PartyIdentification/cbc:ID |
5.7. India
This section contains information about special requirements concerning invoicing in India.
5.7.1. PartyIdentification
In India there is a possible requirement to providing additional party identifiers that are not available in the ISO 6523 ICD list. These additional identifiers for use in India can be found here.
Example
Example with additional id provided in India in Party structure
<Invoice>
<!-- Code omitted for clarity -->
<cac:AccountingCustomerParty>
<!-- Code omitted for clarity -->
<cac:Party>
<!-- Code omitted for clarity -->
<cac:PartyIdentification>
<cbc:ID schemeID="IN:GSTIN">11AAAAA3212A1AA</cbc:ID>(1)
</cac:PartyIdentification>
<!-- Code omitted for clarity -->
</cac:Party>
</cac:AccountingCustomerParty>
</Invoice>
1 | GSTIN number in India provided as cac:PartyIdentification/cbc:ID |
5.7.2. Party address information
The mandatory clearance platform IRP validate the below address information according to code lists.
cbc:CountrySubentityCode
Each party must contain the corresponding states code, the state code should be sent in element cbc:CountrySubentityCode
and must be two digits.
Valid state codes can be found on the government website https://einvoice1.gst.gov.in/Others/MasterCodes.
The parties state code must correspond with the first two digits of the parties GSTIN number.
cbc:PostalZone
The post code or PIN code as referred to in India must exist on all parties and must be sent in cbc:PostalZone
.
Valid codes can be found on the government website https://einvoice1.gst.gov.in/Others/MasterCodes.
Example
Example of a correct address for cac:AccountingCustomerParty
<Invoice>
<!-- Code omitted for clarity -->
<cac:AccountingCustomerParty>
<!-- Code omitted for clarity -->
<cac:Party>
<!-- Code omitted for clarity -->
<cac:PostalAddress>
<cbc:StreetName>Street 1</cbc:StreetName>
<cbc:CityName>Jammu</cbc:CityName>
<cbc:PostalZone>181131</cbc:PostalZone>
<cbc:CountrySubentityCode>01</cbc:CountrySubentityCode>
<cac:Country>
<cbc:IdentificationCode>IN</cbc:IdentificationCode>
<cbc:Name>India</cbc:Name>
</cac:Country>
</cac:PostalAddress>
<cac:PartyIdentification>
<cbc:ID schemeID="IN:GSTIN">01AAAAA3212A1AA</cbc:ID>(1)
</cac:PartyIdentification>
<!-- Code omitted for clarity -->
</cac:Party>
</cac:AccountingCustomerParty>
</Invoice>
5.7.3. Tax type scheme
Tax type scheme codes for India can be found here.
5.7.4. Harmonized System of Nomenclature code (HSN Code)
Each invoice line must contain a HSN code, IRP will validate that the provided HSN code correspond with relevant taxes for that goods or service.
All HSN codes applicable can be found on the government website https://einvoice1.gst.gov.in/Others/MasterCodes.
Example
Example how to provide HSN code
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<!-- Code omitted for clarity -->
<cac:Item>
<cac:CommodityClassification>
<cbc:ItemClassificationCode listID="HS">85176290</cbc:ItemClassificationCode>
</cac:CommodityClassification>
</cac:Item>
</cac:InvoiceLine>
</Invoice>
5.7.5. Supply Type
In India it’s mandatory to define the type of supply relevant for the invoice, the available codes can be found below and must be stated in the Supply type element found here.
Value | Description |
---|---|
|
Business to Business |
|
SEZ with payment |
|
SEZ without payment |
|
Export with Payment |
|
Export without payment |
|
Direct Export |
5.7.6. IGST on Intra state transaction
In some cases IGST is applicable on intra state supplies, in order to indicate this a true or false flag must be set in element puf:IGSTOnIntra
which can be found here.
5.8. Hungary
This section contains information about special requirements concerning invoicing in Hungary and Real-Time Invoice Reporting (RTIR)
5.8.1. Invoice Appearance
Each document must have a Invoice Apperance code, the value depends on how the documents is distributed between issuer and receiver. Note that invoices distributed via email shall be classified as ELECTRONIC.
The table below lists valid codes
Value | Description |
---|---|
|
Invoice issued on paper |
|
Electronic invoice (non-EDI) |
|
EDI invoice |
|
The software cannot identify the form of appearance of the invoice or it is unknown at the time of issue |
The code should match the defined distribution method, if this is unknown at the time of issuance, UNKNOWN must be used. |
The value should be provided in element RestrictedInformation with key invoiceAppearance
Example
Invoice Appearance ELECTRONIC example
<Invoice>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:RestrictedInformation</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:RestrictedInformation>
<puf:Key>invoiceAppearance</puf:Key>
<puf:Value>ELECTRONIC</puf:Value>
</puf:RestrictedInformation>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</Invoice>
5.8.2. Tax Number
The syntax of Hungarian tax ids is 11 characters The first 8 digits is the tax payer id. The 9th digit is the VAT code. The last two digits is the county code. The 9th digit means:
1 – personal tax exemption, not VAT tax payer person
2 – general rules (scope in the Hunagrian VAT law)
3 – simplified entrepreneurial tax (it cannot be chosen anymore)
4 – group member tax ID
5 – group tax ID
For the seller tax number the 9th digit should be a 2 (or 1, 3, 5). If the company have a group member tax ID the 9th digit must be a 5.
Hungarian tax id should be sent in the element cac:Party/cac:PartyLegalEntity/cbc:CompanyID
.
The group member tax id should be sent in cbc:PartyIdentification
with schemeID defined in the list Identification scheme Hungary.
5.8.3. Customer VAT Status
It’s mandatory to provide the customers VAT status, this determine allowed content and rules for the customer party.
Allowed values can be found in below table
Value | Description |
---|---|
|
Domestic VAT taxable person |
|
Other (domestic non-VAT taxable person, non-natural person, foreign VAT taxable person and foreign non-VAT taxable person, non-natural person) |
|
Non-VAT taxable natural person (domestic or foreign) |
The value should be provided in element RestrictedInformation with key customerVatStatus
Example
Customer VAT Status populated in RestrictedInformation
<Invoice>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:RestrictedInformation</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:RestrictedInformation>
<puf:Key>customerVatStatus</puf:Key>
<puf:Value>PRIVATE_PERSON</puf:Value>
</puf:RestrictedInformation>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<!-- Code omitted for clarity -->
</Invoice>
5.8.4. Line Expression Indicator
lineExpressionIndicator
indicates whether the unit of the item can be expressed as a natural unit of measurement. The indicator must be provided on each line.
If the value of the lineExpressionIndicator
tag is true
, the following values must be entered on the invoice line:
-
name of product or service
-
quantity
-
quantity unit
-
unit price
If the value of the lineExpressionIndicator
tag is false
, only the name of the product or service must be entered on the invoice line from above list.
The value should be provided in element RestrictedInformation with key lineExpressionIndicator
Example
lineExpressionIndicator true
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LineExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:LineExtension>
<puf:RestrictedInformation>
<puf:Key>lineExpressionIndicator</puf:Key>
<puf:Value>true</puf:Value>
</puf:RestrictedInformation>
</puf:LineExtension>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:InvoicedQuantity unitCode="EA">1</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">100.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Article 1</cbc:Name>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">110.00</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
5.8.5. Modification
Hungary RTIR flow require a special handling regarding credit and modification of documents, below section will give brief information how this must be handled.
Modify Without Master
When creating a modification document e.g. a credit note, it’s mandatory to indicate whether the original document has been reported or not.
The value should be provided in element RestrictedInformation with key modifyWithoutMaster
Example
CreditNote with modifyWithoutMaster
<CreditNote>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:RestrictedInformation</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:RestrictedInformation>
<puf:Key>modificationIndex</puf:Key>
<puf:Value>1</puf:Value>
</puf:RestrictedInformation>
<puf:RestrictedInformation>
<puf:Key>modifyWithoutMaster</puf:Key>
<puf:Value>false</puf:Value>
</puf:RestrictedInformation>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:ID>111234552</cbc:ID>
<cac:BillingReference>
<cac:InvoiceDocumentReference>
<cbc:ID>1234567</cbc:ID>
</cac:InvoiceDocumentReference>
</cac:BillingReference>
<!-- Code omitted for clarity -->
</CreditNote>
Modification Index
In Hungary it’s possible to reference the original invoice multiple times.
It’s therefore mandatory to specify on each modification/credit document the index of the document starting with value 1.
If additional documents will be sent referencing the same original invoice this index is increased by 1.
The value should be provided in element RestrictedInformation with key modificationIndex
Example
CreditNote with modificationIndex
<CreditNote>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:RestrictedInformation</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:RestrictedInformation>
<puf:Key>modificationIndex</puf:Key>
<puf:Value>1</puf:Value>
</puf:RestrictedInformation>
<puf:RestrictedInformation>
<puf:Key>modifyWithoutMaster</puf:Key>
<puf:Value>false</puf:Value>
</puf:RestrictedInformation>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:ID>111234552</cbc:ID>
<cac:BillingReference>
<cac:InvoiceDocumentReference>
<cbc:ID>1234567</cbc:ID>
</cac:InvoiceDocumentReference>
</cac:BillingReference>
<!-- Code omitted for clarity -->
</CreditNote>
lineOperation and modificationReferenceLineNumber
Each line in a modification invoice or credit note must contain a lineModificationReferenceLineOperation
and lineModificationReferenceLineNumberReference
, below is a short explanation how to use the two different operations available MODIFY
and CREATE
.
Modify: Used to modify text and data on an invoice, when using operation MODIFY
it’s not possible to change amounts on an invoice. If the value of the operation is MODIFY
, the lineModificationReferenceLineNumberReference
element will contain the line item number of the item in the original invoice, or the line item number of the new item created in a previous modifying document, which is the subject of the modification.
Credit: In Hungary RTIR flow credit note is structured a bit different than a regular credit note. In the file to the Tax Authority the operation CREATE
must be sent on each line, which indicate that you Create a new line ontop of the referenced original invoice. In order to create a credit note, the operation CREATE
must be sent on each line and then the subtract the original invoice line amount using minus sign and the original invoices line data. The lineModificationReferenceLineNumberReference
element will be the continuation of the original numbering created from the original invoice and all previous documents thereof.
It’s not possible to mix operation “CREATE” and “MODIFY” in the same document. |
Both the lineModificationReferenceLineOperation
and lineModificationReferenceLineNumberReference
should be provided on each line in element RestrictedInformation.
Valid values for lineModificationReferenceLineOperation
is CREATE
and MODIFY
with the key lineModificationReferenceLineOperation
.
Example
Original Invoice
<Invoice>
<!-- Code omitted for clarity -->
<cac:InvoiceLine>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LineExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:RestrictedInformation>
<puf:Key>lineExpressionIndicator</puf:Key>
<puf:Value>true</puf:Value>
</puf:RestrictedInformation>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="EA">1</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">100.00</cbc:LineExtensionAmount> (2)
<cac:Item>
<cbc:Name>Article 1</cbc:Name>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
<!-- Code omitted for clarity -->
</Invoice>
Example
Credit Note with modification of Invoice
<CreditNote>
<!-- Code omitted for clarity -->
<cac:CreditNoteLine>
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionURI>urn:pagero:ExtensionComponent:1.0:PageroExtension:LineExtension</ext:ExtensionURI>
<ext:ExtensionContent>
<puf:PageroExtension>
<puf:RestrictedInformation>
<puf:Key>lineModificationReferenceLineOperation</puf:Key>
<puf:Value>CREATE</puf:Value>
</puf:RestrictedInformation>
<puf:RestrictedInformation>
<puf:Key>lineModificationReferenceLineNumberReference</puf:Key>
<puf:Value>2</puf:Value> (1)
</puf:RestrictedInformation>
<puf:RestrictedInformation>
<puf:Key>lineExpressionIndicator</puf:Key>
<puf:Value>true</puf:Value>
</puf:RestrictedInformation>
</puf:PageroExtension>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:ID>1</cbc:ID>
<cbc:CreditedQuantity unitCode="EA">-1</cbc:CreditedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">-100.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Article 1</cbc:Name>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
</cac:Price>
</cac:CreditNoteLine>
<!-- Code omitted for clarity -->
</CreditNote>
1 | lineModificationReferenceLineNumberReference is the continuation of the original numbering created from the original invoice, in this example the original invoice line number was 1, then the lineModificationReferenceLineNumberReference will be 2. |
6. Code lists
Certain elements require the use of PUF specific Code list. 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 is 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.
6.1. Code lists for coded elements
Business Term | Path | listID |
---|---|---|
Registration Data Id Type |
|
|
Additional Destination Address Identifier |
|
|
Invoice Type Code |
|
|
Currency Code |
|
|
Invoiced Object Identifier |
|
|
Mime code |
|
|
Electronic address scheme |
|
|
Identification scheme |
|
|
Tax type scheme |
|
|
Payment means code |
|
|
Allowance charge reason codes |
|
|
Tax category codes |
|
|
Tax exemption codes |
|
|
Unit of measure codes |
|
|
Item type identification code |
|
6.1.1. PUF-001-REGISTRATIONDATA
The value consist of "country code:type of value". Country code states which country the value is applicable for.
Value | Description |
---|---|
|
Initials of the province where the Company is registered. |
|
The registration number in the "companies register". |
|
Only in the case of a company (SpA, SApA, SRL), the element must be filled in with the share capital |
|
Only in the case of a joint-stock company or limited liability company, the element must be filled in to indicate if there is a single shareholder or several shareholders. Allowed values: SU or SM SU : Sole shareholder |
|
Indication of whether the Company is in liquidation or not. LS : In liquidation |
|
Book in the register of the company. |
|
In which register the company is located. |
|
Sheet in the register of the company. |
|
Folio in the register of the company. |
|
Section in the register of the company. |
|
Volume in the register of the company. |
|
Other registration data. |
|
Legal name. |
|
Type of company (for example SAS). |
|
Share capital, capital contributed to a company at the time of its creation. |
|
Trade and Companies Register number. |
|
Business activity classification code. |
6.1.2. PUF-002-ADAID
The value consist of "country code:type of value". Country code states which country the value is applicable for.
Value | Description |
---|---|
|
Code of the receiving unit behind French Government portal. |
|
Code for the accounting office (Oficina Contable). |
|
Code for the management agency (Órgano Gestor). |
|
Code for the processing authority unit (Unidad Tramitadora). |
|
Code for the proposing agency (Órgano Proponente). |
|
General code for defining the unit of a company. |
6.1.3. PUF-003-INVOICETYPECODE
List of available general invoice type codes.
Value | Description |
---|---|
|
Invoice, only applicable only with UBL message/document type Invoice. |
|
Credit note, only applicable only with UBL message/document type CreditNote. |
|
Debit note, only applicable only with UBL message/document type Invoice. |
Invoice Type Codes Saudi Arabia
The below listed InvoiceTypeCodes are available for use in Saudi Arabia.
Value | Description |
---|---|
|
Tax Invoice, only applicable only with UBL message/document type Invoice. |
|
Credit note, only applicable only with UBL message/document type CreditNote. |
|
Debit note, only applicable only with UBL message/document type Invoice. |
Invoice Subtype Codes Saudi Arabia
In addition to the InvoiceTypeCode it is required to provide invoice subtypes. This should be placed in cbc:InvoiceTypeCode/@name
and must follow a certain syntax.
Structure on the value must be NNPNESB (Example 0100000) where:
Value | Supported values |
---|---|
|
01 for tax invoice |
|
3rd Party invoice transaction, 0 for false, 1 for true |
|
Nominal invoice transaction, 0 for false, 1 for true |
|
Exports invoice transaction, 0 for false, 1 for true |
|
Summary invoice transaction, 0 for false, 1 for true |
|
Self-billed invoice transaction, 0 for false, 1 for true. Note that only 0 is currently supported |
6.1.4. PUF-004-CURRENCYCODE
For available values see code list of three character currency codes see Currency Codes.
6.1.5. PUF-005-INVOICEDOBJECTIDENTIFIER
For available values see code list Invoice Object identifier schemes.
6.1.6. PUF-006-MIMECODES
List of available mime codes.
Value |
---|
|
|
|
|
|
6.1.7. PUF-007-ENDPOINTSCHEME
For available values see code list Electronic address scheme
6.1.8. PUF-008-IDENTIFICATIONSCHEME
Supported values can be found here ISO 6523 ICD list.
For cac:AccountingSupplierParty/cac:Party/cac:PartyIdentification/cbc:ID/@schemeID
and
cac:PayeeParty/cac:PartyIdentification/cbc:ID/@schemeID
an additional code list is also applicable: Sepa indicator.
For additional identification scheme identifier added in PUF see below recommendations.
Identification scheme Saudi Arabia
Value | Description |
---|---|
|
Group VAT number |
|
National ID |
|
Tax Identification Number |
|
Iqama Number |
|
Passport ID |
|
Commercial registration number |
|
Momra license |
|
MLSD license |
|
Sagia license |
|
GCC ID |
|
Other ID |
Identification scheme India
Value | Description |
---|---|
|
PAN is a 10-digit unique identification alpha-numeric number |
|
GSTIN is a 15-digit PAN-based unique identification number assigned to every registered person under GST. |
|
Corporate Identification Number (CIN) is a 21 digits alpha-numeric unique identification number that is assigned by the Registrar of Companies (ROC). |
Identification scheme Hungary
Value | Description |
---|---|
|
Tax number |
|
Group member tax number |
6.1.9. PUF-009-TAXTYPESCHEME
List of available tax type scheme codes.
Value | Description |
---|---|
|
Value Added Tax |
|
Goods and Services Tax |
|
Sales tax |
|
State/provincial sales tax |
|
Harmonised sales tax, Canadian |
|
Quebec sales tax |
|
Canadian provincial sales tax |
|
Integrated Goods and Services Tax, India |
|
Central Goods and Services Tax, India |
|
State Goods and Services Tax, India |
|
Union Territory Goods and Services Tax, India |
|
CESS, India |
|
CESS Non Ad Valorem, India |
|
State CESS, India |
|
State CESS Non Ad Valorem, India |
6.1.10. PUF-010-PAYMENTMEANSCODE
Value | Description |
---|---|
|
Instrument not defined |
|
In cash |
|
Cheque |
|
Credit transfer |
|
Debit transfer |
|
Payment to bank account |
|
Bank card |
|
Bankgiro |
|
SEPA credit transfer |
|
Direct debit inside the Single Euro Payment Area (SEPA) system. |
|
Reference giro |
For all available codes see list Payment means code
6.1.11. PUF-011-ALLOWANCECHARGEREASONCODE
Values can differ depending on which legal domain you are in or if there are other types of business requirements.
Below you will find links to recommended lists.
Link |
---|
6.1.12. PUF-012-TAXCATEGORYCODE
Standard european tax category codes can be found here Duty or tax or fee category code.
For additional codes added in PUF see below code recommendations.
Tax category codes Singapore
Value | Description |
---|---|
|
Local supply of goods and services |
|
Customer accounting supply made by the supplier |
|
Customer accounting supply made by the customer on supplier’s behalf |
|
Supplies involving goods for export/ provision of international services |
|
Specific categories of exempt supplies listed under regulation 33 of the GST (General) Regulations |
|
Exempt supplies other than those listed under regulation 33 of the GST (General) Regulations |
|
Supplies required to be reported pursuant to the GST legislation |
|
Supplies outside the scope of the GST Act |
|
Supplies from a company which is not registered for GST |
|
Overseas vendor registration regime for Business-to-Consumer (“B2C”) supplies of imported digital services |
|
Reverse charge regime for Business-to-Business (“B2B”) supplies of imported services |
Tax category codes Portugal
Value | Description |
---|---|
|
Lower rate |
|
Standard rate |
|
Exempt |
|
Zero rated goods |
|
Vat Reverse Charge |
|
Free export item, VAT not charged |
|
Services outside scope of tax |
|
Reduced rate |
|
Intermediate rate |
|
Normal rate |
|
Exempt |
|
Others, applicable to special VAT schemes |
|
In case of non-subjection to VAT or IS. On receipts issued without itemized tax must be filled with "NA" |
|
intra-Community VAT |
6.1.13. PUF-013-EXEMPTCODE
Values can differ depending on which legal domain you are in or if there are other types of business requirements.
For Europe the code list Vatex code list can be recommended.
6.1.14. PUF-014-UOMCODE
Values can differ depending on which legal domain you are in or if there are other types of business requirements.
However, code list UN/ECE Recommendation 20 and UN/ECE Recommendation 21 can be recommended.
6.1.15. PUF-015-ITEMTYPEIDENTIFICATIONCODE
Values must be from code list Item type identification code.
7. XML Schemas
Invoice and Credit Note XSD schemas including Pagero/PUF Extension can be downloaded here:
8. Validation
Available validation rules for PUF.
To validate PUF documents please create an account on https://pagero.validex.net.
The validations available on validex are:
-
XML well-formedness
-
XSD schema
-
PUF schematron rules (see below)
The validation artefacts are also available on GitHub.
Rule name | Description of rule | Flag |
---|---|---|
PUF-R001 |
[PUF-R001]-Specification identifier MUST have the value 'urn:pagero.com:puf:billing:2.0' or 'urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0#conformant' |
Fatal |
PUF-R002 |
[PUF-R002]-Profile identifier MUST have the value 'urn:pagero.com:puf:billing:1.0'. |
Fatal |
PUF-R003 |
[PUF-R003]-Attribute listID MUST be 'PUF-001-REGISTRATIONDATA' |
Fatal |
PUF-R004 |
[PUF-R004]-Attribute listID MUST be 'PUF-002-ADAID' |
Fatal |
PUF-R005 |
[PUF-R005]-Source currency code MUST be different from target currency code when tax exchange rate calculation is provided. |
Fatal |
PUF-R006 |
[PUF-R006]-If tax exchange calculation is provided the mathematic operator code MUST equal "Multiply". |
Fatal |
PUF-R007 |
[PUF-R007]-If tax exchange calculation is provided the calculation rate MUST exist |
Fatal |
PUF-R008 |
[PUF-R008]-If tax exchange calculation is provided both source and target currency MUST be provided. |
Fatal |
PUF-R009 |
[PUF-R009]-Value in tax chargeability MUST be one of the valid codes "S","D" or "I". |
Fatal |
PUF-R010 |
[PUF-R010]-Tax currency taxable amounts currency MUST not differ from documents tax currency. |
Fatal |
PUF-R011 |
[PUF-R011]-Tax currency tax amounts currency MUST not differ from documents tax currency. |
Fatal |
PUF-R012 |
[PUF-R012]-Tax currency tax exclusive amounts currency MUST not differ from documents tax currency. |
Fatal |
PUF-R013 |
[PUF-R013]-Tax currency tax inclusive amounts currency MUST not differ from documents tax currency. |
Fatal |
PUF-R014 |
[PUF-R014]-Tax currency payable amounts currency MUST not differ from documents tax currency. |
Fatal |
PUF-R015 |
[PUF-R015]-Payment in kind amount currency MUST not differ from document currency. |
Fatal |
PUF-R016 |
[PUF-R016]-ID type MUST be a valid type according to list PUF-001-REGISTRATIONDATA. |
Fatal |
PUF-R017 |
[PUF-R017]-ID type MUST be a valid type according to list PUF-002-ADAID. |
Fatal |
PUF-R101 |
[PUF-R101]-Line exclusive allowance and charge amount currency MUST not differ from document currency. |
Fatal |
PUF-R102 |
[PUF-R102]-Price including allowance charge amount currency MUST not differ from document currency. |
Fatal |
PUF-R103 |
[PUF-R103]-If Tax Subtotal exist on line, tax category percent MUST exist. |
Fatal |
PUF-R104 |
[PUF-R104]-If Tax Subtotal exist on line, VAT category ID MUST exist. |
Fatal |
9. Examples
Example files can be downloaded from GitHub
10. Supported Countries
The aim for Pagero Universal is to cover invoicing and business requirements in legal domains and countries all over the world.
The below list should be seen as an overview to visualize where PUF currently is considered applicable. If the country is marked as supported means that an analysis of country or regional requirements has been made. It does however not automatically mean that all conceivable content requirements are supported within PUF.
If a country is not in the list does not necessarily mean that Pagero Universal format cannot be used in the specific region but it means that no extensive analysis has been done of the requirements.
The list of supported countries/regions are updated continuously as Pagero Universal Format is developed to follow new identified markets/requirements.
10.1. Country list
The following list gives an overview of country support in PUF.
The "Require ext:UBLExtensions"-column indicates whether or not the use of UBL extensions is required to be able to comply with the country requirements. |
Country | Supported by PUF | Require ext:UBLExtensions | Comment |
---|---|---|---|
Australia |
Yes |
No |
|
Austria |
Yes |
No |
|
Belgium |
Yes |
No |
|
Canada |
Yes |
No |
|
Denmark |
Yes |
No |
|
Croatia |
Yes |
No |
|
Finland |
Yes |
No |
|
France |
Yes |
Yes |
|
Germany |
Yes |
No |
|
Hungary |
Yes |
Yes |
|
India |
Yes |
Yes |
|
Ireland |
Yes |
No |
|
Italy |
Yes |
Yes |
|
Lithuania |
Yes |
No |
|
Netherlands |
Yes |
No |
Only Invoice and Credit note support |
Norway |
Yes |
No |
|
Portugal |
Yes |
Yes |
|
Saudi Arabia |
Yes |
Yes |
|
Singapore |
Yes |
No |
|
Spain |
Yes |
Yes |
|
Sweden |
Yes |
No |
|
United Kingdom |
Yes |
No |
11. Support
If you have any questions related to PUF, please create a support ticket via Pagero Support.