/ubl:Invoice

Invoice

Poland | VRBL-Invoice-PL-B2B-3p0
Download sample files
Context ID INV0001
Usage -

Description

VRBL is a general datamodel for an invoice based on UBL2.4 and Peppol PINT, that can be used as base for specializations that are used in various jurisdictions.

The Polish KSeF System uses a specific inhouse invoice format based on XML, which is called e-invoice FA. The currently supported version is FA(3).

Child elements
Usage Element Description Cardinality
M cec:UBLExtensions Extensions Group 0..1
M cbc:CustomizationID Specification Identifier

Identifies a user-defined customization of UBL for a specific use.

0..1
M cbc:ProfileID Business Process Type

Identifies a user-defined profile of the customization of UBL being used.

0..1
M cbc:ID Invoice Number

An identifier for this document, assigned by the sender.

1..1
O cbc:UUID Unique Unit ID

A universally unique identifier for an instance of this document.

0..1
M cbc:IssueDate Invoice Issue Date

The date, assigned by the sender, on which this document was issued.

1..1
O cbc:DueDate Payment Due Date

The date on which Invoice is due.

0..1
M cbc:InvoiceTypeCode Invoice Type Code

A code signifying the type of the Invoice.

0..1
O cbc:Note Invoice Note

Free-form text pertinent to this document, conveying information that is not contained explicitly in other structures.

0..n
M cbc:DocumentCurrencyCode Document Currency Code

A code signifying the default currency for this document.

0..1
O cbc:TaxCurrencyCode Tax Accounting Currency

A code signifying the currency used for tax amounts in the Invoice.

0..1
O cac:InvoicePeriod Invoicing Period

A period to which the Invoice applies.

0..n
O cac:OrderReference Order Reference

A reference to the Order with which this Invoice is associated.

0..1
O* cac:BillingReference Preceding Invoice Reference

A reference to a billing document associated with this document.

0..n
O cac:DespatchDocumentReference Despatch Advice Reference

A reference to a Despatch Advice associated with this document.

0..n
O cac:ContractDocumentReference Contract Reference

A reference to a contract associated with this document.

0..n
M cac:AdditionalDocumentReference Additional Document Reference Group

A reference to an additional document associated with this document.

0..n
O cac:AdditionalDocumentReference[not(cac:Attachment)] Additional Document Reference

A reference to an additional document associated with this document.

0..n
M cac:AccountingSupplierParty Seller

The accounting supplier party.

1..1
M cac:AccountingCustomerParty Buyer

The accounting customer party.

0..1
O cac:Delivery Delivery Information

A delivery associated with this document.

0..n
O cac:DeliveryTerms Delivery Terms Group

A set of delivery terms associated with this document.

0..1
O cac:PaymentMeans Payment Instructions

Expected means of payment.

0..n
O* cac:PaymentTerms Payment Terms

A set of payment terms associated with this document.

0..n
O cac:PrepaidPayment Paid Amounts

A prepaid payment.

0..n
O cac:AllowanceCharge Allowance Charge Group

A discount or charge that applies to a price component.

0..n
O* cac:AllowanceCharge[string(cbc:ChargeIndicator) = 'false'] Document Level Allowances

A discount or charge that applies to a price component.

0..n
O* cac:AllowanceCharge[string(cbc:ChargeIndicator) = 'true'] Document Level Charges

A discount or charge that applies to a price component.

0..n
O cac:TaxExchangeRate Tax Exchange Rate

The exchange rate between the document currency and the tax currency.

0..1
M cac:TaxTotal[cbc:TaxAmount/@currencyID = ../cbc:DocumentCurrencyCode] Tax Total

The total amount of a specific type of tax.

0..n
O cac:TaxTotal[cbc:TaxAmount/@currencyID = ../cbc:TaxCurrencyCode] Tax Total in Tax Accounting Currency

The total amount of a specific type of tax.

0..n
M cac:LegalMonetaryTotal Document Totals

The total amount payable on the Invoice, including Allowances, Charges, and Taxes.

1..1
M+ cac:InvoiceLine Invoice Line

A line describing an invoice item.

1..n
Details

vrbl-invoice-pl-b2b-3p0

Content


Mandate

The Polish government introduced the National e-Invoicing System (KSeF) to facilitate electronic invoicing and ensure real-time reporting of transactions.
The e-Invoicing model approach that Poland has chosen is a centralized model. - KSeF will act as a centralized portal for both sending and receiving electronic invoices.

Timeline

  • February 1, 2026: Mandatory adoption for large taxpayers (annual turnover exceeding PLN 200 million).
  • April 1, 2026: Full implementation for all remaining taxpayers.

The KSeF Platform

  • While e-invoices must be transmitted via KSeF, recipients must consent to receive them in this format.
    If consent is not granted, the issuer is still required to submit the invoice to KSeF but must also deliver a copy through an alternative method, such as email (PDF) or a printed document via regular mail.
  • The platform follows a credential-based model, meaning only registered users with authorization can access the system. Once authenticated, users can view, issue, receive, and download invoices in a structured format. Taxpayers have the option to grant third-party access, allowing authorized representatives to manage invoices on their behalf.
  • Businesses can either create invoices directly within the KSeF platform using predefined templates or generate them within their own ERP/accounting system before submitting them to KSeF. Option 2 follows standard automatic process i.e. receive data/map/validate/communicate with KSeF.
  • Once submitted, the invoice undergoes automatic validation and a unique KSeF ID number is assigned to every invoice, confirming its authenticity.
  • All invoices processed through KSeF are archived for 10 years, allowing businesses to retrieve them as needed. The platform provides a secure and centralized repository for this archiving functionality.

The Polish FA(3) format is very extensive and covers a wide range of business scenarios some of the less used and edge cases are only supported on demand. In case any of these invoice scenarios apply, do reach out to us.
Here a short overview:

  • Party Correspondence Addresses
  • Supply of goods or provision of services exempt from tax under Article 43 sec. 1, Article 113 sec. 1 and 9 or provisions issued pursuant to Article 82 sec. 3 or pursuant to other provisions (P_19)
  • Intra-Community supply of new means of transport (NoweSrodkiTransportu)
  • Supply of goods or provision of services taxed under the margin scheme referred to in Article 119 or Article 120 (P_PMarzy)
  • Support for the EU OSS procedure (Section XII in Chapter 6a) (P_12_XII)
  • Support for excise duty provision (Pursuant to Art. 10 sec. 12 of 6 December 2008 on excise duty) (KwotaAkcyzy)
  • Support for designation of the procedure concerning the supply of goods and services (Procedura)
  • Advance and Final Invoices and their corrections (ZAL, ROZ, KOR_ZAL, KOR_ROZ)

Official Specifications

How to issue invoices for specific scenarios

In Poland KSeF FA(3) you can find following common invoice scenarios.

Domestic Invoice in Foreign Currency

  • Include the Document Currency code cbc:DocumentCurrencyCode which must contain the code of the foreign currency, while the local Polish currency must be provided as Tax Currency code in cbc:TaxCurrencyCode.
  • A second Tax Breakdown cac:TaxTotal group is required to provide the Tax Amount for each breakdown in the Tax Currency cbc:TaxCurrencyCode.
  • On line level the Price Exchange Rate is required and must be provided in the cac:PricingExchangeRate group.

Example:

<ubl:Invoice>
    <!-- code omitted for clarity -->
    <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
    <cbc:TaxCurrencyCode>PLN</cbc:TaxCurrencyCode>
    <!-- code omitted for clarity -->
    <cac:TaxTotal>
        <!-- 1st Tax Breakdown in Document Currency -->
        <cbc:TaxAmount currencyID="EUR">3118.8</cbc:TaxAmount>
        <cac:TaxSubtotal>
            <cbc:TaxableAmount currencyID="EUR">13560</cbc:TaxableAmount>
            <cbc:TaxAmount currencyID="EUR">3118.8</cbc:TaxAmount>
            <cac:TaxCategory>
                <cbc:ID>VRBL:PL:01</cbc:ID>
                <cbc:Percent>23</cbc:Percent>
                <cac:TaxScheme>
                    <cbc:ID>VAT</cbc:ID>
                </cac:TaxScheme>
            </cac:TaxCategory>
        </cac:TaxSubtotal>
    </cac:TaxTotal>
    <cac:TaxTotal>
        <!-- 2nd Tax Breakdown in Tax Currency -->
        <cbc:TaxAmount currencyID="PLN">14036.16</cbc:TaxAmount>
        <cac:TaxSubtotal>
            <cbc:TaxAmount currencyID="PLN">14036.16</cbc:TaxAmount>
            <cac:TaxCategory>
                <cbc:ID>VRBL:PL:01</cbc:ID>
                <cbc:Percent>23</cbc:Percent>
                <cac:TaxScheme>
                    <cbc:ID>VAT</cbc:ID>
                </cac:TaxScheme>
            </cac:TaxCategory>
        </cac:TaxSubtotal>
    </cac:TaxTotal>
    <!-- code omitted for clarity -->
    <cac:InvoiceLine>
        <!-- code omitted for clarity -->
        <cac:Price>
            <!-- Code omitted for clarity -->
            <cec:UBLExtensions>
                <cec:UBLExtension>
                    <cec:ExtensionContent>
                        <vrbl:PriceExtension>
                            <!-- Item Gross Price -->
                            <vrbl:PriceAmountBeforeAllowanceCharge currencyID="PLN">1000.00</vrbl:PriceAmountBeforeAllowanceCharge>
                        </vrbl:PriceExtension>
                    </cec:ExtensionContent>
                </cec:UBLExtension>
            </cec:UBLExtensions>
            <cbc:PriceAmount currencyID="EUR">1000.00</cbc:PriceAmount>
            <cac:PricingExchangeRate>
                <cbc:SourceCurrencyCode>EUR</cbc:SourceCurrencyCode>
                <cbc:TargetCurrencyCode>PLN</cbc:TargetCurrencyCode>
                <cbc:CalculationRate>4.5005</cbc:CalculationRate>
            </cac:PricingExchangeRate>
        </cac:Price>
        <!-- code omitted for clarity -->
    </cac:InvoiceLine>
