# UK Peppol invoice XML example (UBL, validated)

> A complete UK Peppol BIS Billing 3.0 invoice in UBL XML, with GBP, 20% and zero-rated lines and a delivery charge, validated against EN 16931 and Peppol rules.

- Canonical URL: https://einvoices.uk/news/e-invoice-xml-example-uk
- Published: 20 October 2026 (2026-10-20)
- Last updated: 20 October 2026 (2026-10-20) (not updated since publication)
- Author: Floris Lindenaar, Editor, e-invoicing expert (https://einvoices.uk/authors/floris-lindenaar)
- Publisher: einvoices.uk (https://einvoices.uk)
- Type: Guide
- Topics: Technical, Peppol, Validation, Software
- Language: en-GB (UK English); covers the United Kingdom

## Sources

- [Peppol BIS Billing 3.0 (May 2026 release, version 3.0.21)](https://docs.peppol.eu/poacc/billing/3.0/bis/)
- [UBL Invoice syntax – Peppol BIS Billing 3.0](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-invoice/tree/)
- [OpenPEPPOL/peppol-bis-invoice-3 validation rules and examples](https://github.com/OpenPEPPOL/peppol-bis-invoice-3)
- [ConnectingEurope/eInvoicing-EN16931 validation artefacts](https://github.com/ConnectingEurope/eInvoicing-EN16931)
- [Electronic Address Scheme (EAS) code list – Peppol BIS Billing 3.0](https://docs.peppol.eu/poacc/billing/3.0/codelist/eas/)
- [VAT guide (VAT Notice 700) – GOV.UK](https://www.gov.uk/guidance/vat-guide-notice-700)

---

Below is a complete, valid UK e-invoice in Peppol BIS Billing 3.0 (UBL 2.1) format. It is a GBP invoice from one UK VAT-registered company to another, with a 20% line, a zero-rated line and a delivery charge. We validated it against the UBL 2.1 schema, the EN 16931 UBL rules (version 1.3.17 from the European Commission's GitHub) and the Peppol BIS Billing 3.0 rules, with no errors and no warnings. Copy it, then read the walkthrough to see what each part does.

All names, numbers and identifiers are fictitious. HMRC has **not yet published** a UK e-invoice specification, so this shows Peppol BIS Billing 3.0 with UK data, not a confirmed UK mandate format.

## The scenario

| | |
|---|---|
| Seller | Example Supplies Ltd, Leeds, VAT GB123456789 |
| Buyer | Sample Buyer Ltd, Bristol, VAT GB987654321 |
| Line 1 | 10 hours consultancy at £85.00, standard rated 20% = £850.00 |
| Line 2 | 5 printed books at £12.00, zero-rated = £60.00 |
| Charge | Delivery £15.00, standard rated 20% |
| VAT | 20% on £865.00 = £173.00; 0% on £60.00 |
| Total | £925.00 net + £173.00 VAT = **£1,098.00** |

## The full invoice

```xml
<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
         xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
         xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
  <cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
  <cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
  <cbc:ID>INV-2026-0142</cbc:ID>
  <cbc:IssueDate>2026-10-20</cbc:IssueDate>
  <cbc:DueDate>2026-11-19</cbc:DueDate>
  <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
  <cbc:DocumentCurrencyCode>GBP</cbc:DocumentCurrencyCode>
  <cbc:BuyerReference>FIN-OPS-77</cbc:BuyerReference>
  <cac:InvoicePeriod>
    <cbc:StartDate>2026-09-01</cbc:StartDate>
    <cbc:EndDate>2026-09-30</cbc:EndDate>
  </cac:InvoicePeriod>
  <cac:OrderReference>
    <cbc:ID>PO-48213</cbc:ID>
  </cac:OrderReference>
  <cac:AccountingSupplierParty>
    <cac:Party>
      <cbc:EndpointID schemeID="0088">5099999000011</cbc:EndpointID>
      <cac:PartyName>
        <cbc:Name>Example Supplies</cbc:Name>
      </cac:PartyName>
      <cac:PostalAddress>
        <cbc:StreetName>1 High Street</cbc:StreetName>
        <cbc:CityName>Leeds</cbc:CityName>
        <cbc:PostalZone>LS1 1AA</cbc:PostalZone>
        <cac:Country>
          <cbc:IdentificationCode>GB</cbc:IdentificationCode>
        </cac:Country>
      </cac:PostalAddress>
      <cac:PartyTaxScheme>
        <cbc:CompanyID>GB123456789</cbc:CompanyID>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:PartyTaxScheme>
      <cac:PartyLegalEntity>
        <cbc:RegistrationName>Example Supplies Ltd</cbc:RegistrationName>
        <cbc:CompanyID>01234567</cbc:CompanyID>
      </cac:PartyLegalEntity>
      <cac:Contact>
        <cbc:Name>Accounts team</cbc:Name>
        <cbc:ElectronicMail>accounts@example.co.uk</cbc:ElectronicMail>
      </cac:Contact>
    </cac:Party>
  </cac:AccountingSupplierParty>
  <cac:AccountingCustomerParty>
    <cac:Party>
      <cbc:EndpointID schemeID="0088">5099999000028</cbc:EndpointID>
      <cac:PostalAddress>
        <cbc:StreetName>20 Market Square</cbc:StreetName>
        <cbc:CityName>Bristol</cbc:CityName>
        <cbc:PostalZone>BS1 2BB</cbc:PostalZone>
        <cac:Country>
          <cbc:IdentificationCode>GB</cbc:IdentificationCode>
        </cac:Country>
      </cac:PostalAddress>
      <cac:PartyTaxScheme>
        <cbc:CompanyID>GB987654321</cbc:CompanyID>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:PartyTaxScheme>
      <cac:PartyLegalEntity>
        <cbc:RegistrationName>Sample Buyer Ltd</cbc:RegistrationName>
      </cac:PartyLegalEntity>
    </cac:Party>
  </cac:AccountingCustomerParty>
  <cac:Delivery>
    <cbc:ActualDeliveryDate>2026-09-30</cbc:ActualDeliveryDate>
  </cac:Delivery>
  <cac:PaymentMeans>
    <cbc:PaymentMeansCode>30</cbc:PaymentMeansCode>
    <cbc:PaymentID>INV-2026-0142</cbc:PaymentID>
    <cac:PayeeFinancialAccount>
      <cbc:ID>GB29NWBK60161331926819</cbc:ID>
      <cbc:Name>Example Supplies Ltd</cbc:Name>
    </cac:PayeeFinancialAccount>
  </cac:PaymentMeans>
  <cac:PaymentTerms>
    <cbc:Note>Payment within 30 days of invoice date</cbc:Note>
  </cac:PaymentTerms>
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
    <cbc:AllowanceChargeReasonCode>DL</cbc:AllowanceChargeReasonCode>
    <cbc:AllowanceChargeReason>Delivery</cbc:AllowanceChargeReason>
    <cbc:Amount currencyID="GBP">15.00</cbc:Amount>
    <cac:TaxCategory>
      <cbc:ID>S</cbc:ID>
      <cbc:Percent>20</cbc:Percent>
      <cac:TaxScheme>
        <cbc:ID>VAT</cbc:ID>
      </cac:TaxScheme>
    </cac:TaxCategory>
  </cac:AllowanceCharge>
  <cac:TaxTotal>
    <cbc:TaxAmount currencyID="GBP">173.00</cbc:TaxAmount>
    <cac:TaxSubtotal>
      <cbc:TaxableAmount currencyID="GBP">865.00</cbc:TaxableAmount>
      <cbc:TaxAmount currencyID="GBP">173.00</cbc:TaxAmount>
      <cac:TaxCategory>
        <cbc:ID>S</cbc:ID>
        <cbc:Percent>20</cbc:Percent>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:TaxCategory>
    </cac:TaxSubtotal>
    <cac:TaxSubtotal>
      <cbc:TaxableAmount currencyID="GBP">60.00</cbc:TaxableAmount>
      <cbc:TaxAmount currencyID="GBP">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>
  <cac:LegalMonetaryTotal>
    <cbc:LineExtensionAmount currencyID="GBP">910.00</cbc:LineExtensionAmount>
    <cbc:TaxExclusiveAmount currencyID="GBP">925.00</cbc:TaxExclusiveAmount>
    <cbc:TaxInclusiveAmount currencyID="GBP">1098.00</cbc:TaxInclusiveAmount>
    <cbc:ChargeTotalAmount currencyID="GBP">15.00</cbc:ChargeTotalAmount>
    <cbc:PayableAmount currencyID="GBP">1098.00</cbc:PayableAmount>
  </cac:LegalMonetaryTotal>
  <cac:InvoiceLine>
    <cbc:ID>1</cbc:ID>
    <cbc:InvoicedQuantity unitCode="HUR">10</cbc:InvoicedQuantity>
    <cbc:LineExtensionAmount currencyID="GBP">850.00</cbc:LineExtensionAmount>
    <cac:OrderLineReference>
      <cbc:LineID>1</cbc:LineID>
    </cac:OrderLineReference>
    <cac:Item>
      <cbc:Name>Consultancy services, September 2026</cbc:Name>
      <cac:ClassifiedTaxCategory>
        <cbc:ID>S</cbc:ID>
        <cbc:Percent>20</cbc:Percent>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:ClassifiedTaxCategory>
    </cac:Item>
    <cac:Price>
      <cbc:PriceAmount currencyID="GBP">85.00</cbc:PriceAmount>
    </cac:Price>
  </cac:InvoiceLine>
  <cac:InvoiceLine>
    <cbc:ID>2</cbc:ID>
    <cbc:InvoicedQuantity unitCode="C62">5</cbc:InvoicedQuantity>
    <cbc:LineExtensionAmount currencyID="GBP">60.00</cbc:LineExtensionAmount>
    <cac:OrderLineReference>
      <cbc:LineID>2</cbc:LineID>
    </cac:OrderLineReference>
    <cac:Item>
      <cbc:Name>Printed books</cbc:Name>
      <cac:ClassifiedTaxCategory>
        <cbc:ID>Z</cbc:ID>
        <cbc:Percent>0</cbc:Percent>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:ClassifiedTaxCategory>
    </cac:Item>
    <cac:Price>
      <cbc:PriceAmount currencyID="GBP">12.00</cbc:PriceAmount>
    </cac:Price>
  </cac:InvoiceLine>
</Invoice>
```

## Walkthrough

### Header: identifiers and dates

- `cbc:CustomizationID` and `cbc:ProfileID` are fixed Peppol values for BIS Billing 3.0. A wrong CustomizationID triggers PEPPOL-EN16931-R004.
- `cbc:ID` is the invoice number (BT-1). HMRC requires "a sequential number based on one or more series which uniquely identifies the document".
- `cbc:IssueDate` (BT-2) and `cbc:DueDate` (BT-9) must be `YYYY-MM-DD`.
- `cbc:InvoiceTypeCode` 380 is a commercial invoice. Credit notes use a separate `CreditNote` document. See [credit notes in Peppol](https://einvoices.uk/news/credit-notes-peppol-uk).
- `cbc:DocumentCurrencyCode` GBP. For other currencies, see [multi-currency e-invoices](https://einvoices.uk/news/multi-currency-e-invoices-gbp).

### References

`cbc:BuyerReference` (BT-10) and `cac:OrderReference/cbc:ID` (BT-13). Peppol needs at least one (rule R003). See [buyer reference and PO number](https://einvoices.uk/news/purchase-order-reference-buyer-reference-peppol). `cac:InvoicePeriod` shows the service period. `cac:Delivery/cbc:ActualDeliveryDate` is one way to show the time of supply. You could use `cbc:TaxPointDate` (BT-7) instead.

### Parties

- `cbc:EndpointID` is the Peppol electronic address, with a `schemeID` from the EAS list. We used `0088` (GS1 GLN) with fictitious numbers that pass the GLN check-digit rule. UK businesses may also use `9932` (UK VAT number). See [Peppol EAS codes for the UK](https://einvoices.uk/news/peppol-eas-codes-uk-9932-0088).
- `cac:PartyName/cbc:Name` is the trading name (BT-28). `cac:PartyLegalEntity/cbc:RegistrationName` is the legal name (BT-27). HMRC requires the name under which you are registered for VAT.
- `cac:PartyTaxScheme/cbc:CompanyID` is the VAT number with the `GB` prefix (BR-CO-09).
- `cac:PartyLegalEntity/cbc:CompanyID` here holds a Companies House-style number without a scheme ID. That is optional.
- Postal addresses need a country code (BR-09, BR-11).

### Payment

`cbc:PaymentMeansCode` 30 is credit transfer. Rule BR-61 then requires an account identifier (`cac:PayeeFinancialAccount/cbc:ID`). We used the standard example IBAN format. `cbc:PaymentID` is the remittance reference you want quoted.

### Document-level charge

`cac:AllowanceCharge` with `cbc:ChargeIndicator` true is a charge. `false` would be a discount. Reason code `DL` is "Delivery" in the UNCL 7161 list. Each charge needs its own VAT category and rate.

### VAT breakdown

One `cac:TaxTotal` with one `cac:TaxSubtotal` per VAT category and rate:

- `S` at 20%: taxable £850.00 + £15.00 = £865.00, VAT £173.00
- `Z` at 0%: taxable £60.00, VAT £0.00 (no exemption reason allowed)

Category codes are explained in [UK VAT category codes](https://einvoices.uk/news/uk-vat-category-codes-peppol).

### Totals

| Element | Value | Rule |
|---|---|---|
| LineExtensionAmount | 910.00 = 850.00 + 60.00 | BR-CO-10 |
| ChargeTotalAmount | 15.00 | BR-CO-12 |
| TaxExclusiveAmount | 925.00 = 910.00 + 15.00 | BR-CO-13 |
| TaxTotal/TaxAmount | 173.00 = 173.00 + 0.00 | BR-CO-14 |
| TaxInclusiveAmount | 1098.00 = 925.00 + 173.00 | BR-CO-15 |
| PayableAmount | 1098.00 | BR-CO-16 |

Element order inside `cac:LegalMonetaryTotal` is fixed by the UBL schema: `LineExtensionAmount`, `TaxExclusiveAmount`, `TaxInclusiveAmount`, then `AllowanceTotalAmount`, `ChargeTotalAmount`, `PrepaidAmount`, `PayableRoundingAmount`, `PayableAmount`.

### Lines

Each `cac:InvoiceLine` has an ID, quantity with a UN/ECE unit code (`HUR` hour, `C62` one), a net amount equal to quantity × price (PEPPOL-EN16931-R120), an item name, a VAT category, and a price. `cac:OrderLineReference` links each line to the PO line.

## How to validate it yourself

1. **Schema:** validate against `UBL-Invoice-2.1.xsd` from the OASIS UBL 2.1 package.
2. **EN 16931 rules:** run the UBL XSLT from [ConnectingEurope/eInvoicing-EN16931](https://github.com/ConnectingEurope/eInvoicing-EN16931) with an XSLT 2.0 processor such as Saxon.
3. **Peppol rules:** compile `PEPPOL-EN16931-UBL.sch` from [OpenPEPPOL/peppol-bis-invoice-3](https://github.com/OpenPEPPOL/peppol-bis-invoice-3) and run it the same way.

Look for `svrl:failed-assert` in the output. None means pass. Most Access Points run the same checks when you submit.

## Variations

- Reverse charge construction invoice: [AE code example](https://einvoices.uk/news/domestic-reverse-charge-construction-e-invoice)
- PDF timesheet attached: [attachments](https://einvoices.uk/news/invoice-attachments-peppol)
- Errors and fixes: [common Peppol validation errors](https://einvoices.uk/news/common-peppol-validation-errors)

## What may change

This example follows Peppol BIS Billing 3.0 as published in May 2026. Peppol is confirmed as the UK's network. The UK data standard is due to be set out after the roadmap at Budget 2026 and may add UK-specific requirements. **Nothing UK-specific is confirmed yet.** Check the [timeline](https://einvoices.uk/timeline).

## Frequently asked questions

### Is there an official UK e-invoice XML example?

Not yet. HMRC has not published a UK e-invoice specification or examples. Peppol publishes generic examples on GitHub. The example on this page follows Peppol BIS Billing 3.0 with UK data.

### Which XML format do UK Peppol invoices use?

Peppol BIS Billing 3.0 uses UBL 2.1. The Invoice root element is in the namespace urn:oasis:names:specification:ubl:schema:xsd:Invoice-2.

### What is the minimum a Peppol invoice needs?

Among other things: the CustomizationID and ProfileID, invoice number, issue date, type code, currency, a buyer reference or PO number, seller and buyer with electronic addresses and postal addresses, a VAT breakdown, totals, and at least one line.

### How was this example validated?

Against the UBL 2.1 Invoice schema, the EN 16931 UBL Schematron (version 1.3.17) and the Peppol BIS Billing 3.0 Schematron. All passed with no errors or warnings.

---

How to cite: "UK Peppol invoice XML example (UBL, validated)", einvoices.uk, 20 October 2026, https://einvoices.uk/news/e-invoice-xml-example-uk

einvoices.uk is an independent publication and is not affiliated with HMRC or the UK Government. Nothing here is tax advice; check the sources and official GOV.UK guidance before acting.
