Under EU ViDA, EN 16931-structured e-invoicing becomes mandatory for intra-EU cross-border B2B from July 2030, with national B2B mandates arriving sooner (Belgium live 2026, France 2026, Germany 2027–28). Because a SIGNET invoice is structured to EN 16931, conversion to Peppol BIS Billing 3.0 is a direct projection — not an integration project.
Edit the canonical invoice — the Peppol BIS projection and the verification re-run live.
<?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-000512</cbc:ID>
<cbc:IssueDate>2026-10-05</cbc:IssueDate>
<cbc:DueDate>2026-11-04</cbc:DueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cac:OrderReference><cbc:ID>did:web:buyer.example#order-7781</cbc:ID></cac:OrderReference>
<cac:ContractDocumentReference><cbc:ID>did:web:buyer.example#contract-3310</cbc:ID></cac:ContractDocumentReference>
<cac:AccountingSupplierParty><cac:Party><cac:PartyLegalEntity>
<cbc:CompanyID schemeID="0199">5299000ACME00NETWRK1</cbc:CompanyID>
</cac:PartyLegalEntity></cac:Party></cac:AccountingSupplierParty>
<cac:AccountingCustomerParty><cac:Party><cac:PartyLegalEntity>
<cbc:CompanyID schemeID="0199">5299000BUYER00000001</cbc:CompanyID>
</cac:PartyLegalEntity></cac:Party></cac:AccountingCustomerParty>
<cac:PaymentTerms><cbc:Note>Net 30 days from invoice date.</cbc:Note></cac:PaymentTerms>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">1302.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">6200.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">1302.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>21</cbc:Percent>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">6200.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">6200.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">7502.00</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="EUR">7502.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="MON">100</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">5000.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Core router managed service — monthly</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>21</cbc:Percent>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:ClassifiedTaxCategory>
<cac:CommodityClassification>
<cbc:ItemClassificationCode listID="CPV">72720000</cbc:ItemClassificationCode>
</cac:CommodityClassification>
</cac:Item>
<cac:Price><cbc:PriceAmount currencyID="EUR">50.00</cbc:PriceAmount></cac:Price>
</cac:InvoiceLine>
<cac:InvoiceLine>
<cbc:ID>2</cbc:ID>
<cbc:InvoicedQuantity unitCode="DAY">10</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">1200.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Field engineering — day rate</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>21</cbc:Percent>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price><cbc:PriceAmount currencyID="EUR">120.00</cbc:PriceAmount></cac:Price>
</cac:InvoiceLine>
</Invoice>
- BT-1 · Invoice numberINV-2026-000512
- BT-2 · Issue date2026-10-05
- BT-5 · CurrencyEUR
- BT-3 · Invoice type380
- BT-106 · Line extension total6200.00
- BT-109 · Tax exclusive total6200.00
- BT-110 · Tax total1302.00
- BT-112 · Tax inclusive total7502.00
- BT-115 · Payable amount7502.00
- BG-25 · Line count2
- Σ line nets == BT-1066200.00
- BT-109 + BT-110 == BT-1127502.00
Generated by tools/signet-to-ubl.js; verified by tools/verify-ubl.py. Both run in CI on every commit to concerthq/signet-standard. This is a faithful reference projection, not a substitute for official Peppol XSD + Schematron validation.