</ubl:Invoice>

Invoice for Intra-community Supply of Goods

  • Include the Document Currency code cbc:DocumentCurrencyCode which must contain the code of the foreign currency, while the local Polish currency must be provided as Tax Currency code in cbc:TaxCurrencyCode.
  • Provide the EU VAT ID of the Buyer cac:PartyTaxScheme/cbc:CompanyID
  • A second Tax Breakdown cac:TaxTotal group is required to provide the Tax Amount for each breakdown in the Tax Currency cbc:TaxCurrencyCode. In case the Total TaxAmount is zero no breakdown is required, but still can be provided.
  • On line level provide cac:TaxExemptionCode = VRBL:PL:WDT and zero as Tax Rate cbc:Percent.

Example:

<ubl:Invoice>
    <!-- code omitted for clarity -->
    <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
    <cbc:TaxCurrencyCode>PLN</cbc:TaxCurrencyCode>
    <!-- code omitted for clarity -->
    <cac:AccountingCustomerParty>
        <cac:Party>
            <cac:PartyTaxScheme>
                <cbc:CompanyID>DE999999999</cbc:CompanyID>
                <cac:TaxScheme>
                    <cbc:ID>VAT</cbc:ID>
                </cac:TaxScheme>
            </cac:PartyTaxScheme>
        </cac:Party>
    </cac:AccountingCustomerParty>
    <cac:TaxTotal>
        <!-- TaxTotal in Document Currency -->
        <cbc:TaxAmount currencyID="EUR">3118.8</cbc:TaxAmount>
        <cac:TaxSubtotal>
            <cbc:TaxableAmount currencyID="EUR">13560</cbc:TaxableAmount>
            <cbc:TaxAmount currencyID="EUR">3118.8</cbc:TaxAmount>
            <cac:TaxCategory>
                <cbc:ID>VRBL:PL:06.02</cbc:ID>
                <cbc:Percent>0</cbc:Percent>
                <cac:TaxScheme>
                    <cbc:ID>VAT</cbc:ID>
                </cac:TaxScheme>
            </cac:TaxCategory>
        </cac:TaxSubtotal>
    </cac:TaxTotal>
    <cac:TaxTotal>
        <!-- TaxTotal in Tax Currency -->
        <cbc:TaxAmount currencyID="PLN">0</cbc:TaxAmount>
    </cac:TaxTotal>
    <!-- code omitted for clarity -->
    <cac:InvoiceLine>
        <!-- code omitted for clarity -->
        <cac:Item>
            <cbc:Name>lodówka Zimnotech mk1</cbc:Name>
            <cac:ClassifiedTaxCategory>
                <cbc:ID>VRBL:PL:06.02</cbc:ID>
                <cbc:Percent>0</cbc:Percent>
                <cbc:TaxExemptionReasonCode>VRBL:PL:WDT</cbc:TaxExemptionReasonCode>
                <cac:TaxScheme>
                    <cbc:ID>VAT</cbc:ID>
                </cac:TaxScheme>
            </cac:ClassifiedTaxCategory>
        </cac:Item>
        <!-- code omitted for clarity -->
        <cac:Price>
            <!-- Code omitted for clarity -->
            <cbc:PriceAmount currencyID="EUR">1000.00</cbc:PriceAmount>
        </cac:Price>
        <!-- code omitted for clarity -->
    </cac:InvoiceLine>
</ubl:Invoice>

Export Invoice

  • Include the Document Currency code cbc:DocumentCurrencyCode which must contain the code of the foreign currency, while the local Polish currency must be provided as Tax Currency code in cbc:TaxCurrencyCode.
  • Provide the Tax Identification Number of the Buyer cac:PartyTaxScheme/cbc:CompanyID
  • A second Tax Breakdown cac:TaxTotal group is required to provide the Tax Amount for each breakdown in the Tax Currency cbc:TaxCurrencyCode. In case the Total TaxAmount is zero no breakdown is required, but still can be provided.
  • On line level provide cac:TaxExemptionCode = VRBL:PL:EX and zero as Tax Rate cbc:Percent.

Example:

<ubl:Invoice>
    <!-- code omitted for clarity -->
    <cbc:DocumentCurrencyCode>USD</cbc:DocumentCurrencyCode>
    <cbc:TaxCurrencyCode>PLN</cbc:TaxCurrencyCode>
    <!-- code omitted for clarity -->
    <cac:AccountingCustomerParty>
        <cac:Party>
            <cac:PartyTaxScheme>
                <cbc:CompanyID>DE999999999</cbc:CompanyID>
                <cac:TaxScheme>
                    <cbc:ID>VAT</cbc:ID>
                </cac:TaxScheme>
            </cac:PartyTaxScheme>
        </cac:Party>
    </cac:AccountingCustomerParty>
    <cac:TaxTotal>
        <!-- TaxTotal in Document Currency -->
        <cbc:TaxAmount currencyID="USD">3118.8</cbc:TaxAmount>
        <cac:TaxSubtotal>
            <cbc:TaxableAmount currencyID="USD">13560</cbc:TaxableAmount>
            <cbc:TaxAmount currencyID="USD">3118.8</cbc:TaxAmount>
            <cac:TaxCategory>
                <cbc:ID>VRBL:PL:06.03</cbc:ID>
                <cbc:Percent>23</cbc:Percent>
                <cac:TaxScheme>
                    <cbc:ID>VAT</cbc:ID>
                </cac:TaxScheme>
            </cac:TaxCategory>
        </cac:TaxSubtotal>
    </cac:TaxTotal>
    <cac:TaxTotal>
        <!-- TaxTotal in Tax Currency -->
        <cbc:TaxAmount currencyID="PLN">0</cbc:TaxAmount>
    </cac:TaxTotal>
    <!-- code omitted for clarity -->
    <cac:InvoiceLine>
        <!-- code omitted for clarity -->
        <cac:Item>
            <cbc:Name>lodówka Zimnotech mk1</cbc:Name>
            <cac:ClassifiedTaxCategory>
                <cbc:ID>VRBL:PL:06.03</cbc:ID>
                <cbc:Percent>0</cbc:Percent>
                <cbc:TaxExemptionReasonCode>VRBL:PL:EX</cbc:TaxExemptionReasonCode>
                <cac:TaxScheme>
                    <cbc:ID>VAT</cbc:ID>
                </cac:TaxScheme>
            </cac:ClassifiedTaxCategory>
        </cac:Item>
        <!-- code omitted for clarity -->
        <cac:Price>
            <!-- Code omitted for clarity -->
            <cbc:PriceAmount currencyID="EUR">1000.00</cbc:PriceAmount>
        </cac:Price>
        <!-- code omitted for clarity -->
    </cac:InvoiceLine>
</ubl:Invoice>

Advance Invoice

The advance invoice is used to document or request advance payments related to an order or contract.
Basically it contains the lines and the total amount from the order or contract and the amount to be paid in advance.

It has the following specifics:

  • Use Invoice Type Code cbc:InvoiceTypeCode = 386 to indicate that it is an advance invoice.
  • In the Document Totals section provide:
    * The Amount to be paid cbc:PayableAmount
    * The Tax Inclusive Amount cbc:TaxInclusiveAmount (Usually the same as the Payable Amount).
    * The value of the related order or contract including tax amount in the vrbl:OrderTotalAmount extension.
  • Provide the Tax breakdown cac:TaxTotal group, which shows the breakdown for the Payable Amount.
  • The Invoice Lines cac:InvoiceLine are a representation of the lines from the order or contract and must contain:
    * all item specifics cac:Item
    * The Price group cac:Price
    * The Invoice Line Net Amount cbc:LineExtensionAmount
    * Tax Rate cac:ClassifiedTaxCategory/cbc:Percent
    * Tax Amount cac:TaxTotal/cbc:TaxAmount

Example:

