UBL 2.1 Invoice Example: 6 Steps to Create Your Own (XML Format)

It can be challenging to switch overnight to e-invoicing, especially for a short period. For instance, several nations require businesses to submit their sales invoices to the government in e-invoice format (UBL invoice).

However, most businesses are unsure where to start with these novel advances. If your business falls within this category, we are happy to help.

Read on if you are already computer savvy and want to make your own UBL invoices. In this article, we'll take you through the steps to create your UBL invoice.

How does the UBL invoice work?

A global partnership known as the Organization for the Advancement of Structured Information Standards (OASIS) created the UBL to specify a royalty-free open library of standardized electronic XML business documents.

The purpose of UBL was to facilitate e-commerce for small and medium-sized enterprises.

The acronym UBL stands for Universal Business Language. This is a common format that the sector adopted as a way to streamline the processing of invoices.

The UBL format was created to streamline the processing of invoices. Without rekeying data, invoice information may be exchanged between accounting programs.

Being aware of the accounting software used to send or receive invoice data is unnecessary.

Are you an ERP software firm's CEO, product owner, or a big company's IT or finance manager? An overseas business or foreign government might, at some point, ask you for a UBL invoice.

A UBL file is an XML file that represents an invoice. The data included in a typical PDF invoice is present in this XML file, but it is organized and fixed in format.

You can import these documents into UBL-supported tools, and all billing information, such as the amount, date, and VAT, will be automatically loaded. You'll never have to retype invoices and receipts with UBL!

Governments are required to use electronic invoicing under European Directive 2014/55/EU. Since 1.1.2017, the Flemish government has required electronic invoices from all its contractors. But how does the UBL work?

This XML file contains the image of the invoice as well as all of the text labels in the form of XML code. This coding allows computer programs to easily identify each component of an invoice and use it appropriately.

People tend to find it easy to understand natural language, but computers struggle. As a result, a solution was found by XML coding the entire page in accordance with the UBL protocol.

How to create the UBL 2.1 invoice

Here are the steps to create your UBL invoice:

Determine the appropriate version of the UBL 2.1 invoice

It's crucial to note up front that each European nation has its own interpretation of the UBL invoicing standard.

As an illustration, in the Netherlands, we use UBL version 2.1 ("UBL-SI"). There is a tiny probability that your overseas clients if you are a Dutch business with clients outside of the Netherlands, can handle a UBL-SI file.

If so, you may simply change the UBL format to reflect the preferences of that particular nation (for example, E-FFF for Belgium).

Therefore, you should provide the general European UBL version rather than UBL-SI to international consumers.

It makes no difference if you are from the Netherlands, England, Sweden, Germany, Spain, or Denmark.

This approach applies to all nations.

Gather and organize invoice information

You'll need all the necessary invoice data to build the UBL 2.1 invoice, such as:

  • Include information in the invoice header, such as the invoice number, issue date, due date, and payment terms.
  • Include the buyer's and seller's names, addresses, and phone numbers.
  • List all items being invoiced together with their descriptions, unit costs, and any applicable taxes or discounts.
  • Include any applicable taxes and discounts related to the invoice's taxes and discounts.
  • Provide instructions for making payments as well as the currency in which the invoice amount should be paid.
  • Include any other attachments, such as delivery notes or purchase orders, if necessary.

Utilize essential tools for XML processing

UBL is a very complicated XML format. Building a DOM document yourself is not recommended, as it needs to be created element by element.

Use the XSD to generate the Java classes with xjc. Instead, if you do not use Java, you can try to connect with XSD tools. XSD is the generic version but can also be used for UBL-SI.

Know the right destination for the UBL 2.1 invoice

It's important to know the destination of the UBL invoice. UBL is a standard document, but some dialects and interpretations are still within this standard. There are several things you need to take into account:

Embed PDF attachments in the UBL 2. 1 invoice

The UBL invoice has the option to embed the PDF in Base64 format. Some accounting packages also expect this, as it's not possible to attach the PDF file as a separate attachment.

Other packages, on the other hand, are not ready for a UBL that large.

In that case, they cannot process the UBL invoice at all. Sometimes, the bookkeeping package processes the PDF from the UBL and mail, leading to two PDFs with the booking proposal.

If the UBL and PDF are both attached to the email, ensure they have the same file name. Only the extension should be different.

