1. How to read field obligations
Cardinality 1..1 does not automatically mean that a field exists in every invoice. It often means that the field is mandatory inside a group that may itself be optional. This document therefore uses the following modes:
| Mode | Meaning | Example |
|---|---|---|
| Always | The field is part of the standard invoice core. | BT-1 invoice number |
| Line | The field repeats and is mandatory for every InvoiceLine. | BT-126 line identifier |
| Condition | The field is mandatory only in a specific tax or business scenario. | BT-120 for an exemption |
| System | The generator or integration should supply the value, not the user. | BT-23 ProfileID |
| Alternative | At least one of the stated options must be present. | BT-10 or BT-13 |
2. Minimum core of a standard issued invoice
The following tables describe a common type 380 invoice. A credit note, corrective invoice, advance payment, reverse charge, exemption or intra-EU supply activates additional conditions.
2.1 Header and Peppol routing
Technical identifiers should be a fixed generator configuration.
| Mode | BT / field | Field | XML path and rule |
|---|---|---|---|
| System | BT-24 |
Specification identifier | /Invoice/cbc:CustomizationIDUse the profile required by the target SK/Peppol rule pack; the generator already uses the Peppol BIS Billing 3.0 value. |
| System | BT-23 |
Process identifier | /Invoice/cbc:ProfileIDPeppol requires a business process. Common value: urn:fdc:peppol.eu:2017:poacc:billing:01:1.0. |
| Always | BT-1 |
Invoice number | /Invoice/cbc:IDUnique sequential invoice number. |
| Always | BT-2 |
Issue date | /Invoice/cbc:IssueDateFormat YYYY-MM-DD. |
| Always | BT-3 |
Invoice type code | /Invoice/cbc:InvoiceTypeCodeUse 380 for a standard invoice; the Slovak profile also supports corrective types according to its rules. |
| Always | BT-5 |
Invoice currency | /Invoice/cbc:DocumentCurrencyCodeISO 4217, typically EUR. |
| Alternative | BT-10 / BT-13 |
Buyer reference or purchase order | /Invoice/cbc:BuyerReference or /Invoice/cac:OrderReference/cbc:IDPeppol rule R003 requires at least one of these references. |
| Condition | BT-9 / BT-20 |
Due date or payment terms | /Invoice/cbc:DueDate or /Invoice/cac:PaymentTerms/cbc:NoteIf payable amount BT-115 is greater than zero, at least one option must be present. |
| Condition | BT-7 |
VAT point date | /Invoice/cbc:TaxPointDateState it when known and different from the issue date. |
2.2 Seller
Do not mix Slovak identifiers: IČO, IČ DPH and DIČ/EndpointID belong to different XML fields.
| Mode | BT / field | Field | XML path and rule |
|---|---|---|---|
| Always | BT-27 |
Seller name | /Invoice/cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cbc:RegistrationNameFull legal name. |
| Always | BT-34 |
Seller electronic address | /Invoice/cac:AccountingSupplierParty/cac:Party/cbc:EndpointIDFor Slovak scheme 0245 use the ten-digit DIČ without the SK prefix. |
| System | BT-34-1 |
Electronic address scheme | .../cbc:EndpointID/@schemeIDFor a Slovak DIČ use schemeID="0245". |
| Always | BT-35 |
Street and number | .../cac:PostalAddress/cbc:StreetNameMandatory element of a Slovak invoice. |
| Always | BT-37 |
City | .../cac:PostalAddress/cbc:CityNameMandatory element of a Slovak invoice. |
| Always | BT-38 |
Postcode | .../cac:PostalAddress/cbc:PostalZoneMandatory element of a Slovak invoice. |
| Always | BT-40 |
Country code | .../cac:PostalAddress/cac:Country/cbc:IdentificationCodeISO 3166-1 alpha-2, for example SK. |
| Condition | BT-30 |
Seller company number (IČO) | .../cac:PartyLegalEntity/cbc:CompanyIDState it if assigned; use schemeID="0158" for IČO. |
| Condition | BT-31 |
Seller VAT identifier (IČ DPH) | .../cac:PartyTaxScheme/cbc:CompanyIDState it for a VAT-registered seller or when the VAT category requires it. |
| Condition | BT-33 |
Legal form and register | .../cac:PartyLegalEntity/cbc:CompanyLegalFormAccording to Section 3a of the Slovak Commercial Code where applicable. |
2.3 Buyer
The same separation of IČO, IČ DPH and Peppol EndpointID applies to a Slovak buyer.
| Mode | BT / field | Field | XML path and rule |
|---|---|---|---|
| Always | BT-44 |
Buyer name | /Invoice/cac:AccountingCustomerParty/cac:Party/cac:PartyLegalEntity/cbc:RegistrationNameFull legal name or personal name. |
| Always | BT-49 |
Buyer electronic address | /Invoice/cac:AccountingCustomerParty/cac:Party/cbc:EndpointIDPeppol routing address; for scheme 0245 use the ten-digit DIČ without SK. |
| System | BT-49-1 |
Electronic address scheme | .../cbc:EndpointID/@schemeIDFor a Slovak DIČ use schemeID="0245". |
| Always | BT-50 |
Street and number | .../cac:PostalAddress/cbc:StreetNameMandatory element of a Slovak invoice. |
| Always | BT-52 |
City | .../cac:PostalAddress/cbc:CityNameMandatory element of a Slovak invoice. |
| Always | BT-53 |
Postcode | .../cac:PostalAddress/cbc:PostalZoneMandatory element of a Slovak invoice. |
| Always | BT-55 |
Country code | .../cac:PostalAddress/cac:Country/cbc:IdentificationCodeISO 3166-1 alpha-2. |
| Condition | BT-47 |
Buyer company number (IČO) | .../cac:PartyLegalEntity/cbc:CompanyIDState it if assigned; schemeID="0158". |
| Condition | BT-48 |
Buyer VAT identifier (IČ DPH) | .../cac:PartyTaxScheme/cbc:CompanyIDState it if assigned or required by the VAT treatment. |
2.4 Payment
For an ordinary bank transfer, keep all three principal fields in the ERP data model.
| Mode | BT / field | Field | XML path and rule |
|---|---|---|---|
| Condition | BT-81 |
Payment means code | /Invoice/cac:PaymentMeans/cbc:PaymentMeansCodeRequired when payment instructions are supplied. Code 30 is typically used for a bank transfer. |
| Condition | BT-83 |
Payment reference | /Invoice/cac:PaymentMeans/cbc:PaymentIDVariable symbol or another payment reference. |
| Condition | BT-84 |
IBAN / account identifier | /Invoice/cac:PaymentMeans/cac:PayeeFinancialAccount/cbc:IDMandatory for a transfer when the bank account group is used. |
| Condition | BT-86 |
BIC | /Invoice/cac:PaymentMeans/cac:PayeeFinancialAccount/cac:FinancialInstitutionBranch/cbc:IDOptional depending on the payment scenario and bank. |
2.5 Every invoice line
These fields repeat for every cac:InvoiceLine element.
| Mode | BT / field | Field | XML path and rule |
|---|---|---|---|
| Line | BT-126 |
Line identifier | /Invoice/cac:InvoiceLine/cbc:IDUnique within the invoice. |
| Line | BT-129 |
Invoiced quantity | .../cbc:InvoicedQuantityNumeric value; the Slovak FA allows at most four decimal places. |
| Line | BT-130 |
Unit of measure code | .../cbc:InvoicedQuantity/@unitCodeUN/ECE Rec20/21, for example C62. |
| Line | BT-131 |
Invoice line net amount | .../cbc:LineExtensionAmountExcluding VAT, after line allowances and charges. |
| Line | BT-146 |
Item net price | .../cac:Price/cbc:PriceAmountPrice per unit excluding VAT after discount. |
| Line | BT-153 |
Item name | .../cac:Item/cbc:NameType of goods or services. |
| Line | BT-151 |
Item VAT category | .../cac:Item/cac:ClassifiedTaxCategory/cbc:IDFor example S, Z, E, AE, IC, G or O depending on the scenario. |
| Condition | BT-152 |
Item VAT rate | .../cac:Item/cac:ClassifiedTaxCategory/cbc:PercentGreater than zero for a standard rate, zero for certain 0% treatments and omitted for O. |
| System | atribút / attribute |
Currency of amount fields | .../cbc:*Amount/@currencyIDMust match BT-5, typically EUR. |
2.6 Totals and VAT breakdown
Totals must reconcile mathematically with lines, allowances, charges, paid amounts and rounding.
| Mode | BT / field | Field | XML path and rule |
|---|---|---|---|
| Always | BT-106 |
Sum of invoice line net amounts | /Invoice/cac:LegalMonetaryTotal/cbc:LineExtensionAmountSum of all BT-131 values. |
| Condition | BT-107 |
Sum of document-level allowances | .../cbc:AllowanceTotalAmountState it when document-level allowances exist. |
| Condition | BT-108 |
Sum of document-level charges | .../cbc:ChargeTotalAmountState it when document-level charges exist. |
| Always | BT-109 |
Invoice total excluding VAT | .../cbc:TaxExclusiveAmountBT-106 minus BT-107 plus BT-108. |
| Always | BT-110 |
Invoice total VAT amount | /Invoice/cac:TaxTotal/cbc:TaxAmountSum of VAT amounts from all BT-117 breakdowns. |
| Always | BT-112 |
Invoice total including VAT | .../cbc:TaxInclusiveAmountBT-109 plus BT-110. |
| Condition | BT-113 |
Paid amount | .../cbc:PrepaidAmountWhen an advance or another paid amount is deducted. |
| Condition | BT-114 |
Rounding amount | .../cbc:PayableRoundingAmountWhen rounding of the payable amount is used. |
| Always | BT-115 |
Amount due for payment | .../cbc:PayableAmountBT-112 minus BT-113 plus BT-114. |
| Always | BT-116 |
VAT category taxable amount | /Invoice/cac:TaxTotal/cac:TaxSubtotal/cbc:TaxableAmountOne breakdown for every category and rate combination. |
| Always | BT-117 |
VAT category tax amount | .../cac:TaxSubtotal/cbc:TaxAmountUsually zero for an exemption or reverse charge. |
| Always | BT-118 |
VAT category code | .../cac:TaxSubtotal/cac:TaxCategory/cbc:IDMust match the categories used on invoice lines. |
| Condition | BT-119 |
VAT category rate | .../cac:TaxSubtotal/cac:TaxCategory/cbc:PercentRequired except when the invoice is outside the scope of VAT. |
| Condition | BT-120 / BT-121 |
Exemption reason or code | .../cac:TaxCategory/cbc:TaxExemptionReason or TaxExemptionReasonCodeMandatory for exemptions, reverse charge and other 0% treatments as required by the rules. |
3. Fields that become mandatory depending on the scenario
3.1 Business and tax triggers
These are the most frequent business and tax scenarios that change the minimum XML scope.
| Mode | BT / field | Field | XML path and rule |
|---|---|---|---|
| Condition | BT-6 + BT-111 |
VAT accounting currency | /Invoice/cbc:TaxCurrencyCode + second cac:TaxTotal/cbc:TaxAmountWhen the VAT accounting currency differs from the invoice currency. |
| Condition | BT-25 / BT-26 |
Reference to the preceding invoice | /Invoice/cac:BillingReference/cac:InvoiceDocumentReference/...For a corrective document, credit note or debit note. |
| Condition | BT-59 |
Payee name | /Invoice/cac:PayeeParty/cac:PartyName/cbc:NameWhen the payee differs from the seller. |
| Condition | BT-62 – BT-69 |
Seller tax representative | /Invoice/cac:TaxRepresentativeParty/...When a foreign seller is represented by a tax representative; name, VAT ID and country are mandatory, with the Slovak address required by the source. |
| Condition | BT-72 / BG-14 |
Delivery date or invoicing period | /Invoice/cac:Delivery/cbc:ActualDeliveryDate or /Invoice/cac:InvoicePeriodEspecially for intra-EU supplies, metered services or period invoicing. |
| Condition | BT-75 – BT-80 |
Deliver-to address | /Invoice/cac:Delivery/cac:DeliveryLocation/cac:Address/...When a delivery location is stated; the country code is mandatory within the group. |
| Condition | BT-92 – BT-98 |
Document-level allowance | /Invoice/cac:AllowanceCharge[cbc:ChargeIndicator='false']/...If an allowance exists: amount, VAT category and reason or reason code. |
| Condition | BT-99 – BT-105 |
Document-level charge | /Invoice/cac:AllowanceCharge[cbc:ChargeIndicator='true']/...If a charge exists: amount, VAT category and reason or reason code. |
| Condition | BT-136 – BT-140 |
Invoice line allowance | /Invoice/cac:InvoiceLine/cac:AllowanceCharge[cbc:ChargeIndicator='false']/...When the discount was not applied directly in the unit price. |
| Condition | BT-141 – BT-145 |
Invoice line charge | /Invoice/cac:InvoiceLine/cac:AllowanceCharge[cbc:ChargeIndicator='true']/...When a charge is applied to a specific invoice line. |
| Condition | BT-122 – BT-125 |
Supporting document / attachment | /Invoice/cac:AdditionalDocumentReference/...When a reference or binary attachment is added; the reference is mandatory and an embedded file needs a MIME type and filename. |
| Condition | BT-157 / BT-158 |
Item identifier scheme | .../cac:Item/.../@schemeIDMandatory only when a standard or classification identifier is provided. |
| Condition | BT-160 / BT-161 |
Item attribute | .../cac:Item/cac:AdditionalItemProperty/...If an item property is used, it must have both a name and a value. |
3.2 Most common VAT treatments
| Scenario | Key codes | Additional checks |
|---|---|---|
| Standard rate | BT-151/118 = S | Seller BT-31; BT-152 and BT-119 > 0; VAT is calculated from the taxable amount. |
| Reverse charge | AE | Seller and buyer identifiers, zero rate, zero VAT and BT-120 or BT-121 with a reverse-charge reason. |
| VAT exemption | E | Zero VAT and a mandatory exemption reason or code. |
| Intra-EU supply | IC | VAT IDs of both parties, delivery date or period, destination country and exemption reason. |
| Export | G | Zero VAT and the relevant reason or code; check delivery data. |
| Outside scope of VAT / non-taxable person | O | Exactly one O breakdown; omit VAT IDs and rates where rules prohibit them; the reason must be consistent. |
4. Slovak identifiers: what belongs where
Slovak identifiers have different meanings and must not be mapped into one universal field.
| Identifier | Seller | Buyer | UBL path / scheme |
|---|---|---|---|
| IČO — Slovak company number | BT-30 | BT-47 | cac:PartyLegalEntity/cbc:CompanyID, schemeID="0158" |
| IČ DPH — Slovak VAT ID | BT-31 | BT-48 | cac:PartyTaxScheme/cbc:CompanyID, value SK + 10 digits |
| DIČ as the Peppol address | BT-34 | BT-49 | cbc:EndpointID, schemeID="0245", 10 digits without the SK prefix |
5. Shortened XML skeleton of a standard invoice
The skeleton is deliberately shortened. It shows where the principal data belongs; a production document must pass XSD, EN 16931, Peppol and SK CIUS rules.
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-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>{{invoice_number}}</cbc:ID>
<cbc:IssueDate>{{YYYY-MM-DD}}</cbc:IssueDate>
<cbc:DueDate>{{YYYY-MM-DD}}</cbc:DueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>{{buyer_reference}}</cbc:BuyerReference>
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="0245">{{seller_DIC_without_SK}}</cbc:EndpointID>
<cac:PostalAddress>
<cbc:StreetName>{{street}}</cbc:StreetName>
<cbc:CityName>{{city}}</cbc:CityName>
<cbc:PostalZone>{{postal_code}}</cbc:PostalZone>
<cac:Country><cbc:IdentificationCode>SK</cbc:IdentificationCode></cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>{{seller_IC_DPH}}</cbc:CompanyID>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>{{seller_name}}</cbc:RegistrationName>
<cbc:CompanyID schemeID="0158">{{seller_ICO}}</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cbc:EndpointID schemeID="0245">{{buyer_DIC_without_SK}}</cbc:EndpointID>
<!-- address, VAT ID and PartyLegalEntity follow the same pattern as for the supplier -->
</cac:Party>
</cac:AccountingCustomerParty>
<cac:PaymentMeans>
<cbc:PaymentMeansCode>30</cbc:PaymentMeansCode>
<cbc:PaymentID>{{payment_reference}}</cbc:PaymentID>
<cac:PayeeFinancialAccount><cbc:ID>{{IBAN}}</cbc:ID></cac:PayeeFinancialAccount>
</cac:PaymentMeans>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">{{VAT_total}}</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">{{tax_base}}</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">{{VAT_amount}}</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>23</cbc:Percent>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">{{BT-106}}</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">{{BT-109}}</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">{{BT-112}}</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="EUR">{{BT-115}}</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">{{quantity}}</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">{{line_net}}</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>{{item_name}}</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID><cbc:Percent>23</cbc:Percent>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price><cbc:PriceAmount currencyID="EUR">{{unit_net_price}}</cbc:PriceAmount></cac:Price>
</cac:InvoiceLine>
</Invoice>
6. Fields marked by the Financial Administration as conditionally required
The following list comes from the v1.10 column “Mandatory invoice requirement under Slovak legislation”. The trigger is summarised for implementation; detailed validator rules always take precedence.
| BT | Field | Practical trigger | Source note |
|---|---|---|---|
| BT-6 | VAT accounting currency code | When the VAT accounting currency differs from the invoice currency. | According to the rule and business-group context. |
| BT-7 | VAT point date | When known and different from the issue date. | § 74 ods. 1 písm. d) |
| BT-30 | Seller legal registration identifier | If the seller has been assigned an IČO. | Required if the entity was assigned an IČO. |
| BT-30-1 | Scheme identifier | When BT-30 is present; identifies its scheme. | Required if the entity was assigned an IČO. |
| BT-31 | Seller VAT identifier | If a VAT ID was assigned or the VAT treatment requires it. | Required if a VAT identifier was assigned. |
| BT-33 | Additional seller legal information — legal form | When legal-form or register information applies to the business. | Section 3a of the Slovak Commercial Code: a business states the legally required registration information on business documents. |
| BT-47 | Buyer legal registration identifier | If the buyer has been assigned an IČO. | Required if the entity was assigned an IČO. |
| BT-47-1 | Scheme identifier | When BT-47 is present; identifies its scheme. | Required if the entity was assigned an IČO. |
| BT-48 | Buyer VAT identifier | If a VAT ID was assigned or the VAT treatment requires it. | Required if a VAT identifier was assigned. |
| BT-64 | Tax representative address line 1 | When a tax representative participates in the transaction. | Tax representative address under Slovak legislative requirements. |
| BT-66 | Tax representative city | When a tax representative participates in the transaction. | Tax representative address under Slovak legislative requirements. |
| BT-67 | Tax representative postcode | When a tax representative participates in the transaction. | Tax representative address under Slovak legislative requirements. |
| BT-119 | VAT category rate | When the VAT category requires a rate, except where the invoice is outside the scope of VAT. | § 74 ods. 1 písm. h) |
| BT-120 | VAT exemption reason text | For an exemption, reverse charge or another treatment requiring a textual reason. | § 74 ods. 1 písm. h) |
| BT-148 | Item gross price | When a gross price is used and the discounted net price is derived from it. | If the net price is not provided directly, the gross price and discount are required. |
7. Delivery checklist for the client or ERP vendor
| Check | Acceptance criterion | Owner |
|---|---|---|
| Identifiers | IČO, IČ DPH and DIČ/EndpointID are three separate fields mapped to the correct BTs. | ERP master data |
| Header | The generator supplies BT-23, BT-24, BT-1, BT-2, BT-3, BT-5 and BT-10 or BT-13. | ERP / integration |
| Parties | Supplier and customer both have an EndpointID with schemeID and a complete postal address. | Master data |
| Lines | Every line contains BT-126, 129, 130, 131, 146, 151, 153 and the correct rate for the treatment. | Invoicing |
| VAT and totals | BT-106/109/110/112/115 and every VAT breakdown reconcile mathematically with the lines. | ERP / accounting |
| Conditions | Reverse charge, exemptions, intra-EU supplies, allowances, charges and attachments activate the relevant fields. | Tax / integration |
| Validation | XML passes XSD, EN 16931, Peppol BIS and SK CIUS; production sending is fail-closed. | Integration |
8. Sources and document boundaries
Verify that your XML actually meets these rules
The validator checks UBL XSD, EN 16931, Peppol BIS and Slovak SK CIUS rules and explains errors in plain language.