Build a Peppol A-NZ e-Invoice (BIS Billing 3.0, UBL)
Skill: Convert invoice data into the Australian Peppol (A-NZ) UBL e-invoice
Region: Australia
Category: E-Invoicing — Peppol A-NZ (EN 16931-aligned)
Does: Takes ordinary invoice data and produces a UBL 2.1 Invoice in the Australia/New Zealand Peppol BIS Billing 3.0 profile, routed over the Peppol network (the ATO is the Australian Peppol Authority) to the buyer's access point.
Standard: Peppol BIS Billing 3.0 — A-NZ specialisation (aligned to EN 16931) · ATO Peppol Authority
Australian e-invoicing is voluntary but standardised on Peppol: government agencies must be able to receive Peppol e-invoices, and the A-NZ profile constrains the international BIS Billing 3.0. Parties are identified by ABN using Peppol scheme
0151. GST is 10%. Validate against the A-NZ BIS schematron before sending.
When this applies
- B2B / B2G invoicing where the recipient is registered on the Peppol network with an A-NZ endpoint.
- Cross-Tasman (AU↔NZ) invoicing using the shared A-NZ profile (NZ uses NZBN scheme
0088/0088-GLN or the NZBN scheme).
Input data required
| Input | EN 16931 term |
|---|---|
| Invoice number, issue date, due date, type code (380) | BT-1, BT-2, BT-9, BT-3 |
| Currency (AUD) | BT-5 |
| Supplier name, ABN, address | BT-27, BT-30, BG-5 |
| Customer name, ABN, address | BT-44, BT-46, BG-8 |
| Lines: description, quantity, unit price, GST category/rate | BG-25 |
| GST breakdown, totals | BG-23, BG-22 |
Document structure (UBL Invoice)
Invoice
├── cbc:CustomizationID (urn:cen.eu:en16931:2017#conformant#urn:fdc:peppol.eu:2017:poacc:billing:international:aunz:3.0)
├── cbc:ProfileID (urn:fdc:peppol.eu:2017:poacc:billing:01:1.0)
├── cbc:ID / IssueDate / DueDate / InvoiceTypeCode / DocumentCurrencyCode (AUD)
├── cac:AccountingSupplierParty (EndpointID schemeID="0151" = ABN; PartyTaxScheme GST)
├── cac:AccountingCustomerParty (EndpointID schemeID="0151" = ABN)
├── cac:TaxTotal (TaxSubtotal: GST category S @10%, or Z/E/O)
├── cac:LegalMonetaryTotal
└── cac:InvoiceLine ...
GST category codes: S standard (10%), Z zero/GST-free, E exempt/input-taxed, O out of scope. ABN endpoints use Peppol EAS 0151.
Calculation rules
- Line net = quantity × unit price; group lines by GST category →
TaxSubtotal(TaxableAmount,TaxAmount = base × 10%). TaxInclusiveAmount = TaxExclusiveAmount + GST;PayableAmount = TaxInclusiveAmount − Prepaid.- GST-free / input-taxed lines carry rate 0 with the appropriate category and reason.
Worked example (one standard-rated line)
<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#conformant#urn:fdc:peppol.eu:2017:poacc:billing:international:aunz:3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
<cbc:ID>INV-1001</cbc:ID>
<cbc:IssueDate>2026-02-01</cbc:IssueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>AUD</cbc:DocumentCurrencyCode>
<cac:AccountingSupplierParty><cac:Party>
<cbc:EndpointID schemeID="0151">53004085616</cbc:EndpointID>
<cac:PartyLegalEntity><cbc:RegistrationName>Acme Pty Ltd</cbc:RegistrationName><cbc:CompanyID schemeID="0151">53004085616</cbc:CompanyID></cac:PartyLegalEntity>
</cac:Party></cac:AccountingSupplierParty>
<cac:AccountingCustomerParty><cac:Party>
<cbc:EndpointID schemeID="0151">51824753556</cbc:EndpointID>
<cac:PartyLegalEntity><cbc:RegistrationName>Buyer Pty Ltd</cbc:RegistrationName></cac:PartyLegalEntity>
</cac:Party></cac:AccountingCustomerParty>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="AUD">100.00</cbc:TaxAmount>
<cac:TaxSubtotal><cbc:TaxableAmount currencyID="AUD">1000.00</cbc:TaxableAmount><cbc:TaxAmount currencyID="AUD">100.00</cbc:TaxAmount>
<cac:TaxCategory><cbc:ID>S</cbc:ID><cbc:Percent>10</cbc:Percent><cac:TaxScheme><cbc:ID>GST</cbc:ID></cac:TaxScheme></cac:TaxCategory></cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal><cbc:LineExtensionAmount currencyID="AUD">1000.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="AUD">1000.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="AUD">1100.00</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="AUD">1100.00</cbc:PayableAmount></cac:LegalMonetaryTotal>
<cac:InvoiceLine><cbc:ID>1</cbc:ID><cbc:InvoicedQuantity unitCode="C62">10</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="AUD">1000.00</cbc:LineExtensionAmount>
<cac:Item><cbc:Name>Professional services</cbc:Name>
<cac:ClassifiedTaxCategory><cbc:ID>S</cbc:ID><cbc:Percent>10</cbc:Percent><cac:TaxScheme><cbc:ID>GST</cbc:ID></cac:TaxScheme></cac:ClassifiedTaxCategory></cac:Item>
<cac:Price><cbc:PriceAmount currencyID="AUD">100.00</cbc:PriceAmount></cac:Price></cac:InvoiceLine>
</Invoice>
Validation checklist
- A-NZ
CustomizationID/ProfileIDused; currency AUD - Supplier & customer ABN endpoints with
schemeID="0151" - Each line: quantity (
unitCode), price, GST category + rate, line total - GST
TaxSubtotalreconciles; GST-free/input-taxed lines categorised correctly -
TaxInclusiveAmount= exclusive + GST;PayableAmountcorrect - Passes the A-NZ Peppol BIS schematron; recipient reachable on Peppol
Last updated: 2026-06-04 — confirm the active A-NZ Peppol BIS Billing version, ABN endpoint scheme, and schematron against the current ATO Peppol Authority specifications before use.