Craft effective email subject lines for UBL invoices

To help the recipient quickly identify the purpose of the email and facilitate smooth invoice processing, it is essential to use an informative and clear subject line when sending a UBL 2.1 invoice via email.

Accounting packages use the subject to route the invoice. For example, some packages indicate that it involves a purchase invoice by including "[INK]."

As a result, the UBL invoice ends up in the right accounting spot.

Therefore, it's important to know the destination of the UBL invoice so that this can be considered when generating the UBL and e-mail.

You can determine the destination of the UBL invoice by selecting the accounting package on your website to which the e-invoice will be sent.

Implement bounce management strategies

Customers are creating unique email accounts specifically for receiving invoices. Whether they do or not, these emails land right in the customers' accounts.

The SMTP server will reject the email and issue a hard "sending failed" bounce immediately if there is a problem with the email or UBL. Another scenario is that the accounting software receives the mail but cannot handle it.

The accounting package will then send a bounce mail to the MAIL FROM address of the SMTP envelope (soft bounce).

It's important to process both soft and hard bounces. This will prevent the invoice from appearing unpaid, as they never arrived.

Utilize whitelists to improve UBL invoice delivery

Some accounting software programs apply a whitelist to the address in the email's "From header" or the SMTP envelope's MAIL FROM address.

You must inform your client(s) that whitelisting might be required if you haven't already agreed to a general whitelisting with bookkeeping products. The customer must then manually set this up in the accounting software.

UBL 2.1 invoice example

Here is a simplified example of a UBL 2.1 invoice in XML format. Please note that the invoice would often include more precise information and other components as needed by a specific company.


  • Sequence [1..1]
  1. ext:UBLExtensions [0..1]    A container for all extensions present in the document.
  2. cbc:UBLVersionID [0..1]    Identifies the earliest version of the UBL 2 schema for this document type that defines all of the elements that might be encountered in the current instance.
  3. cbc:CustomizationID [0..1]    Identifies a user-defined customization of UBL for a specific use.
  4. cbc:ProfileID [0..1]    Identifies a user-defined profile of the customization of UBL being used.
  5. cbc:ProfileExecutionID [0..1]    Identifies an instance of executing a profile, to associate all transactions in a collaboration.
  6. cbc:ID [1..1]    An identifier for this document, assigned by the sender.
  7. cbc:CopyIndicator [0..1]    Indicates whether this document is a copy (true) or not (false).
  8. cbc:UUID [0..1]    A universally unique identifier for an instance of this document.
  9. cbc:IssueDate [1..1]    The date, assigned by the sender, on which this document was issued.
  10. cbc:IssueTime [0..1]    The time, assigned by the sender, at which this document was issued.
  11. cbc:DueDate [0..1]    The date on which Invoice is due.
  12. cbc:InvoiceTypeCode [0..1]    A code signifying the type of the Invoice.
  13. cbc:Note [0..*]    Free-form text pertinent to this document, conveying information that is not contained explicitly in other structures.
  14. cbc:TaxPointDate [0..1]    The date of the Invoice, used to indicate the point at which tax becomes applicable.
  15. cbc:DocumentCurrencyCode [0..1]    A code signifying the default currency for this document.
  16. cbc:TaxCurrencyCode [0..1]    A code signifying the currency used for tax amounts in the Invoice.
  17. cbc:PricingCurrencyCode [0..1]    A code signifying the currency used for prices in the Invoice.
  18. cbc:PaymentCurrencyCode [0..1]    A code signifying the currency used for payment in the Invoice.
  19. cbc:PaymentAlternativeCurrencyCode [0..1]    A code signifying the alternative currency used for payment in the Invoice.
  20. cbc:AccountingCostCode [0..1]    The buyer's accounting code, applied to the Invoice as a whole.
  21. cbc:AccountingCost [0..1]    The buyer's accounting code, applied to the Invoice as a whole, expressed as text.
  22. cbc:LineCountNumeric [0..1]    The number of lines in the document.
  23. cbc:BuyerReference [0..1]    A reference provided by the buyer used for internal routing of the document.
  24. cac:InvoicePeriod [0..*]    A period to which the Invoice applies.
  25. cac:OrderReference [0..1]    A reference to the Order with which this Invoice is associated.
  26. cac:BillingReference [0..*]    A reference to a billing document associated with this document.
  27. cac:DespatchDocumentReference [0..*]    A reference to a Despatch Advice associated with this document.
  28. cac:ReceiptDocumentReference [0..*]    A reference to a Receipt Advice associated with this document.
  29. cac:StatementDocumentReference [0..*]    A reference to a Statement associated with this document.
  30. cac:OriginatorDocumentReference [0..*]    A reference to an originator document associated with this document.
  31. cac:ContractDocumentReference [0..*]    A reference to a contract associated with this document.
  32. cac:AdditionalDocumentReference [0..*]    A reference to an additional document associated with this document.
  33. cac:ProjectReference [0..*]    Information about a project.
  34. cac:Signature [0..*]    A signature applied to this document.
  35. cac:AccountingSupplierParty [1..1]    The accounting supplier party.
  36. cac:AccountingCustomerParty [1..1]    The accounting customer party.
  37. cac:PayeeParty [0..1]    The payee.
  38. cac:BuyerCustomerParty [0..1]    The buyer.
  39. cac:SellerSupplierParty [0..1]    The seller.
  40. cac:TaxRepresentativeParty [0..1]    The tax representative.
  41. cac:Delivery [0..*]    A delivery associated with this document.
  42. cac:DeliveryTerms [0..1]    A set of delivery terms associated with this document.
  43. cac:PaymentMeans [0..*]    Expected means of payment.
  44. cac:PaymentTerms [0..*]    A set of payment terms associated with this document.
  45. cac:PrepaidPayment [0..*]    A prepaid payment.
  46. cac:AllowanceCharge [0..*]    A discount or charge that applies to a price component.
  47. cac:TaxExchangeRate [0..1]    The exchange rate between the document currency and the tax currency.
  48. cac:PricingExchangeRate [0..1]    The exchange rate between the document currency and the pricing currency.
  49. cac:PaymentExchangeRate [0..1]    The exchange rate between the document currency and the payment currency.
  50. cac:PaymentAlternativeExchangeRate [0..1]    The exchange rate between the document currency and the payment alternative currency.
  51. cac:TaxTotal [0..*]    The total amount of a specific type of tax.
  52. cac:WithholdingTaxTotal [0..*]    The total withholding tax.
  53. cac:LegalMonetaryTotal [1..1]    The total amount payable on the Invoice, including Allowances, Charges, and Taxes.
  54. cac:InvoiceLine [1..*]    A line describing an invoice item.