<ubl:Invoice>
    <!-- code omitted for clarity -->
    <cbc:InvoiceTypeCode>386</cbc:InvoiceTypeCode>
    <!-- code omitted for clarity -->
    <!-- Tax Breakdown -->
    <cac:TaxTotal>
        <cbc:TaxAmount currencyID="PLN">3739.84</cbc:TaxAmount>
        <cac:TaxSubtotal>
            <cbc:TaxableAmount currencyID="PLN">16260.16</cbc:TaxableAmount>
            <cbc:TaxAmount currencyID="PLN">3739.84</cbc:TaxAmount>
            <cac:TaxCategory>
                <cbc:ID>VRBL:PL:01</cbc:ID>
                <cbc:Percent>23</cbc:Percent>
                <cac:TaxScheme>
                    <cbc:ID>VAT</cbc:ID>
                </cac:TaxScheme>
            </cac:TaxCategory>
        </cac:TaxSubtotal>
    </cac:TaxTotal>
    <cac:LegalMonetaryTotal>
        <ext:UBLExtensions>
            <ext:UBLExtension>
                <ext:ExtensionContent>
                    <vrbl:LegalMonetaryTotalExtension>
                        <!-- Order Total Amount -->
                        <vrbl:OrderTotalAmount currencyID="PLN">369000</vrbl:OrderTotalAmount>
                    </vrbl:LegalMonetaryTotalExtension>
                </ext:ExtensionContent>
            </ext:UBLExtension>
        </ext:UBLExtensions>
        <!-- Amount to be paid -->
        <cbc:TaxInclusiveAmount currencyID="PLN">20000</cbc:TaxInclusiveAmount>
        <cbc:PayableAmount currencyID="PLN">20000</cbc:PayableAmount>
    </cac:LegalMonetaryTotal>
    <!-- Order Lines with Item specifics, etc. -->
    <cac:InvoiceLine>
        <cbc:ID>1</cbc:ID>
        <cbc:UUID>aaaa111133339990</cbc:UUID>
        <cbc:InvoicedQuantity unitCode="H87">1</cbc:InvoicedQuantity>
        <cbc:LineExtensionAmount currencyID="PLN">300000</cbc:LineExtensionAmount>
        <cac:TaxTotal>
            <cbc:TaxAmount currencyID="PLN">69000</cbc:TaxAmount>
        </cac:TaxTotal>
        <cac:Item>
            <cbc:Name>mieszkanie 50m^2</cbc:Name>
            <cac:ClassifiedTaxCategory>
                <cbc:Percent>23</cbc:Percent>
                <cac:TaxScheme>
                    <cbc:ID>VAT</cbc:ID>
                </cac:TaxScheme>
            </cac:ClassifiedTaxCategory>
        </cac:Item>
        <cac:Price>
            <cbc:PriceAmount currencyID="PLN">300000</cbc:PriceAmount>
        </cac:Price>
    </cac:InvoiceLine>
    <!-- ... -->
</ubl:Invoice>

Final Invoice

The Final Invoice is used to settle the Advance Invocie. It takes in consideration all possible corrections of the Advance Invoice (in case there have been any).

It has the following specifics:

  • Provide the Invoice Type Code cbc:InvoiceTypeCode = VRBL:PL:ROZ.
  • Refer to the Advance Invoice in the Billing Reference Group cac:BillingReference.
  • In the Document Totals section provide:
    * The Prepaid Amount cbc:PrepaidAmount with the up-to-date Paid Amount (optional).
    * The Tax Inclusive Amount cbc:TaxInclusiveAmount shows the difference between the already Prepaid Amounts cbc:PrepaidAmount and the total order value from the Advance Invoice or the subsequent corrections.
    * The Payable Amount cbc:PayableAmount represents the outstanding balance required to clear this invoice.
  • Provide the Tax Breakdown cac:TaxSubtotal of the final Amount to be paid.

Example of document level:
This is correction snippet is based on the Advance Invoice example snippet.

<ubl:Invoice>
    <!-- Code omitted for clarity -->
    <cbc:InvoiceTypeCode>VRBL:PL:ROZ</cbc:InvoiceTypeCode>
    <!-- Code omitted for clarity -->
    <cac:BillingReference>
        <cac:InvoiceDocumentReference>
            <!-- Syntactically required -->
            <cbc:ID>NA</cbc:ID>
            <cbc:UUID>9999999999-20230908-8BEF280C8D35-4D</cbc:UUID>
        </cac:InvoiceDocumentReference>
    </cac:BillingReference>
    <!-- Code omitted for clarity -->
    <cac:TaxTotal>
        <cbc:TaxAmount currencyID="PLN">65260.16</cbc:TaxAmount>
        <cac:TaxSubtotal>
            <cbc:TaxableAmount currencyID="PLN">283739.84</cbc:TaxableAmount>
            <cbc:TaxAmount currencyID="PLN">943.04</cbc:TaxAmount>
            <cac:TaxCategory>
                <cbc:ID>VRBL:PL:01</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:TaxInclusiveAmount currencyID="PLN">349000</cbc:TaxInclusiveAmount>
        <cbc:PrepaidAmount currencyID="PLN">20000</cbc:PrepaidAmount>
        <cbc:PayableAmount currencyID="PLN">349000</cbc:PayableAmount>
    </cac:LegalMonetaryTotal>
    <!-- Code omitted for clarity -->
</ubl:Invoice>

Example snippets of the lines for Final Invoice:

  • Provide the lines from the Advance Invoice. Taking in consideration all possible corrections of the Advance Invoice (in case there have been any).
  • The Tax Amount on Line Level is optional for the Final Invoice cac:TaxTotal/cbc:TaxAmount (omitted in the snippet).
<!-- First Line -->
<cac:InvoiceLine>
    <cbc:ID>1</cbc:ID>
    <!-- Code omitted for clarity -->
    <cbc:InvoicedQuantity unitCode="H87">1</cbc:InvoicedQuantity>
    <cbc:LineExtensionAmount currencyID="PLN">300000</cbc:LineExtensionAmount>
    <!-- Code omitted for clarity -->
    <cac:Item>
        <cbc:Name>mieszkanie 50m^2</cbc:Name>
        <cac:ClassifiedTaxCategory>
            <cbc:Percent>23</cbc:Percent>
            <cac:TaxScheme>
                <cbc:ID>VAT</cbc:ID>
            </cac:TaxScheme>
        </cac:ClassifiedTaxCategory>
    </cac:Item>
    <cac:Price>
        <!-- Code omitted for clarity -->
        <cbc:PriceAmount currencyID="PLN">300000</cbc:PriceAmount>
    </cac:Price>
    <!-- Code omitted for clarity -->
</cac:InvoiceLine>

How to issue a Correction Invoice

In Poland KSeF FA(3) there are multiple invoice correction scenarios.

Correction of transactional data in an invoice

This correction type applies to correction of amounts, prices, quantities and taxes.
Use the Invoice Type Code 384 to indicate the correction.
Additionally provide:

  • The corresponding correction type in Invoice Subtype Code vrbl:InvoiceSubtypeCode = VRBL:PL:KOR
  • Refer to the Original Invoice cac:BillingReference
  • Correction Method vrbl:CorrectionMethod and Reason vrbl:CorrectionReason

Example:

<ubl:Invoice>
    <!-- Code omitted for clarity -->
    <ext:UBLExtensions>
        <ext:UBLExtension>
            <ext:ExtensionContent>
                <vrbl:InvoiceExtension>
                    <vrbl:InvoiceSubtypeCode>VRBL:PL:KOR</vrbl:InvoiceSubtypeCode>
                </vrbl:InvoiceExtension>
            </ext:ExtensionContent>
        </ext:UBLExtension>
    </ext:UBLExtensions>
    <!-- Code omitted for clarity -->
    <cbc:InvoiceTypeCode>384</cbc:InvoiceTypeCode>
    <!-- Code omitted for clarity -->
    <cac:BillingReference>
        <cac:InvoiceDocumentReference>
            <cec:UBLExtensions>
                <cec:UBLExtension>
                    <cec:ExtensionContent>
                        <vrbl:InvoiceDocumentReferenceExtension>
                            <vrbl:CorrectionData>
                                <!-- Correction Type/Method -->
                                <vrbl:CorrectionMethod>VRBL:PL:3</vrbl:CorrectionMethod>
                                <!-- Correction Reason -->
                                <vrbl:CorrectionReason>Price reduction of 200 zł due to minor damage.</vrbl:CorrectionReason>
                            </vrbl:CorrectionData>
                        </vrbl:InvoiceDocumentReferenceExtension>
                    </cec:ExtensionContent>
                </cec:UBLExtension>
            </cec:UBLExtensions>
            <!-- Original Invoice Number -->
            <cbc:ID>INV12345_Buyer-PL-NIP_01</cbc:ID>
            <!-- Original Invoice KSeF Number -->
            <cbc:UUID>9999999999-20230908-8BEF280C8D35-4D</cbc:UUID>
            <!-- Original Invoice Date -->
            <cbc:IssueDate>2025-03-20</cbc:IssueDate>
        </cac:InvoiceDocumentReference>
    </cac:BillingReference>
    <!-- At least one Invoice Line -->
    <cac:InvoiceLine>
        <cbc:ID>1</cbc:ID>
        <!-- Code omitted for clarity -->
    </cac:InvoiceLine>
