[{"data":1,"prerenderedAt":1023},["ShallowReactive",2],{"\u002Fblog\u002Fpeppol-bis-billing-30-a-line-by-line-walkthrough":3},{"id":4,"title":5,"body":6,"description":1015,"extension":1016,"lastUpdatedAt":1017,"meta":1018,"navigation":71,"path":1019,"publishedAt":1017,"seo":1020,"stem":1021,"__hash__":1022},"blog\u002Fblog\u002F0067.peppol-bis-billing-30-a-line-by-line-walkthrough.md","PEPPOL BIS Billing 3.0: a line-by-line walkthrough",{"type":7,"value":8,"toc":1003},"minimark",[9,13,22,27,30,85,95,99,134,140,154,171,181,187,191,226,233,237,391,401,411,421,428,432,438,524,530,534,579,585,595,602,606,670,688,724,728,763,804,811,815,901,916,946,951,960,966,970,979,986,999],[10,11,12],"p",{},"PEPPOL BIS Billing 3.0 is the invoice format used across the PEPPOL network. It is based on UBL 2.1 XML, constrained by the European standard EN 16931, and extended for country-specific requirements by national profiles like SwissDIGIN. The full specification document is long. This post works through the key sections of an actual invoice XML, explaining what each part does and what the common mistakes are.",[10,14,15,16,21],{},"If you want the Swiss-specific extensions on top of this structure, see the ",[17,18,20],"a",{"href":19},"\u002Fblog\u002Fhow-swissdigin-extends-peppol-bis-billing-30-for-switzerland","SwissDIGIN post",". This post focuses on the core PEPPOL BIS structure that applies everywhere.",[23,24,26],"h2",{"id":25},"the-document-envelope","The document envelope",[10,28,29],{},"Every PEPPOL BIS invoice starts with the UBL document declaration and two mandatory identifier elements:",[31,32,37],"pre",{"className":33,"code":34,"language":35,"meta":36,"style":36},"language-xml shiki shiki-themes github-light github-dark","\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\u003Cubl:Invoice xmlns:ubl=\"urn:oasis:names:specification:ubl:schema:xsd:Invoice-2\"\n             xmlns:cac=\"urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2\"\n             xmlns:cbc=\"urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2\">\n\n  \u003Ccbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0\u003C\u002Fcbc:CustomizationID>\n  \u003Ccbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:3.0\u003C\u002Fcbc:ProfileID>\n","xml","",[38,39,40,48,54,60,66,73,79],"code",{"__ignoreMap":36},[41,42,45],"span",{"class":43,"line":44},"line",1,[41,46,47],{},"\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n",[41,49,51],{"class":43,"line":50},2,[41,52,53],{},"\u003Cubl:Invoice xmlns:ubl=\"urn:oasis:names:specification:ubl:schema:xsd:Invoice-2\"\n",[41,55,57],{"class":43,"line":56},3,[41,58,59],{},"             xmlns:cac=\"urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2\"\n",[41,61,63],{"class":43,"line":62},4,[41,64,65],{},"             xmlns:cbc=\"urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2\">\n",[41,67,69],{"class":43,"line":68},5,[41,70,72],{"emptyLinePlaceholder":71},true,"\n",[41,74,76],{"class":43,"line":75},6,[41,77,78],{},"  \u003Ccbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0\u003C\u002Fcbc:CustomizationID>\n",[41,80,82],{"class":43,"line":81},7,[41,83,84],{},"  \u003Ccbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:3.0\u003C\u002Fcbc:ProfileID>\n",[10,86,87,90,91,94],{},[38,88,89],{},"CustomizationID"," identifies the specification profile. Validation tools check this to know which Schematron rules to apply. If you use SwissDIGIN, the value changes to include the Swiss profile extension. ",[38,92,93],{},"ProfileID"," identifies the procurement process profile — for invoices it is always the billing 3.0 string shown above.",[23,96,98],{"id":97},"document-level-fields","Document-level fields",[31,100,102],{"className":33,"code":101,"language":35,"meta":36,"style":36},"  \u003Ccbc:ID>INV-2024-0047\u003C\u002Fcbc:ID>\n  \u003Ccbc:IssueDate>2024-03-15\u003C\u002Fcbc:IssueDate>\n  \u003Ccbc:DueDate>2024-04-14\u003C\u002Fcbc:DueDate>\n  \u003Ccbc:InvoiceTypeCode>380\u003C\u002Fcbc:InvoiceTypeCode>\n  \u003Ccbc:DocumentCurrencyCode>CHF\u003C\u002Fcbc:DocumentCurrencyCode>\n  \u003Ccbc:BuyerReference>PO-9981\u003C\u002Fcbc:BuyerReference>\n",[38,103,104,109,114,119,124,129],{"__ignoreMap":36},[41,105,106],{"class":43,"line":44},[41,107,108],{},"  \u003Ccbc:ID>INV-2024-0047\u003C\u002Fcbc:ID>\n",[41,110,111],{"class":43,"line":50},[41,112,113],{},"  \u003Ccbc:IssueDate>2024-03-15\u003C\u002Fcbc:IssueDate>\n",[41,115,116],{"class":43,"line":56},[41,117,118],{},"  \u003Ccbc:DueDate>2024-04-14\u003C\u002Fcbc:DueDate>\n",[41,120,121],{"class":43,"line":62},[41,122,123],{},"  \u003Ccbc:InvoiceTypeCode>380\u003C\u002Fcbc:InvoiceTypeCode>\n",[41,125,126],{"class":43,"line":68},[41,127,128],{},"  \u003Ccbc:DocumentCurrencyCode>CHF\u003C\u002Fcbc:DocumentCurrencyCode>\n",[41,130,131],{"class":43,"line":75},[41,132,133],{},"  \u003Ccbc:BuyerReference>PO-9981\u003C\u002Fcbc:BuyerReference>\n",[10,135,136,139],{},[38,137,138],{},"ID"," is your invoice number — any string up to 200 characters, must be unique per supplier.",[10,141,142,145,146,149,150,153],{},[38,143,144],{},"IssueDate"," and ",[38,147,148],{},"DueDate"," use ISO 8601 format (",[38,151,152],{},"YYYY-MM-DD","). Time components are not used.",[10,155,156,159,160,163,164,167,168,170],{},[38,157,158],{},"InvoiceTypeCode"," uses UN\u002FCEFACT 1001 codes. ",[38,161,162],{},"380"," is a commercial invoice. ",[38,165,166],{},"381"," is a credit note. Do not use ",[38,169,162],{}," for a credit note — validators will fail it.",[10,172,173,176,177,180],{},[38,174,175],{},"DocumentCurrencyCode"," is the three-letter ISO 4217 currency code. ",[38,178,179],{},"CHF"," for Swiss franc invoices.",[10,182,183,186],{},[38,184,185],{},"BuyerReference"," is free text — often a purchase order number, contract number, or cost centre code the buyer has asked you to include. It is not mandatory in the base spec but many buyers require it and will reject invoices without it.",[23,188,190],{"id":189},"order-and-contract-references","Order and contract references",[31,192,194],{"className":33,"code":193,"language":35,"meta":36,"style":36},"  \u003Ccac:OrderReference>\n    \u003Ccbc:ID>PO-9981\u003C\u002Fcbc:ID>\n  \u003C\u002Fcac:OrderReference>\n  \u003Ccac:ContractDocumentReference>\n    \u003Ccbc:ID>CONTRACT-2024-007\u003C\u002Fcbc:ID>\n  \u003C\u002Fcac:ContractDocumentReference>\n",[38,195,196,201,206,211,216,221],{"__ignoreMap":36},[41,197,198],{"class":43,"line":44},[41,199,200],{},"  \u003Ccac:OrderReference>\n",[41,202,203],{"class":43,"line":50},[41,204,205],{},"    \u003Ccbc:ID>PO-9981\u003C\u002Fcbc:ID>\n",[41,207,208],{"class":43,"line":56},[41,209,210],{},"  \u003C\u002Fcac:OrderReference>\n",[41,212,213],{"class":43,"line":62},[41,214,215],{},"  \u003Ccac:ContractDocumentReference>\n",[41,217,218],{"class":43,"line":68},[41,219,220],{},"    \u003Ccbc:ID>CONTRACT-2024-007\u003C\u002Fcbc:ID>\n",[41,222,223],{"class":43,"line":75},[41,224,225],{},"  \u003C\u002Fcac:ContractDocumentReference>\n",[10,227,228,229,232],{},"These are optional but frequently expected by public sector and larger corporate buyers. Include the purchase order number in ",[38,230,231],{},"OrderReference"," whenever you have one — it is the most common piece of information that AP teams use to match invoices to commitments.",[23,234,236],{"id":235},"supplier-seller-party","Supplier (seller) party",[31,238,240],{"className":33,"code":239,"language":35,"meta":36,"style":36},"  \u003Ccac:AccountingSupplierParty>\n    \u003Ccac:Party>\n      \u003Ccac:EndpointID schemeID=\"0209\">CHE1162817100\u003C\u002Fcac:EndpointID>\n      \u003Ccac:PartyName>\u003Ccbc:Name>Muster AG\u003C\u002Fcbc:Name>\u003C\u002Fcac:PartyName>\n      \u003Ccac:PostalAddress>\n        \u003Ccbc:StreetName>Bahnhofstrasse 12\u003C\u002Fcbc:StreetName>\n        \u003Ccbc:CityName>Zürich\u003C\u002Fcbc:CityName>\n        \u003Ccbc:PostalZone>8001\u003C\u002Fcbc:PostalZone>\n        \u003Ccac:Country>\n          \u003Ccbc:IdentificationCode>CH\u003C\u002Fcbc:IdentificationCode>\n        \u003C\u002Fcac:Country>\n      \u003C\u002Fcac:PostalAddress>\n      \u003Ccac:PartyTaxScheme>\n        \u003Ccbc:CompanyID>CHE-116.281.710 MWST\u003C\u002Fcbc:CompanyID>\n        \u003Ccac:TaxScheme>\u003Ccbc:ID>VAT\u003C\u002Fcbc:ID>\u003C\u002Fcac:TaxScheme>\n      \u003C\u002Fcac:PartyTaxScheme>\n      \u003Ccac:PartyLegalEntity>\n        \u003Ccbc:RegistrationName>Muster AG\u003C\u002Fcbc:RegistrationName>\n        \u003Ccbc:CompanyID schemeID=\"CHE\">CHE-116.281.710\u003C\u002Fcbc:CompanyID>\n      \u003C\u002Fcac:PartyLegalEntity>\n      \u003Ccac:Contact>\n        \u003Ccbc:Name>Anna Brunner\u003C\u002Fcbc:Name>\n        \u003Ccbc:ElectronicMail>a.brunner@muster.ch\u003C\u002Fcbc:ElectronicMail>\n      \u003C\u002Fcac:Contact>\n    \u003C\u002Fcac:Party>\n  \u003C\u002Fcac:AccountingSupplierParty>\n",[38,241,242,247,252,257,262,267,272,277,283,289,295,301,307,313,319,325,331,337,343,349,355,361,367,373,379,385],{"__ignoreMap":36},[41,243,244],{"class":43,"line":44},[41,245,246],{},"  \u003Ccac:AccountingSupplierParty>\n",[41,248,249],{"class":43,"line":50},[41,250,251],{},"    \u003Ccac:Party>\n",[41,253,254],{"class":43,"line":56},[41,255,256],{},"      \u003Ccac:EndpointID schemeID=\"0209\">CHE1162817100\u003C\u002Fcac:EndpointID>\n",[41,258,259],{"class":43,"line":62},[41,260,261],{},"      \u003Ccac:PartyName>\u003Ccbc:Name>Muster AG\u003C\u002Fcbc:Name>\u003C\u002Fcac:PartyName>\n",[41,263,264],{"class":43,"line":68},[41,265,266],{},"      \u003Ccac:PostalAddress>\n",[41,268,269],{"class":43,"line":75},[41,270,271],{},"        \u003Ccbc:StreetName>Bahnhofstrasse 12\u003C\u002Fcbc:StreetName>\n",[41,273,274],{"class":43,"line":81},[41,275,276],{},"        \u003Ccbc:CityName>Zürich\u003C\u002Fcbc:CityName>\n",[41,278,280],{"class":43,"line":279},8,[41,281,282],{},"        \u003Ccbc:PostalZone>8001\u003C\u002Fcbc:PostalZone>\n",[41,284,286],{"class":43,"line":285},9,[41,287,288],{},"        \u003Ccac:Country>\n",[41,290,292],{"class":43,"line":291},10,[41,293,294],{},"          \u003Ccbc:IdentificationCode>CH\u003C\u002Fcbc:IdentificationCode>\n",[41,296,298],{"class":43,"line":297},11,[41,299,300],{},"        \u003C\u002Fcac:Country>\n",[41,302,304],{"class":43,"line":303},12,[41,305,306],{},"      \u003C\u002Fcac:PostalAddress>\n",[41,308,310],{"class":43,"line":309},13,[41,311,312],{},"      \u003Ccac:PartyTaxScheme>\n",[41,314,316],{"class":43,"line":315},14,[41,317,318],{},"        \u003Ccbc:CompanyID>CHE-116.281.710 MWST\u003C\u002Fcbc:CompanyID>\n",[41,320,322],{"class":43,"line":321},15,[41,323,324],{},"        \u003Ccac:TaxScheme>\u003Ccbc:ID>VAT\u003C\u002Fcbc:ID>\u003C\u002Fcac:TaxScheme>\n",[41,326,328],{"class":43,"line":327},16,[41,329,330],{},"      \u003C\u002Fcac:PartyTaxScheme>\n",[41,332,334],{"class":43,"line":333},17,[41,335,336],{},"      \u003Ccac:PartyLegalEntity>\n",[41,338,340],{"class":43,"line":339},18,[41,341,342],{},"        \u003Ccbc:RegistrationName>Muster AG\u003C\u002Fcbc:RegistrationName>\n",[41,344,346],{"class":43,"line":345},19,[41,347,348],{},"        \u003Ccbc:CompanyID schemeID=\"CHE\">CHE-116.281.710\u003C\u002Fcbc:CompanyID>\n",[41,350,352],{"class":43,"line":351},20,[41,353,354],{},"      \u003C\u002Fcac:PartyLegalEntity>\n",[41,356,358],{"class":43,"line":357},21,[41,359,360],{},"      \u003Ccac:Contact>\n",[41,362,364],{"class":43,"line":363},22,[41,365,366],{},"        \u003Ccbc:Name>Anna Brunner\u003C\u002Fcbc:Name>\n",[41,368,370],{"class":43,"line":369},23,[41,371,372],{},"        \u003Ccbc:ElectronicMail>a.brunner@muster.ch\u003C\u002Fcbc:ElectronicMail>\n",[41,374,376],{"class":43,"line":375},24,[41,377,378],{},"      \u003C\u002Fcac:Contact>\n",[41,380,382],{"class":43,"line":381},25,[41,383,384],{},"    \u003C\u002Fcac:Party>\n",[41,386,388],{"class":43,"line":387},26,[41,389,390],{},"  \u003C\u002Fcac:AccountingSupplierParty>\n",[10,392,393,396,397,400],{},[38,394,395],{},"EndpointID"," with ",[38,398,399],{},"schemeID=\"0209\""," is the PEPPOL participant identifier — the UID digits without separators. This is used for PEPPOL routing, not for display.",[10,402,403,406,407,410],{},[38,404,405],{},"PartyTaxScheme\u002FCompanyID"," is the VAT registration number. For Swiss companies it is the UID with the ",[38,408,409],{},"MWST"," suffix. For non-Swiss sellers it is their country's VAT number.",[10,412,413,416,417,420],{},[38,414,415],{},"PartyLegalEntity\u002FCompanyID"," is the legal entity identifier — for Swiss companies, the UID with ",[38,418,419],{},"schemeID=\"CHE\"",".",[10,422,423,424,427],{},"The ",[38,425,426],{},"Contact"," block is optional but useful for the buyer to know who to call about the invoice.",[23,429,431],{"id":430},"buyer-customer-party","Buyer (customer) party",[10,433,434,435,437],{},"The buyer party structure mirrors the seller. The key difference is ",[38,436,185],{}," and the endpoint identifier for routing:",[31,439,441],{"className":33,"code":440,"language":35,"meta":36,"style":36},"  \u003Ccac:AccountingCustomerParty>\n    \u003Ccac:Party>\n      \u003Ccac:EndpointID schemeID=\"0209\">CHE3456789012\u003C\u002Fcac:EndpointID>\n      \u003Ccac:PartyName>\u003Ccbc:Name>Kunde GmbH\u003C\u002Fcbc:Name>\u003C\u002Fcac:PartyName>\n      \u003Ccac:PostalAddress>\n        \u003Ccbc:StreetName>Industriestrasse 7\u003C\u002Fcbc:StreetName>\n        \u003Ccbc:CityName>Bern\u003C\u002Fcbc:CityName>\n        \u003Ccbc:PostalZone>3001\u003C\u002Fcbc:PostalZone>\n        \u003Ccac:Country>\n          \u003Ccbc:IdentificationCode>CH\u003C\u002Fcbc:IdentificationCode>\n        \u003C\u002Fcac:Country>\n      \u003C\u002Fcac:PostalAddress>\n      \u003Ccac:PartyLegalEntity>\n        \u003Ccbc:RegistrationName>Kunde GmbH\u003C\u002Fcbc:RegistrationName>\n        \u003Ccbc:CompanyID schemeID=\"CHE\">CHE-345.678.901\u003C\u002Fcbc:CompanyID>\n      \u003C\u002Fcac:PartyLegalEntity>\n    \u003C\u002Fcac:Party>\n  \u003C\u002Fcac:AccountingCustomerParty>\n",[38,442,443,448,452,457,462,466,471,476,481,485,489,493,497,501,506,511,515,519],{"__ignoreMap":36},[41,444,445],{"class":43,"line":44},[41,446,447],{},"  \u003Ccac:AccountingCustomerParty>\n",[41,449,450],{"class":43,"line":50},[41,451,251],{},[41,453,454],{"class":43,"line":56},[41,455,456],{},"      \u003Ccac:EndpointID schemeID=\"0209\">CHE3456789012\u003C\u002Fcac:EndpointID>\n",[41,458,459],{"class":43,"line":62},[41,460,461],{},"      \u003Ccac:PartyName>\u003Ccbc:Name>Kunde GmbH\u003C\u002Fcbc:Name>\u003C\u002Fcac:PartyName>\n",[41,463,464],{"class":43,"line":68},[41,465,266],{},[41,467,468],{"class":43,"line":75},[41,469,470],{},"        \u003Ccbc:StreetName>Industriestrasse 7\u003C\u002Fcbc:StreetName>\n",[41,472,473],{"class":43,"line":81},[41,474,475],{},"        \u003Ccbc:CityName>Bern\u003C\u002Fcbc:CityName>\n",[41,477,478],{"class":43,"line":279},[41,479,480],{},"        \u003Ccbc:PostalZone>3001\u003C\u002Fcbc:PostalZone>\n",[41,482,483],{"class":43,"line":285},[41,484,288],{},[41,486,487],{"class":43,"line":291},[41,488,294],{},[41,490,491],{"class":43,"line":297},[41,492,300],{},[41,494,495],{"class":43,"line":303},[41,496,306],{},[41,498,499],{"class":43,"line":309},[41,500,336],{},[41,502,503],{"class":43,"line":315},[41,504,505],{},"        \u003Ccbc:RegistrationName>Kunde GmbH\u003C\u002Fcbc:RegistrationName>\n",[41,507,508],{"class":43,"line":321},[41,509,510],{},"        \u003Ccbc:CompanyID schemeID=\"CHE\">CHE-345.678.901\u003C\u002Fcbc:CompanyID>\n",[41,512,513],{"class":43,"line":327},[41,514,354],{},[41,516,517],{"class":43,"line":333},[41,518,384],{},[41,520,521],{"class":43,"line":339},[41,522,523],{},"  \u003C\u002Fcac:AccountingCustomerParty>\n",[10,525,526,527,529],{},"The buyer's ",[38,528,395],{}," is what the PEPPOL network uses to route the document to the correct access point. If you do not have the buyer's PEPPOL participant ID, ask your access point provider — they can often look it up in the SMP directory.",[23,531,533],{"id":532},"payment-means","Payment means",[31,535,537],{"className":33,"code":536,"language":35,"meta":36,"style":36},"  \u003Ccac:PaymentMeans>\n    \u003Ccbc:PaymentMeansCode>58\u003C\u002Fcbc:PaymentMeansCode>\n    \u003Ccbc:PaymentID>210000000003139471430009017\u003C\u002Fcbc:PaymentID>\n    \u003Ccac:PayeeFinancialAccount>\n      \u003Ccbc:ID>CH4431999123000889012\u003C\u002Fcbc:ID>\n      \u003Ccbc:Name>Muster AG\u003C\u002Fcbc:Name>\n    \u003C\u002Fcac:PayeeFinancialAccount>\n  \u003C\u002Fcac:PaymentMeans>\n",[38,538,539,544,549,554,559,564,569,574],{"__ignoreMap":36},[41,540,541],{"class":43,"line":44},[41,542,543],{},"  \u003Ccac:PaymentMeans>\n",[41,545,546],{"class":43,"line":50},[41,547,548],{},"    \u003Ccbc:PaymentMeansCode>58\u003C\u002Fcbc:PaymentMeansCode>\n",[41,550,551],{"class":43,"line":56},[41,552,553],{},"    \u003Ccbc:PaymentID>210000000003139471430009017\u003C\u002Fcbc:PaymentID>\n",[41,555,556],{"class":43,"line":62},[41,557,558],{},"    \u003Ccac:PayeeFinancialAccount>\n",[41,560,561],{"class":43,"line":68},[41,562,563],{},"      \u003Ccbc:ID>CH4431999123000889012\u003C\u002Fcbc:ID>\n",[41,565,566],{"class":43,"line":75},[41,567,568],{},"      \u003Ccbc:Name>Muster AG\u003C\u002Fcbc:Name>\n",[41,570,571],{"class":43,"line":81},[41,572,573],{},"    \u003C\u002Fcac:PayeeFinancialAccount>\n",[41,575,576],{"class":43,"line":279},[41,577,578],{},"  \u003C\u002Fcac:PaymentMeans>\n",[10,580,581,584],{},[38,582,583],{},"PaymentMeansCode 58"," means IBAN-based credit transfer. This is used for both SEPA and Swiss domestic transfers in PEPPOL.",[10,586,587,590,591,594],{},[38,588,589],{},"PaymentID"," is the payment reference — the 27-digit QR reference for Swiss invoices using QR-bills, or an ISO creditor reference (",[38,592,593],{},"RF18539007547034",") if using SCOR.",[10,596,597,598,601],{},"The account ID in ",[38,599,600],{},"PayeeFinancialAccount"," is the IBAN (no spaces). For Swiss QR-bill payments, this should be the QR-IBAN. For payments without a QR reference, use the standard IBAN.",[23,603,605],{"id":604},"tax-total","Tax total",[31,607,609],{"className":33,"code":608,"language":35,"meta":36,"style":36},"  \u003Ccac:TaxTotal>\n    \u003Ccbc:TaxAmount currencyID=\"CHF\">81.00\u003C\u002Fcbc:TaxAmount>\n    \u003Ccac:TaxSubtotal>\n      \u003Ccbc:TaxableAmount currencyID=\"CHF\">1000.00\u003C\u002Fcbc:TaxableAmount>\n      \u003Ccbc:TaxAmount currencyID=\"CHF\">81.00\u003C\u002Fcbc:TaxAmount>\n      \u003Ccac:TaxCategory>\n        \u003Ccbc:ID>S\u003C\u002Fcbc:ID>\n        \u003Ccbc:Percent>8.1\u003C\u002Fcbc:Percent>\n        \u003Ccac:TaxScheme>\u003Ccbc:ID>VAT\u003C\u002Fcbc:ID>\u003C\u002Fcac:TaxScheme>\n      \u003C\u002Fcac:TaxCategory>\n    \u003C\u002Fcac:TaxSubtotal>\n  \u003C\u002Fcac:TaxTotal>\n",[38,610,611,616,621,626,631,636,641,646,651,655,660,665],{"__ignoreMap":36},[41,612,613],{"class":43,"line":44},[41,614,615],{},"  \u003Ccac:TaxTotal>\n",[41,617,618],{"class":43,"line":50},[41,619,620],{},"    \u003Ccbc:TaxAmount currencyID=\"CHF\">81.00\u003C\u002Fcbc:TaxAmount>\n",[41,622,623],{"class":43,"line":56},[41,624,625],{},"    \u003Ccac:TaxSubtotal>\n",[41,627,628],{"class":43,"line":62},[41,629,630],{},"      \u003Ccbc:TaxableAmount currencyID=\"CHF\">1000.00\u003C\u002Fcbc:TaxableAmount>\n",[41,632,633],{"class":43,"line":68},[41,634,635],{},"      \u003Ccbc:TaxAmount currencyID=\"CHF\">81.00\u003C\u002Fcbc:TaxAmount>\n",[41,637,638],{"class":43,"line":75},[41,639,640],{},"      \u003Ccac:TaxCategory>\n",[41,642,643],{"class":43,"line":81},[41,644,645],{},"        \u003Ccbc:ID>S\u003C\u002Fcbc:ID>\n",[41,647,648],{"class":43,"line":279},[41,649,650],{},"        \u003Ccbc:Percent>8.1\u003C\u002Fcbc:Percent>\n",[41,652,653],{"class":43,"line":285},[41,654,324],{},[41,656,657],{"class":43,"line":291},[41,658,659],{},"      \u003C\u002Fcac:TaxCategory>\n",[41,661,662],{"class":43,"line":297},[41,663,664],{},"    \u003C\u002Fcac:TaxSubtotal>\n",[41,666,667],{"class":43,"line":303},[41,668,669],{},"  \u003C\u002Fcac:TaxTotal>\n",[10,671,672,673,676,677,679,680,683,684,687],{},"There must be exactly one ",[38,674,675],{},"TaxSubtotal"," per distinct tax rate. If your invoice has lines at 8.1% and lines at 2.6%, you need two ",[38,678,675],{}," blocks — one for each rate — and the ",[38,681,682],{},"TaxAmount"," in the parent ",[38,685,686],{},"TaxTotal"," must equal the sum of both.",[10,689,690,691,694,695,698,699,702,703,706,707,710,711,714,715,718,719,723],{},"Tax category ",[38,692,693],{},"S"," means standard-rated VAT. The rate value (",[38,696,697],{},"8.1",", ",[38,700,701],{},"2.6",", or ",[38,704,705],{},"3.8",") is what distinguishes Swiss rates. For zero-rated lines, use category ",[38,708,709],{},"Z",". For exempt lines, use ",[38,712,713],{},"E",". For reverse charge, use ",[38,716,717],{},"AE",". The ",[17,720,722],{"href":721},"\u002Fblog\u002Ftax-category-codes-in-en-16931-explained","tax category codes post"," covers all categories.",[23,725,727],{"id":726},"document-totals","Document totals",[31,729,731],{"className":33,"code":730,"language":35,"meta":36,"style":36},"  \u003Ccac:LegalMonetaryTotal>\n    \u003Ccbc:LineExtensionAmount currencyID=\"CHF\">1000.00\u003C\u002Fcbc:LineExtensionAmount>\n    \u003Ccbc:TaxExclusiveAmount currencyID=\"CHF\">1000.00\u003C\u002Fcbc:TaxExclusiveAmount>\n    \u003Ccbc:TaxInclusiveAmount currencyID=\"CHF\">1081.00\u003C\u002Fcbc:TaxInclusiveAmount>\n    \u003Ccbc:PayableAmount currencyID=\"CHF\">1081.00\u003C\u002Fcbc:PayableAmount>\n  \u003C\u002Fcac:LegalMonetaryTotal>\n",[38,732,733,738,743,748,753,758],{"__ignoreMap":36},[41,734,735],{"class":43,"line":44},[41,736,737],{},"  \u003Ccac:LegalMonetaryTotal>\n",[41,739,740],{"class":43,"line":50},[41,741,742],{},"    \u003Ccbc:LineExtensionAmount currencyID=\"CHF\">1000.00\u003C\u002Fcbc:LineExtensionAmount>\n",[41,744,745],{"class":43,"line":56},[41,746,747],{},"    \u003Ccbc:TaxExclusiveAmount currencyID=\"CHF\">1000.00\u003C\u002Fcbc:TaxExclusiveAmount>\n",[41,749,750],{"class":43,"line":62},[41,751,752],{},"    \u003Ccbc:TaxInclusiveAmount currencyID=\"CHF\">1081.00\u003C\u002Fcbc:TaxInclusiveAmount>\n",[41,754,755],{"class":43,"line":68},[41,756,757],{},"    \u003Ccbc:PayableAmount currencyID=\"CHF\">1081.00\u003C\u002Fcbc:PayableAmount>\n",[41,759,760],{"class":43,"line":75},[41,761,762],{},"  \u003C\u002Fcac:LegalMonetaryTotal>\n",[764,765,766,777,783,795],"ul",{},[767,768,769,772,773,776],"li",{},[38,770,771],{},"LineExtensionAmount",": sum of all ",[38,774,775],{},"InvoiceLine\u002FLineExtensionAmount"," values",[767,778,779,782],{},[38,780,781],{},"TaxExclusiveAmount",": net total after any header-level allowances or charges, before VAT",[767,784,785,788,789,791,792],{},[38,786,787],{},"TaxInclusiveAmount",": ",[38,790,781],{}," + ",[38,793,794],{},"TaxTotal\u002FTaxAmount",[767,796,797,800,801,803],{},[38,798,799],{},"PayableAmount",": the amount the buyer owes. Equals ",[38,802,787],{}," unless a prepayment has been applied.",[10,805,806,807,810],{},"The Schematron checks consistency between all these values. Any rounding inconsistency here will produce a ",[38,808,809],{},"BR-CO-1x"," error.",[23,812,814],{"id":813},"invoice-lines","Invoice lines",[31,816,818],{"className":33,"code":817,"language":35,"meta":36,"style":36},"  \u003Ccac:InvoiceLine>\n    \u003Ccbc:ID>1\u003C\u002Fcbc:ID>\n    \u003Ccbc:InvoicedQuantity unitCode=\"HUR\">20\u003C\u002Fcbc:InvoicedQuantity>\n    \u003Ccbc:LineExtensionAmount currencyID=\"CHF\">1000.00\u003C\u002Fcbc:LineExtensionAmount>\n    \u003Ccac:Item>\n      \u003Ccbc:Description>Web development — March 2024\u003C\u002Fcbc:Description>\n      \u003Ccbc:Name>Development services\u003C\u002Fcbc:Name>\n      \u003Ccac:ClassifiedTaxCategory>\n        \u003Ccbc:ID>S\u003C\u002Fcbc:ID>\n        \u003Ccbc:Percent>8.1\u003C\u002Fcbc:Percent>\n        \u003Ccac:TaxScheme>\u003Ccbc:ID>VAT\u003C\u002Fcbc:ID>\u003C\u002Fcac:TaxScheme>\n      \u003C\u002Fcac:ClassifiedTaxCategory>\n    \u003C\u002Fcac:Item>\n    \u003Ccac:Price>\n      \u003Ccbc:PriceAmount currencyID=\"CHF\">50.00\u003C\u002Fcbc:PriceAmount>\n    \u003C\u002Fcac:Price>\n  \u003C\u002Fcac:InvoiceLine>\n",[38,819,820,825,830,835,839,844,849,854,859,863,867,871,876,881,886,891,896],{"__ignoreMap":36},[41,821,822],{"class":43,"line":44},[41,823,824],{},"  \u003Ccac:InvoiceLine>\n",[41,826,827],{"class":43,"line":50},[41,828,829],{},"    \u003Ccbc:ID>1\u003C\u002Fcbc:ID>\n",[41,831,832],{"class":43,"line":56},[41,833,834],{},"    \u003Ccbc:InvoicedQuantity unitCode=\"HUR\">20\u003C\u002Fcbc:InvoicedQuantity>\n",[41,836,837],{"class":43,"line":62},[41,838,742],{},[41,840,841],{"class":43,"line":68},[41,842,843],{},"    \u003Ccac:Item>\n",[41,845,846],{"class":43,"line":75},[41,847,848],{},"      \u003Ccbc:Description>Web development — March 2024\u003C\u002Fcbc:Description>\n",[41,850,851],{"class":43,"line":81},[41,852,853],{},"      \u003Ccbc:Name>Development services\u003C\u002Fcbc:Name>\n",[41,855,856],{"class":43,"line":279},[41,857,858],{},"      \u003Ccac:ClassifiedTaxCategory>\n",[41,860,861],{"class":43,"line":285},[41,862,645],{},[41,864,865],{"class":43,"line":291},[41,866,650],{},[41,868,869],{"class":43,"line":297},[41,870,324],{},[41,872,873],{"class":43,"line":303},[41,874,875],{},"      \u003C\u002Fcac:ClassifiedTaxCategory>\n",[41,877,878],{"class":43,"line":309},[41,879,880],{},"    \u003C\u002Fcac:Item>\n",[41,882,883],{"class":43,"line":315},[41,884,885],{},"    \u003Ccac:Price>\n",[41,887,888],{"class":43,"line":321},[41,889,890],{},"      \u003Ccbc:PriceAmount currencyID=\"CHF\">50.00\u003C\u002Fcbc:PriceAmount>\n",[41,892,893],{"class":43,"line":327},[41,894,895],{},"    \u003C\u002Fcac:Price>\n",[41,897,898],{"class":43,"line":333},[41,899,900],{},"  \u003C\u002Fcac:InvoiceLine>\n",[10,902,903,905,906,698,909,698,912,915],{},[38,904,138],{}," is the line number — must be unique within the invoice, typically ",[38,907,908],{},"1",[38,910,911],{},"2",[38,913,914],{},"3"," and so on.",[10,917,918,921,922,925,926,929,930,933,934,937,938,941,942,945],{},[38,919,920],{},"InvoicedQuantity"," requires a ",[38,923,924],{},"unitCode"," from UN\u002FECE Recommendation 20. Common codes: ",[38,927,928],{},"HUR"," (hours), ",[38,931,932],{},"DAY"," (days), ",[38,935,936],{},"C62"," (pieces\u002Funits), ",[38,939,940],{},"KGM"," (kilograms), ",[38,943,944],{},"MTR"," (metres).",[10,947,948,950],{},[38,949,771],{}," = quantity × unit price. This is the net line amount before VAT.",[10,952,953,956,957,959],{},[38,954,955],{},"ClassifiedTaxCategory"," at the line level tells the receiving system what VAT applies to this line. It must be consistent with the ",[38,958,675],{}," in the header — the same category code and percentage must appear in both places.",[10,961,962,965],{},[38,963,964],{},"Price\u002FPriceAmount"," is the unit price excluding VAT.",[23,967,969],{"id":968},"closing-the-document","Closing the document",[31,971,973],{"className":33,"code":972,"language":35,"meta":36,"style":36},"\u003C\u002Fubl:Invoice>\n",[38,974,975],{"__ignoreMap":36},[41,976,977],{"class":43,"line":44},[41,978,972],{},[10,980,981,982,985],{},"There is no footer element. The document ends after the last ",[38,983,984],{},"InvoiceLine"," block and the closing root element tag.",[10,987,988,989,993,994,998],{},"For a guide on mapping your ERP fields to these XML elements, see ",[17,990,992],{"href":991},"\u002Fblog\u002Fhow-to-map-your-erp-data-to-peppol-bis-billing-30","how to map your ERP data to PEPPOL BIS Billing 3.0",". To validate the resulting XML against the official rules, the ",[17,995,997],{"href":996},"\u002Fblog\u002Fhow-schematron-validation-works-for-e-invoices","Schematron validation post"," explains how the validation pipeline works.",[1000,1001,1002],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":36,"searchDepth":50,"depth":50,"links":1004},[1005,1006,1007,1008,1009,1010,1011,1012,1013,1014],{"id":25,"depth":50,"text":26},{"id":97,"depth":50,"text":98},{"id":189,"depth":50,"text":190},{"id":235,"depth":50,"text":236},{"id":430,"depth":50,"text":431},{"id":532,"depth":50,"text":533},{"id":604,"depth":50,"text":605},{"id":726,"depth":50,"text":727},{"id":813,"depth":50,"text":814},{"id":968,"depth":50,"text":969},"A field-by-field explanation of the mandatory and optional elements in a PEPPOL BIS Billing 3.0 invoice.","md","2027-01-10",{},"\u002Fblog\u002Fpeppol-bis-billing-30-a-line-by-line-walkthrough",{"title":5,"description":1015},"blog\u002F0067.peppol-bis-billing-30-a-line-by-line-walkthrough","LxA2VYRJFPlZnxjStHtFcLfJyBFDC6i-LAye2RUo-rE",1777105007851]