Sample instance











<cbc:Name>Custom Cotter Pins</cbc:Name>







<cbc:Name>North American Veeblefetzer</cbc:Name>





<cbc:PayableAmount currencyID="CAD">100.00</cbc:PayableAmount>




<cbc:LineExtensionAmount currencyID="CAD">100.00</cbc:LineExtensionAmount>


<cbc:Description>Cotter pin, MIL-SPEC</cbc:Description>




What are the advantages of the UBL 2.1 invoice?

UBL has several advantages, particularly for government suppliers, IT, finance managers, CEOs, and product owners of ERP software firms.

UBL has been the cornerstone for other European public frameworks, including PEPPOL, the pan-European procurement network, since the European Commission certified it in 2014 for public administration tenders.

UBL provides an electronic standard of formatting that various e-invoicing systems can use to streamline sending and receiving invoices abroad.

Therefore, the cost of sending electronic invoices is lower because of this common format.

Here are more advantages of sending and receiving UBL invoices:

Complete and accurate data recognition

A UBL invoice's defined format enables the receiving system to recognize and handle the UBL invoice data. As a result, there are no manual errors and no need for human data processing.

Since there is no manual involvement, the data received by the receiver software is completely accurate.

UBL eliminates human error

Due to the recipient's automated receipt and recognition of the invoice, processing it does not require human participation.

Therefore, it is no longer a concern that errors were created by those handling the bills.

No more booking deadlines

Invoices do not include booking dates since invoice data is routinely transferred across systems.

UBL invoices are paid faster

UBL invoicing facilitates quicker system payments and enhances cash flow. Payment of UBL bills typically occurs 16 days sooner than manual invoices.

No manual processing is necessary

Because UBL invoices are recognized and processed automatically, no manual processing of UBL invoices is necessary. Thus, labor expenses are reduced, and processing invoices takes less time.