</ubl:Invoice>

There are three methods to correct the invoice:

1. Provide original and corrected line

The Correction Invoice includes the original incorrect line that needs correction, and the corrected line containing the updated amounts, prices, and quantities.
The invoice total on document level reflects the difference between the original and corrected invoice.
In order to indicate an original line. The Original Line Indicator vrbl:OriginalLineIndicator must be used.

Example:
In the original invoice in position 1 an Item Price Net cbc:PriceAmount to be corrected: 1626.01 PLN was provided.
All the other positions contained correct prices.
The Correction Reason was indicated in the vrbl:CorrectionReason element: Price reduction of 200 zł due to minor damage.
The correct Item Price Net cbc:PriceAmount is 1463.41 PLN and must be corrected.
Therefore the example contains two invoice lines: the original line and the corrected line.

<ubl:Invoice>
    <!-- Code omitted for clarity -->
    <cac:TaxTotal>
        <!-- Negative amounts because corrected price is lower -->
        <cbc:TaxAmount currencyID="PLN">-37.4</cbc:TaxAmount>
        <cac:TaxSubtotal>
            <cbc:TaxableAmount currencyID="PLN">-162.6</cbc:TaxableAmount>
            <cbc:TaxAmount currencyID="PLN">-37.4</cbc:TaxAmount>
            <!-- Code omitted for clarity -->
        </cac:TaxSubtotal>
    </cac:TaxTotal>
        <ext:UBLExtensions>
            <ext:UBLExtension>
                <ExtensionContent>
                    <vrbl:LegalMonetaryTotalExtension>
                        <!-- Negative amounts because corrected price is lower -->
                        <vrbl:TotalInvoiceAmount currencyID="PLN">-200</vrbl:TotalInvoiceAmount>
                    </vrbl:LegalMonetaryTotalExtension>
                </ExtensionContent>
            </ext:UBLExtension>
        </ext:UBLExtensions>
        <!-- Negative amounts because corrected price is lower -->
        <cbc:LineExtensionAmount currencyID="PLN">-162.6</cbc:LineExtensionAmount>
        <cbc:TaxExclusiveAmount currencyID="PLN">-162.6</cbc:TaxExclusiveAmount>
        <cbc:TaxInclusiveAmount currencyID="PLN">-200</cbc:TaxInclusiveAmount>
        <cbc:PayableAmount currencyID="PLN">-200</cbc:PayableAmount>
    </cac:LegalMonetaryTotal>
    <!-- ORIGINAL (wrong) Invoice Line -->
    <cac:InvoiceLine>
        <ext:UBLExtensions>
            <ext:UBLExtension>
                <ext:ExtensionContent>
                    <vrbl:InvoiceLineExtension>
                        <!-- Indicates the original line -->
                        <vrbl:OriginalLineIndicator>true</vrbl:OriginalLineIndicator>
                    </vrbl:InvoiceLineExtension>
                </ext:ExtensionContent>
            </ext:UBLExtension>
        </ext:UBLExtensions>
        <cbc:ID>1</cbc:ID>
        <cbc:UUID>aaaa111133339990</cbc:UUID>
        <cbc:InvoicedQuantity unitCode="H87">1</cbc:InvoicedQuantity>
        <cbc:LineExtensionAmount currencyID="PLN">1626.01</cbc:LineExtensionAmount>
        <!-- Code omitted for clarity -->
        <cac:Price>
            <!-- Wrong Item Price Net  -->
            <cbc:PriceAmount currencyID="PLN">1626.01</cbc:PriceAmount>
        </cac:Price>
    </cac:InvoiceLine>
    <!-- CORRECTED Invoice Line -->
    <cac:InvoiceLine>
        <cbc:ID>1</cbc:ID>
        <cbc:UUID>aaaa111133339990</cbc:UUID>
        <cbc:InvoicedQuantity unitCode="H87">1</cbc:InvoicedQuantity>
        <cbc:LineExtensionAmount currencyID="PLN">1463.41</cbc:LineExtensionAmount>
        <!-- Code omitted for clarity -->
        <cac:Price>
            <!-- Corrected Item Price Net  -->
            <cbc:PriceAmount currencyID="PLN">1463.41</cbc:PriceAmount>
        </cac:Price>
    </cac:InvoiceLine>
</ubl:Invoice>

2. Provide one delta line

In this case the Correction Invoice line only displays the differences in amounts, prices, and quantities between the original incorrect data and the corrected data. Negative values indicate prices that were initially too high or goods that were returned. Positive values indicate prices that were initially too low. Instead of two lines, the original one and the corrected one, only one delta line is provided.

Example:
In the original invoice in position 1 an Item Price Net cbc:PriceAmount to be corrected: 1626.01 PLN was provided.
All the other positions contained correct prices.
The Correction Reason was indicated in the vrbl:CorrectionReason element: Price reduction of 200 zł due to minor damage.
The correct Item Price Net cbc:PriceAmount is 1463.41 PLN and must be corrected.
Therefore the example contains two invoice lines: the original line and the corrected line.

<ubl:Invoice>
    <!-- Code omitted for clarity -->
    <cac:TaxTotal>
        <!-- Negative amounts because corrected price is lower -->
        <cbc:TaxAmount currencyID="PLN">-37.4</cbc:TaxAmount>
        <cac:TaxSubtotal>
            <cbc:TaxableAmount currencyID="PLN">-162.6</cbc:TaxableAmount>
            <cbc:TaxAmount currencyID="PLN">-37.4</cbc:TaxAmount>
            <!-- Code omitted for clarity -->
        </cac:TaxSubtotal>
    </cac:TaxTotal>
        <ext:UBLExtensions>
            <ext:UBLExtension>
                <ExtensionContent>
                    <vrbl:LegalMonetaryTotalExtension>
                        <!-- Negative amounts because corrected price is lower -->
                        <vrbl:TotalInvoiceAmount currencyID="PLN">-200</vrbl:TotalInvoiceAmount>
                    </vrbl:LegalMonetaryTotalExtension>
                </ExtensionContent>
            </ext:UBLExtension>
        </ext:UBLExtensions>
        <!-- Negative amounts because corrected price is lower -->
        <cbc:LineExtensionAmount currencyID="PLN">-162.6</cbc:LineExtensionAmount>
        <cbc:TaxExclusiveAmount currencyID="PLN">-162.6</cbc:TaxExclusiveAmount>
        <cbc:TaxInclusiveAmount currencyID="PLN">-200</cbc:TaxInclusiveAmount>
        <cbc:PayableAmount currencyID="PLN">-200</cbc:PayableAmount>
    </cac:LegalMonetaryTotal>
    <!-- DELTA Invoice Line -->
    <cac:InvoiceLine>
        <cbc:ID>1</cbc:ID>
        <cbc:UUID>aaaa111133339990</cbc:UUID>
        <cbc:InvoicedQuantity unitCode="H87">1</cbc:InvoicedQuantity>
        <cbc:LineExtensionAmount currencyID="PLN">-162.6</cbc:LineExtensionAmount>
        <!-- Code omitted for clarity -->
        <cac:Price>
            <!-- DELTA Invoice Line between original and corrected line -->
            <cbc:PriceAmount currencyID="PLN">-162.6</cbc:PriceAmount>
        </cac:Price>
    </cac:InvoiceLine>
</ubl:Invoice>

3. Provide Original Line (negated) and Corrected line

The Correction Invoice includes two versions of the same line item: the original incorrect line showing negated amounts, prices, and quantities that need correction, and the corrected line containing the updated amounts, prices, and quantities.
The invoice total reflects the difference between the original and corrected invoice.
In order to indicate an original line. The Original Line Indicator must be used.

Example:
In the original invoice in position 1 an Item Price Net cbc:PriceAmount to be corrected: 1626.01 PLN was provided.
All the other positions contained correct prices.
The Correction Reason was indicated in the vrbl:CorrectionReason element: Price reduction of 200 zł due to minor damage.
The correct Item Price Net cbc:PriceAmount is 1463.41 PLN and must be corrected.
Therefore the example contains two invoice lines: the original line and the corrected line.

<ubl:Invoice>
    <!-- Code omitted for clarity -->
    <cac:TaxTotal>
        <!-- Negative amounts because corrected price is lower -->
        <cbc:TaxAmount currencyID="PLN">-37.4</cbc:TaxAmount>
        <cac:TaxSubtotal>
            <cbc:TaxableAmount currencyID="PLN">-162.6</cbc:TaxableAmount>
            <cbc:TaxAmount currencyID="PLN">-37.4</cbc:TaxAmount>
            <!-- Code omitted for clarity -->
        </cac:TaxSubtotal>
    </cac:TaxTotal>
        <ext:UBLExtensions>
            <ext:UBLExtension>
                <ExtensionContent>
                    <vrbl:LegalMonetaryTotalExtension>
                        <!-- Negative amounts because corrected price is lower -->
                        <vrbl:TotalInvoiceAmount currencyID="PLN">-200</vrbl:TotalInvoiceAmount>
                    </vrbl:LegalMonetaryTotalExtension>
                </ExtensionContent>
            </ext:UBLExtension>
        </ext:UBLExtensions>
        <!-- Negative amounts because corrected price is lower -->
        <cbc:LineExtensionAmount currencyID="PLN">-162.6</cbc:LineExtensionAmount>
        <cbc:TaxExclusiveAmount currencyID="PLN">-162.6</cbc:TaxExclusiveAmount>
        <cbc:TaxInclusiveAmount currencyID="PLN">-200</cbc:TaxInclusiveAmount>
        <cbc:PayableAmount currencyID="PLN">-200</cbc:PayableAmount>
    </cac:LegalMonetaryTotal>
    <!-- ORIGINAL wrong negated Invoice Line  -->
    <!-- without Original Invoice Line Indicator -->
    <cac:InvoiceLine>
        <cbc:ID>1</cbc:ID>
        <cbc:UUID>aaaa111133339990</cbc:UUID>
        <cbc:InvoicedQuantity unitCode="H87">-1</cbc:InvoicedQuantity>
        <cbc:LineExtensionAmount currencyID="PLN">-1626.01</cbc:LineExtensionAmount>
        <!-- Code omitted for clarity -->
        <cac:Price>
            <!-- Wrong Item Price Net  -->
            <cbc:PriceAmount currencyID="PLN">1626.01</cbc:PriceAmount>
        </cac:Price>
    </cac:InvoiceLine>
    <!-- CORRECTED Invoice Line -->
    <cac:InvoiceLine>
        <cbc:ID>1</cbc:ID>
        <cbc:UUID>aaaa111133339990</cbc:UUID>
        <cbc:InvoicedQuantity unitCode="H87">1</cbc:InvoicedQuantity>
        <cbc:LineExtensionAmount currencyID="PLN">1463.41</cbc:LineExtensionAmount>
        <!-- Code omitted for clarity -->
        <cac:Price>
            <!-- Corrected Item Price Net  -->
            <cbc:PriceAmount currencyID="PLN">1463.41</cbc:PriceAmount>
        </cac:Price>
    </cac:InvoiceLine>
</ubl:Invoice>

Correction of party master data in an invoice

This correction type applies to corrections of party master data.
Use the Invoice Type Code 384 to indicate the correction.

Additionally provide:

  • The corresponding correction type in Invoice Subtype Code vrbl:InvoiceSubtypeCode = VRBL:PL:KOR
  • Refer to the Original Invoice cac:BillingReference
  • Correction Method vrbl:CorrectionMethod and Reason vrbl:CorrectionReason
  • In order to correct wrong party data provide the corrected data in the corresponding party group:
    * for Seller data: cac:AccountingSupplierParty
    * for Buyer data: cac:AccountingCustomerParty
    * for other Parties: vrbl:AdditionalParty.
  • Still the original wrong party data must be provided in the Correction Data Extension of the Preceding Invoice Reference section.
  • The Correction Invoices do not contain any tax totals and the syntactically required document totals contains zero values.
  • Additionally an empty Invoice Line cac:InvoiceLine must be contained. This is required by the UBL 2.4 Syntax.

Example snippet correcting a wrong buyer name from the original invoice.

  • Wrong: CDE sp. j.
  • Correct: CeDeE s.c.
<ubl:Invoice>
    <!-- Code omitted for clarity -->
    <ext:UBLExtensions>
        <ext:UBLExtension>
            <ext:ExtensionContent>
                <vrbl:InvoiceExtension>
                    <vrbl:InvoiceSubtypeCode>VRBL:PL:KOR</vrbl:InvoiceSubtypeCode>
                </vrbl:InvoiceExtension>
            </ext:ExtensionContent>
        </ext:UBLExtension>
    </ext:UBLExtensions>
    <!-- Code omitted for clarity -->
    <cbc:InvoiceTypeCode>384</cbc:InvoiceTypeCode>
    <!-- Code omitted for clarity -->
    <cac:BillingReference>
        <cac:InvoiceDocumentReference>
            <cec:UBLExtensions>
                <cec:UBLExtension>
                    <cec:ExtensionContent>
                        <vrbl:InvoiceDocumentReferenceExtension>
                            <vrbl:CorrectionData>
                                <vrbl:BeforeCorrection>
                                    <!-- Original Party Data before correction -->
                                    <cac:AccountingCustomerParty>
                                        <cbc:AdditionalAccountID schemeID="VRBL:PL:PurchaserID">0001</cbc:AdditionalAccountID>
                                        <cac:Party>
                                            <!-- Code omitted for clarity -->
                                            <PostalAddress>
                                                <AddressLine>
                                                    <cbc:Line>ul. Sadowa 1 lok. 3</cbc:Line>
                                                </AddressLine>
                                                <AddressLine>
                                                    <cbc:Line>00-002 Kraków</cbc:Line>
                                                </AddressLine>
                                                <Country>
                                                    <cbc:IdentificationCode>PL</cbc:IdentificationCode>
                                                </Country>
                                            </PostalAddress>
                                            <!-- Code omitted for clarity -->
                                            <PartyLegalEntity>
                                                <!-- Wrong Buyer Name -->
                                                <cbc:RegistrationName>CDE sp. j.</cbc:RegistrationName>
                                            </PartyLegalEntity>
                                            <!-- Code omitted for clarity -->
                                        </cac:Party>
                                    </cac:AccountingCustomerParty>
                                </vrbl:BeforeCorrection>
                                <!-- Correction Type/Method -->
                                <vrbl:CorrectionMethod>VRBL:PL:1</vrbl:CorrectionMethod>
                                <!-- Correction Reason -->
                                <vrbl:CorrectionReason>Incorrect buyer name.</vrbl:CorrectionReason>
                            </vrbl:CorrectionData>
                        </vrbl:InvoiceDocumentReferenceExtension>
                    </cec:ExtensionContent>
                </cec:UBLExtension>
            </cec:UBLExtensions>
            <!-- Original Invoice Number -->
            <cbc:ID>FV2026/02/150</cbc:ID>
            <!-- Original Invoice KSeF Number -->
            <cbc:UUID>9999999999-20230908-8BEF280C8D35-4D</cbc:UUID>
            <!-- Original Invoice Date -->
            <cbc:IssueDate>2025-03-20</cbc:IssueDate>
        </cac:InvoiceDocumentReference>
    </cac:BillingReference>
    <!-- Code omitted for clarity -->
    <cac:AccountingCustomerParty>
        <cbc:AdditionalAccountID schemeID="VRBL:PL:PurchaserID">0001</cbc:AdditionalAccountID>
        <cac:Party>
            <!-- Code omitted for clarity -->
            <cac:PostalAddress>
                <cac:AddressLine>
                    <cbc:Line>ul. Sadowa 1 lok. 3</cbc:Line>
                </cac:AddressLine>
                <cac:AddressLine>
                    <cbc:Line>00-002 Kraków</cbc:Line>
                </cac:AddressLine>
                <cac:Country>
                    <cbc:IdentificationCode>PL</cbc:IdentificationCode>
                </cac:Country>
            </cac:PostalAddress>
            <!-- Code omitted for clarity -->
            </cac:PartyTaxScheme>
            <cac:PartyLegalEntity>
                <!-- Corrected Buyer Name -->
                <cbc:RegistrationName>CeDeE s.c.</cbc:RegistrationName>
            </cac:PartyLegalEntity>
            <!-- Code omitted for clarity -->
        </cac:Party>
    </cac:AccountingCustomerParty>
    <cac:LegalMonetaryTotal>
        <!-- Document totals contain zero values -->
        <cbc:LineExtensionAmount currencyID="PLN">0</cbc:LineExtensionAmount>
        <cbc:TaxExclusiveAmount currencyID="PLN">0</cbc:TaxExclusiveAmount>
        <cbc:TaxInclusiveAmount currencyID="PLN">0</cbc:TaxInclusiveAmount>
        <cbc:PayableAmount currencyID="PLN">0</cbc:PayableAmount>
    </cac:LegalMonetaryTotal>
    <!-- Syntactically required empty Invoice Line --> 
    <cac:InvoiceLine>
        <cbc:ID>1</cbc:ID>
        <cbc:LineExtensionAmount currencyID="PLN">0</cbc:LineExtensionAmount>
        <cac:Item/>
    </cac:InvoiceLine>
</ubl:Invoice>

Collective Correction Invoice

This correction type is called Collective Correction Invoice and is used to retroactively apply a discount to already issued invoices.
Use the Invoice Type Code 384 to indicate the correction.