More efficient

It is a necessity for businesses to exchange various documents with their trading partners.

The extensible OASIS UBL XML vocabulary is available to use out of the box and to supplement with any bespoke needs when your firm must clearly communicate business information for another company to consume.

The mechanisms required to convey such information in an organized, rigorous fashion no longer need to be created from scratch by a vendor, a firm, an industry sector, or a government.

The UBL invoicing process is significantly more effective than traditional methods thanks to the time saved from eliminating manual processing, decreased labor costs, 100% accuracy, and automation.

Lower overall invoice processing costs

Eliminating manual processing and human mistakes, faster payments, and higher end-to-end invoicing efficiency result in lower overall invoice processing costs for UBL bills.

What countries require the UBL 2.1 invoice?

The Pan-European Public Procurement On-line (PEPPOL) project was established in September 2008 by European participants in public procurement with the government to enhance business-to-government supply.

Over 50% of the PEPPOL network was reportedly used for business-to-business transactions at the start of 2014.

Governments are not the only ones driving UBL XML adoption; the corporate sector has also embraced the specification.

Countries that require the UBL format include:

  • Croatia
  • Italy
  • The Netherlands
  • Croatia
  • Italy
  • Belgium
  • Germany
  • Norway
  • Sweden
  • Finland
  • Canada
  • Austria
  • The United States of America (USA)
  • Singapore
  • Australia
  • New Zealand
  • South Africa

As UBL knowledge and usage spread across the globe, vendors will provide an increasing number of tools compatible with the specifications.

All major invoicing software packages already support UBL in Europe, allowing users to transact with governments and other businesses using electronic documents.

UBL is already evolving into the HTML of business papers, much like what happened with hypertext and information publication over the internet.

Related reading: What is UBL?

How to send the UBL 2.1 invoice

The first option if you need to send a UBL invoice is to send it (or them) as an email attachment.

Some businesses, organizations, and governments want a completely safe and secure delivery.

Due to this security requirement, you cannot send your UBL invoice through email. To transmit the invoice, you must make use of the PEPPOL network.

With PEPPOL, you may securely transmit digital business papers over a global network. However, you must first register at a PEPPOL Access Point to create a PEPPOL ID before you may access this network.

But what about receiving a UBL invoice?

There are two ways to receive UBL invoices:

1. Using PEPPOL to receive the UBL invoice(s): This is the most secure and fastest way.  This e-invoicing option enables you to receive UBL via PEPPOL. We'll integrate your bookkeeping system with our automated processing of your invoices.

2. Getting the UBL invoice(s) as an attachment to an email:  In that situation, you will still need to upload your invoice into your bookkeeping software manually.

How can I request a PEPPOL ID?

You might be wondering at this point how to do this.

You can request a PEPPOL ID at a PEPPOL Access Point, which serves as the entrance to the remainder of the PEPPOL network. The international network offers more than 200 certified access points.

You can send invoices to other companies and governmental organizations connected to the PEPPOL network once you have this special identification number.

What about sending UBL invoices to governments and businesses abroad?

You can use Storecove to deliver your UBL invoices safely and securely to public agencies or businesses globally if you need to send e-invoices to them.

We will change your invoice's format to match the receiver's specifications. After that, you can deliver UBL invoices to organizations and governments in nations that require the UBL format.

Takeaway: Use a reliable e-invoicing platform to send your UBL 2.1

In this article, we have outlined the six essential steps to assist you in creating your UBL 2.1 invoice in XML format.

You are prepared to create expert UBL 2.1 invoices by selecting the correct version, gathering and organizing invoice data, using crucial XML processing tools, and selecting the proper destination.

But to make your process more efficient and maximize the benefits of electronic invoicing, register on Storecove's e-invoicing solution.

You can benefit from automatic invoice sending, quicker payment processing, and seamless adherence to global invoicing standards like UBL 2.1 with Storecove.

Embrace the comfort and efficiency of modern e-invoicing and bid adieu to the hassles associated with manual invoicing. Don't wait any longer; schedule a demo with Storecove today and revolutionize your invoicing experience!

More information about creating UBL invoices

Contact us for more information or schedule a consult with one of our e-invoicing experts.

Read also:


Subscribe to our Newsletter

* indicates required