Additionally provide:

  • The corresponding correction type in Invoice Subtype Code vrbl:InvoiceSubtypeCode = VRBL:PL:KOR
  • Refer to each original Invoice in its own cac:BillingReference group.
  • Provide the all the referenced original invoices in its own Preceding Invoice Reference group cac:BillingReference/cac:InvoiceDocumentReference. They must adhere to the group specific requirements with exception of the Correction Data Extension. This is used on the document level.
  • Since the Correction Data Extension refers to all original invoices it is used on the document level as child of the Invoice Extension /ubl:Invoice//vrbl:InvoiceExtension. Provide:
    * Correction Method vrbl:CorrectionMethod
    * Correction Reason vrbl:CorrectionReason
    * The Invoice Period Description element vrbl:InvoicePeriodDescription (optional)
  • Document totals contain:
    * The Total Invoice Amount vrbl:TotalInvoiceAmount
    * The Tax Exclusive Amount cbc:TaxExclusiveAmount
    * The Tax Inclusive Amount cbc:TaxInclusiveAmount
    * The Payable Amount cbc:PayableAmount
  • The tax breakdown of the Collective Correction Discount Amount.
  • Add an empty Invoice Line cac:InvoiceLine. This is required by the UBL 2.4 Syntax.

Example snippet of retroactively providing an overall discount of 50 000 PLN over certain invoice period and list of impacted invoices.

<ubl:Invoice>
    <!-- Code omitted for clarity -->
    <ext:UBLExtensions>
        <ext:UBLExtension>
            <ext:ExtensionContent>
                <vrbl:InvoiceExtension>
                    <vrbl:CorrectionData>
                        <vrbl:CorrectionMethod>VRBL:PL:2</vrbl:CorrectionMethod>
                        <vrbl:CorrectionReason>A discount of 50,000 due to the purchase volume.</vrbl:CorrectionReason>
                        <!-- Free-text period description -->
                        <vrbl:InvoicePeriodDescription>First half of 2026</vrbl:InvoicePeriodDescription>
                    </vrbl:CorrectionData>
                    <vrbl:InvoiceSubtypeCode>VRBL:PL:KOR</vrbl:InvoiceSubtypeCode>
                    <!-- Code omitted for clarity -->
                </vrbl:InvoiceExtension>
            </ext:ExtensionContent>
        </ext:UBLExtension>
    </ext:UBLExtensions>
    <cbc:InvoiceTypeCode>384</cbc:InvoiceTypeCode>
    <!-- Code omitted for clarity -->
    <!-- n billing references -->
    <cac:BillingReference>
        <cac:InvoiceDocumentReference>
            <cbc:ID>FV2026/01/134</cbc:ID>
            <cbc:UUID>9999999999-20230908-8BEF280C8D35-4D</cbc:UUID>
            <cbc:IssueDate>2026-01-15</cbc:IssueDate>
        </cac:InvoiceDocumentReference>
    </cac:BillingReference>
    <cac:BillingReference>
        <cac:InvoiceDocumentReference>
            <cbc:ID>FV2026/02/150</cbc:ID>
            <cbc:UUID>9999999999-20230908-76B2B580D4DC-80</cbc:UUID>
            <cbc:IssueDate>2026-02-15</cbc:IssueDate>
        </cac:InvoiceDocumentReference>
    </cac:BillingReference>
    <!-- ... -->
    <!-- Code omitted for clarity -->
    <cac:TaxTotal>
        <cbc:TaxAmount currencyID="PLN">-9349.59</cbc:TaxAmount>
        <cac:TaxSubtotal>
            <cbc:TaxableAmount currencyID="PLN">-40650.41</cbc:TaxableAmount>
            <cbc:TaxAmount currencyID="PLN">-9349.59</cbc:TaxAmount>
            <cac:TaxCategory>
                <cbc:ID>VRBL:PL:01</cbc:ID>
                <cbc:Percent>23</cbc:Percent>
                <cac:TaxScheme>
                    <cbc:ID>VAT</cbc:ID>
                </cac:TaxScheme>
            </cac:TaxCategory>
        </cac:TaxSubtotal>
    </cac:TaxTotal>
    <cac:LegalMonetaryTotal>
        <ext:UBLExtensions>
            <ext:UBLExtension>
                <ext:ExtensionContent>
                    <vrbl:LegalMonetaryTotalExtension>
                        <!-- Collective Correction Discount Amount -->
                        <vrbl:TotalInvoiceAmount currencyID="PLN">-50000</vrbl:TotalInvoiceAmount>
                    </vrbl:LegalMonetaryTotalExtension>
                </ext:ExtensionContent>
            </ext:UBLExtension>
        </ext:UBLExtensions>
        <cbc:TaxExclusiveAmount currencyID="PLN">-40650.41</cbc:TaxExclusiveAmount>
        <!-- Collective Correction Discount Amount -->
        <cbc:TaxInclusiveAmount currencyID="PLN">-50000</cbc:TaxInclusiveAmount>
        <cbc:PayableAmount currencyID="PLN">-50000</cbc:PayableAmount>
    </cac:LegalMonetaryTotal>
    <!-- Syntactically required empty Invoice Line --> 
    <cac:InvoiceLine>
        <cbc:ID>1</cbc:ID>
        <cbc:LineExtensionAmount currencyID="PLN">0</cbc:LineExtensionAmount>
        <cac:Item/>
    </cac:InvoiceLine>
</ubl:Invoice>

Example: VRBL_FA3_AP-invoice-KSeF-number.xml

<ubl:Invoice>
  <ext:UBLExtensions>
    <ext:UBLExtension>
      <ext:ExtensionContent>
        <vrbl:InvoiceExtension>
          <vrbl:RoutingDetails>
            <vrbl:Sender>PL0000000000</vrbl:Sender>
            <vrbl:Receiver>GENERIC_PL_KSeF-FA_3p0</vrbl:Receiver>
          </vrbl:RoutingDetails>
        </vrbl:InvoiceExtension>
      </ext:ExtensionContent>
    </ext:UBLExtension>
  </ext:UBLExtensions>
  <cbc:CustomizationID>urn:vertexinc:vrbl:billing:1#Invoice#VRBL-Invoice-PL-B2B-3p0</cbc:CustomizationID>
  <cbc:ProfileID>urn:vertexinc:vrbl:billing:1</cbc:ProfileID>
  <cbc:ID>INV12345_accounting-invoice_01</cbc:ID>
  <cbc:UUID schemeID="VRBL:PL:NrKSeF">1812239201-20260201-020040C6388A-1B</cbc:UUID>
  <cbc:IssueDate>2025-03-20</cbc:IssueDate>
  <cbc:DueDate>2025-04-30</cbc:DueDate>
  <cbc:InvoiceTypeCode>751</cbc:InvoiceTypeCode>
  <cbc:Note>This is an invoice free-text</cbc:Note>
  <cbc:DocumentCurrencyCode>PLN</cbc:DocumentCurrencyCode>
  <cac:InvoicePeriod>
    <cbc:StartDate>2025-03-01</cbc:StartDate>
    <cbc:EndDate>2025-03-27</cbc:EndDate>
  </cac:InvoicePeriod>
  <cac:OrderReference>
    <cbc:ID>PO987654</cbc:ID>
    <cbc:IssueDate>2025-02-02</cbc:IssueDate>
  </cac:OrderReference>
  <cac:DespatchDocumentReference>
    <cbc:ID>DESP987654</cbc:ID>
  </cac:DespatchDocumentReference>
  <cac:ContractDocumentReference>
    <cbc:ID>CONTR9999</cbc:ID>
    <cbc:IssueDate>2025-02-02</cbc:IssueDate>
  </cac:ContractDocumentReference>
  <cac:AccountingSupplierParty>
    <cac:Party>
      <cac:PartyIdentification>
        <cbc:ID schemeID="VRBL:EORI">PL123456789012345</cbc:ID>
      </cac:PartyIdentification>
      <cac:PartyIdentification>
        <cbc:ID schemeID="VRBL:PL:REGON">999999999</cbc:ID>
      </cac:PartyIdentification>
      <cac:PartyIdentification>
        <cbc:ID schemeID="VRBL:PL:BDO">100099999</cbc:ID>
      </cac:PartyIdentification>
      <cac:PartyIdentification>
        <cbc:ID schemeID="VRBL:PL:TAX">6161234501</cbc:ID>
      </cac:PartyIdentification>
      <cac:PartyIdentification>
        <cbc:ID schemeID="0088">9506000140445</cbc:ID>
      </cac:PartyIdentification>
      <cac:PostalAddress>
        <cbc:StreetName>ul. Kwiatowa 1 m. 2</cbc:StreetName>
        <cbc:CityName>Warszawa</cbc:CityName>
        <cbc:PostalZone>00-001</cbc:PostalZone>
        <cac:Country>
          <cbc:IdentificationCode>PL</cbc:IdentificationCode>
        </cac:Country>
      </cac:PostalAddress>
      <cac:PartyTaxScheme>
        <cbc:CompanyID>PL6161234501</cbc:CompanyID>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:PartyTaxScheme>
      <cac:PartyLegalEntity>
        <cbc:RegistrationName>ABC AGD sp. z o. o.</cbc:RegistrationName>
        <cbc:CompanyID>0000099999</cbc:CompanyID>
      </cac:PartyLegalEntity>
      <cac:Contact>
        <cbc:Telephone>667444555</cbc:Telephone>
        <cbc:ElectronicMail>abc@abc.pl</cbc:ElectronicMail>
      </cac:Contact>
    </cac:Party>
  </cac:AccountingSupplierParty>
  <cac:AccountingCustomerParty>
    <cbc:SupplierAssignedAccountID>278011</cbc:SupplierAssignedAccountID>
    <cac:Party>
      <cac:PartyIdentification>
        <cbc:ID schemeID="VRBL:EORI">PL999456789054321</cbc:ID>
      </cac:PartyIdentification>
      <cac:PartyIdentification>
        <cbc:ID schemeID="0088">9506000140445</cbc:ID>
      </cac:PartyIdentification>
      <cac:PostalAddress>
        <cbc:StreetName>ul. Polna 1</cbc:StreetName>
        <cbc:CityName>Warszawa</cbc:CityName>
        <cbc:PostalZone>00-001</cbc:PostalZone>
        <cac:Country>
          <cbc:IdentificationCode>PL</cbc:IdentificationCode>
        </cac:Country>
      </cac:PostalAddress>
      <cac:PartyTaxScheme>
        <cbc:CompanyID>8251234567</cbc:CompanyID>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:PartyTaxScheme>
      <cac:PartyLegalEntity>
        <cbc:RegistrationName>F.H.U. Jan Kowalski</cbc:RegistrationName>
      </cac:PartyLegalEntity>
      <cac:Contact>
        <cbc:Telephone>555777999</cbc:Telephone>
        <cbc:ElectronicMail>jan@kowalski.pl</cbc:ElectronicMail>
      </cac:Contact>
    </cac:Party>
  </cac:AccountingCustomerParty>
  <cac:Delivery>
    <cbc:ActualDeliveryDate>2025-03-27</cbc:ActualDeliveryDate>
  </cac:Delivery>
  <cac:DeliveryTerms>
    <cbc:ID>DAP</cbc:ID>
  </cac:DeliveryTerms>
  <cac:PaymentMeans>
    <cbc:PaymentMeansCode>30</cbc:PaymentMeansCode>
    <cac:PayeeFinancialAccount>
      <cbc:ID>PL19124062471111000049743483</cbc:ID>
      <cac:FinancialInstitutionBranch>
        <cbc:ID>PKOPPLPWXXX</cbc:ID>
        <cbc:Name>BANK POLSKA KASA OPIEKI SA - BANK PEKAO SA</cbc:Name>
      </cac:FinancialInstitutionBranch>
    </cac:PayeeFinancialAccount>
  </cac:PaymentMeans>
  <cac:PaymentTerms>
    <cbc:Note>This is my payment terms note.</cbc:Note>
  </cac:PaymentTerms>
  <cac:PaymentTerms>
    <cbc:Note>Pay within 10 days and get a discount of 2% of the payable amount</cbc:Note>
    <cbc:SettlementDiscountPercent>2.00</cbc:SettlementDiscountPercent>
  </cac:PaymentTerms>
  <cac:TaxTotal>
    <cbc:TaxAmount currencyID="PLN">383.38</cbc:TaxAmount>
    <cac:TaxSubtotal>
      <cbc:TaxableAmount currencyID="PLN">1666.66</cbc:TaxableAmount>
      <cbc:TaxAmount currencyID="PLN">383.33</cbc:TaxAmount>
      <cac:TaxCategory>
        <cbc:ID>VRBL:PL:01</cbc:ID>
        <cbc:Percent>23.00</cbc:Percent>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:TaxCategory>
    </cac:TaxSubtotal>
    <cac:TaxSubtotal>
      <cbc:TaxableAmount currencyID="PLN">0.95</cbc:TaxableAmount>
      <cbc:TaxAmount currencyID="PLN">0.05</cbc:TaxAmount>
      <cac:TaxCategory>
        <cbc:ID>VRBL:PL:03</cbc:ID>
        <cbc:Percent>5.00</cbc:Percent>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:TaxCategory>
    </cac:TaxSubtotal>
  </cac:TaxTotal>
  <cac:LegalMonetaryTotal>
    <cbc:LineExtensionAmount currencyID="PLN">1667.61</cbc:LineExtensionAmount>
    <cbc:TaxExclusiveAmount currencyID="PLN">1667.61</cbc:TaxExclusiveAmount>
    <cbc:TaxInclusiveAmount currencyID="PLN">2050.99</cbc:TaxInclusiveAmount>
    <cbc:PayableRoundingAmount currencyID="PLN">0.01</cbc:PayableRoundingAmount>
    <cbc:PayableAmount currencyID="PLN">2051</cbc:PayableAmount>
  </cac:LegalMonetaryTotal>
  <cac:InvoiceLine>
    <cbc:ID>1</cbc:ID>
    <cbc:UUID>aaaa111133339990</cbc:UUID>
    <cbc:InvoicedQuantity unitCode="H87">1</cbc:InvoicedQuantity>
    <cbc:LineExtensionAmount currencyID="PLN">1626.01</cbc:LineExtensionAmount>
    <cac:Item>
      <cbc:Description>The article that we sold you</cbc:Description>
      <cbc:Name>lodówka Zimnotech mk1</cbc:Name>
      <cac:SellersItemIdentification>
        <cbc:ID>123SUP-NUM-777</cbc:ID>
      </cac:SellersItemIdentification>
      <cac:StandardItemIdentification>
        <cbc:ID schemeID="0160">1444444444447</cbc:ID>
      </cac:StandardItemIdentification>
      <cac:CommodityClassification>
        <cbc:ItemClassificationCode listID="VRBL:PL:PKWiU">01.11.74.0</cbc:ItemClassificationCode>
      </cac:CommodityClassification>
      <cac:ClassifiedTaxCategory>
        <cbc:ID>VRBL:PL:01</cbc:ID>
        <cbc:Percent>23.00</cbc:Percent>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:ClassifiedTaxCategory>
    </cac:Item>
    <cac:Price>
      <ext:UBLExtensions>
        <ext:UBLExtension>
          <ext:ExtensionContent>
            <vrbl:PriceExtension>
              <vrbl:PriceAmountBeforeAllowanceCharge currencyID="PLN">1726.01</vrbl:PriceAmountBeforeAllowanceCharge>
            </vrbl:PriceExtension>
          </ext:ExtensionContent>
        </ext:UBLExtension>
      </ext:UBLExtensions>
      <cbc:PriceAmount currencyID="PLN">1626.01</cbc:PriceAmount>
      <cac:AllowanceCharge>
        <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
        <cbc:MultiplierFactorNumeric>0.00</cbc:MultiplierFactorNumeric>
        <cbc:Amount currencyID="PLN">100.00</cbc:Amount>
        <cbc:BaseAmount currencyID="PLN">1726.01</cbc:BaseAmount>
      </cac:AllowanceCharge>
    </cac:Price>
  </cac:InvoiceLine>
  <cac:InvoiceLine>
    <cbc:ID>2</cbc:ID>
    <cbc:UUID>aaaa111133339991</cbc:UUID>
    <cbc:InvoicedQuantity unitCode="H87">1</cbc:InvoicedQuantity>
    <cbc:LineExtensionAmount currencyID="PLN">40.65</cbc:LineExtensionAmount>
    <cac:Item>
      <cbc:Description>freetext description</cbc:Description>
      <cbc:Name>wniesienie sprzętu</cbc:Name>
      <cac:ClassifiedTaxCategory>
        <cbc:ID>VRBL:PL:01</cbc:ID>
        <cbc:Percent>23.00</cbc:Percent>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:ClassifiedTaxCategory>
    </cac:Item>
    <cac:Price>
      <ext:UBLExtensions>
        <ext:UBLExtension>
          <ext:ExtensionContent>
            <vrbl:PriceExtension>
              <vrbl:PriceAmountBeforeAllowanceCharge currencyID="PLN">40.65</vrbl:PriceAmountBeforeAllowanceCharge>
            </vrbl:PriceExtension>
          </ext:ExtensionContent>
        </ext:UBLExtension>
      </ext:UBLExtensions>
      <cbc:PriceAmount currencyID="PLN">40.65</cbc:PriceAmount>
    </cac:Price>
  </cac:InvoiceLine>
  <cac:InvoiceLine>
    <cbc:ID>3</cbc:ID>
    <cbc:UUID>aaaa111133339992</cbc:UUID>
    <cbc:InvoicedQuantity unitCode="H87">1</cbc:InvoicedQuantity>
    <cbc:LineExtensionAmount currencyID="PLN">0.95</cbc:LineExtensionAmount>
    <cac:Item>
      <cbc:Description>freetext description</cbc:Description>
      <cbc:Name>promocja lodówka pełna mleka</cbc:Name>
      <cac:ClassifiedTaxCategory>
        <cbc:ID>VRBL:PL:03</cbc:ID>
        <cbc:Percent>5.00</cbc:Percent>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:ClassifiedTaxCategory>
    </cac:Item>
    <cac:Price>
      <ext:UBLExtensions>
        <ext:UBLExtension>
          <ext:ExtensionContent>
            <vrbl:PriceExtension>
              <vrbl:PriceAmountBeforeAllowanceCharge currencyID="PLN">0.95</vrbl:PriceAmountBeforeAllowanceCharge>
            </vrbl:PriceExtension>
          </ext:ExtensionContent>
        </ext:UBLExtension>
      </ext:UBLExtensions>
      <cbc:PriceAmount currencyID="PLN">0.95</cbc:PriceAmount>
    </cac:Price>
  </cac:InvoiceLine>
</ubl:Invoice>
Rules
Rule ID Error Message
VRBL-INV-PL-B2B-3-68 When the Document Currency Code is not PLN, the Tax Accounting Currency must exist within the Invoice.
VRBL-INV-PL-B2B-3-84 The Invoice expects a maximum of one Invoice Document Reference Correction Method. In case of collective correction, please use Correction Method within Invoice Extension instead.
VRBL-INV-PL-B2B-3-85 The Invoice expects a maximum of one Invoice Document Reference Correction Reason. In case of collective correction, please use Correction Reason within Invoice Extension instead.
VRBL-INV-PL-B2B-3-122 An Invoice must contain at most one Tax Subtotal where the Tax Subtotal Category Exemption Reason Code starts with "P_19" or at most one Seller Tax Party Tax Scheme Extension Exemption Reason Code.
VRBL-INV-CORE-4 The Specification Identifier must exist within the Invoice.
VRBL-INV-CORE-5 The Business Process Type must exist within the Invoice.
VRBL-INV-CORE-10 The Invoice Type Code must exist within the Invoice.
VRBL-INV-CORE-13 The Document Currency Code must exist within the Invoice.
VRBL-INV-CORE-563 The Tax Total Group is only allowed when using the currencies in Document Currency Code or Tax Accounting Currency.
VRBL-INV-CORE-36 The Invoice Number must be provided in the Invoice.
VRBL-INV-CORE-39 The Document Currency Code must be provided in the Invoice.
VRBL-INV-CORE-41 The Invoice Total Tax Amount and the Invoice Total Tax Amount in Tax Accounting Currency must all both positive, or all negative.
VRBL-INV-SYSTEM-1 If there is a value for Invoice Number, the allowed maximum number of characters is 300.
VRBL-INV-SYSTEM-2 If there is a value for Invoice Type Code, the allowed maximum number of characters is 100.
VRBL-INV-SYSTEM-3 If there is a value for Document Currency Code, the allowed maximum number of characters is 25.
VRBL-INV-SYSTEM-4 If there is a value for Buyer Accounting Reference, the allowed maximum number of characters is 500.
VRBL-INV-SYSTEM-5 If there is a value for Buyer Reference, the allowed maximum number of characters is 500.
VRBL-INV-SYSTEM-6 If there is a value for Seller Trading Name, the allowed maximum number of characters is 500.
VRBL-INV-SYSTEM-7 If there is a value for Seller Tax ID used as DUNS, the allowed maximum number of characters is 100.
VRBL-INV-SYSTEM-8 If there is a value for Seller Tax ID used as VAT ID, the allowed maximum number of characters is 100.
VRBL-INV-SYSTEM-9 If there is a value for Seller City, the allowed maximum number of characters is 200.
VRBL-INV-SYSTEM-10 If there is a value for Seller Country Code, the allowed maximum number of characters is 50.
VRBL-INV-SYSTEM-11 If there is a value for Seller Postal Zone, the allowed maximum number of characters is 100.
VRBL-INV-SYSTEM-12 If there is a value for Seller Name, the allowed maximum number of characters is 500.
VRBL-INV-SYSTEM-13 If there is a value for Seller Contact Point, the allowed maximum number of characters is 500.
VRBL-INV-SYSTEM-14 If there is a value for Seller Contact Telephone Number, the allowed maximum number of characters is 300.
VRBL-INV-SYSTEM-15 If there is a value for Seller Contact Email Address, the allowed maximum number of characters is 300.
VRBL-INV-SYSTEM-16 If there is a value for Seller Electronic Address, the allowed maximum number of characters is 100.
VRBL-INV-SYSTEM-17 If there is a value for Buyer Trading Name, the allowed maximum number of characters is 500.
VRBL-INV-SYSTEM-18 If there is a value for Buyer Tax ID used as DUNS, the allowed maximum number of characters is 100.
VRBL-INV-SYSTEM-19 If there is a value for Buyer Tax ID used as VAT ID, the allowed maximum number of characters is 100.
VRBL-INV-SYSTEM-20 If there is a value for Buyer City, the allowed maximum number of characters is 200.
VRBL-INV-SYSTEM-21 If there is a value for Buyer Country Code, the allowed maximum number of characters is 50.
VRBL-INV-SYSTEM-22 If there is a value for Buyer Postal Zone, the allowed maximum number of characters is 100.
VRBL-INV-SYSTEM-23 If there is a value for Buyer Name, the allowed maximum number of characters is 500.
VRBL-INV-SYSTEM-24 If there is a value for Buyer Contact Point, the allowed maximum number of characters is 500.
VRBL-INV-SYSTEM-25 If there is a value for Buyer Contact Email Address, the allowed maximum number of characters is 300.
VRBL-INV-SYSTEM-26 If there is a value for Buyer Contact Telephone Number, the allowed maximum number of characters is 300.
VRBL-INV-SYSTEM-27 If there is a value for Buyer Electronic Address, the allowed maximum number of characters is 100.
VRBL-INV-SYSTEM-28 If there is a value for Buyer Customer Party Name Group, the allowed maximum number of characters is 500.
VRBL-INV-SYSTEM-29 If there is a value for Buyer Customer Party Tax Company ID used as DUNS, the allowed maximum number of characters is 100.
VRBL-INV-SYSTEM-30 If there is a value for Buyer Customer Party Tax Company ID used as VAT ID, the allowed maximum number of characters is 100.
VRBL-INV-SYSTEM-31 If there is a value for Buyer Customer Party City Name, the allowed maximum number of characters is 200.
VRBL-INV-SYSTEM-32 If there is a value for Buyer Customer Party Country Identification Code, the allowed maximum number of characters is 50.
VRBL-INV-SYSTEM-33 If there is a value for Buyer Customer Party Postal Zone, the allowed maximum number of characters is 100.
VRBL-INV-SYSTEM-34 If there is a value for Buyer Customer Party Legal Entity Registration Name, the allowed maximum number of characters is 500.
VRBL-INV-SYSTEM-35 If there is a value for Buyer Customer Party Contact Name, the allowed maximum number of characters is 500.
VRBL-INV-SYSTEM-36 If there is a value for Buyer Customer Party Contact Electronic Mail, the allowed maximum number of characters is 300.
VRBL-INV-SYSTEM-37 If there is a value for Buyer Customer Party Contact Telephone, the allowed maximum number of characters is 300.
VRBL-INV-SYSTEM-38 If there is a value for Buyer Customer Party Endpoint ID, the allowed maximum number of characters is 100.
VRBL-INV-SYSTEM-39 If there is a value for Tax Subtotal Taxable Amount Currency Code, the allowed maximum number of characters is 25.
VRBL-INV-SYSTEM-40 If there is a value for Total Tax Amount Currency Code, the allowed maximum number of characters is 25.
VRBL-INV-SYSTEM-41 If there is a value for Tax Subtotal Category ID, the allowed maximum number of characters is 50.
VRBL-INV-SYSTEM-42 If there is a value for Legal Monetary Total Line Extension Amount Currency Code, the allowed maximum number of characters is 25.
VRBL-INV-SYSTEM-43 If there is a value for Legal Monetary Total Tax Exclusive Amount Currency Code, the allowed maximum number of characters is 25.
VRBL-INV-SYSTEM-44 If there is a value for Legal Monetary Total Tax Inclusive Amount Currency Code, the allowed maximum number of characters is 25.
VRBL-INV-SYSTEM-45 If there is a value for Legal Monetary Total Payable Amount Currency Code, the allowed maximum number of characters is 25.
VRBL-INV-SYSTEM-46 If there is a value for Delivery Location City, the allowed maximum number of characters is 200.
VRBL-INV-SYSTEM-47 If there is a value for Delivery Location Postal Zone, the allowed maximum number of characters is 100.
VRBL-INV-SYSTEM-48 If there is a value for Delivery Location Country Code, the allowed maximum number of characters is 50.
VRBL-INV-SYSTEM-49 If there is a value for Delivery Party Name, the allowed maximum number of characters is 500.
VRBL-INV-SYSTEM-50 If there is a value for Payment Means Type Code, the allowed maximum number of characters is 25.
VRBL-INV-SYSTEM-51 If there is a value for Payment Account ID, the allowed maximum number of characters is 100.
VRBL-INV-SYSTEM-52 If there is a value for Payment Account Name, the allowed maximum number of characters is 500.
VRBL-INV-SYSTEM-53 If there is a value for Payment Service Provider ID, the allowed maximum number of characters is 500.
VRBL-INV-SYSTEM-54 If there is a value for Purchase Order Reference ID, the allowed maximum number of characters is 300.
VRBL-INV-SYSTEM-55 If there is a value for Sales Order Reference ID, the allowed maximum number of characters is 300.