Poland KSF: Correction Invoices (FA(3))
This scenario explains how to model correction invoices.
In Poland KSeF FA(3) there are multiple invoice correction scenarios.
- Correction of transactional data in an Invoice
- Correction of party master data in an Invoice
- Collective Correction Invoice
Correction of transactional data in an invoice
This correction type applies to correction of amounts, prices, quantities and taxes.
As mentioned in the Invoice Type Code section use the Invoice Type Code 384 to indicate the correction.
Additionally use the corresponding correction type which must be specified in the Invoice Subtype Code section, refer to the Original Invoice and provide Correction Method and Reason. See Preceding Invoice Reference.
| Scenario | Invoice Type Code | Invoice Sub Type Code |
|---|---|---|
| Correction of transactional data in an Invoice | 384 | VRBL:PL:KOR |
- Contains min. one Invoice Line
cac:InvoiceLine - References related Original Invoice
cac:BillingReference/cac:InvoiceDocumentReference - Provides Correction Method
vrbl:CorrectionMethodand Correction Reasonvrbl:CorrectionReasonwithincac:BillingReference/cac:InvoiceDocumentReference
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>
Correction methods
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.
As mentioned in the Invoice Type Code section in this case use the Invoice Type Code 384 to indicate the correction.
Additionally use the corresponding correction type which must be specified in the Invoice Subtype Code section
| Scenario | Invoice Type Code | Invoice Sub Type Code | Specifics |
|---|---|---|---|
| Correction of party master data in an invoice | 384 | VRBL:PL:KOR | - References related Original Invoice cac:BillingReference/cac:InvoiceDocumentReference. - Provides Correction Method vrbl:CorrectionMethod and Correction Reason vrbl:CorrectionReason. - Provides the party master data before correction vrbl:CorrectionData/vrbl:BeforeCorrection. - Provides a syntactically required empty Invoice Line cbc:InvoiceLine. - No tax totals. - Document totals contain zero values. |
- In order to correct wrong party data provide the corrected data in the corresponding party group (Seller:
cac:AccountingSupplierParty, Buyer:cac:AccountingCustomerParty. Other Party:vrbl:AdditionalParty). - Still the original wrong data must be provided in the Correction Data Extension of the Preceding Invoice Reference section.
See Before Correction Extension 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:InvoiceLinemust 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.
As mentioned in the Invoice Type Code section in this case use the Invoice Type Code 384 to indicate the correction.
Additionally use the corresponding correction type which must be specified in the Invoice Subtype Code section
| Scenario | Invoice Type Code | Invoice Sub Type Code |
|---|---|---|
| Collective Correction Invoice | 384 | VRBL:PL:KOR |
- 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. See Document Level Correction Data for reference.
The tax total of the correction amount and the amount itself must be provided. - Add an empty Invoice Line
cac:InvoiceLine. This is required by the UBL 2.4 Syntax. - Document totals contains total invoice and payable amount.
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>
Updated about 10 hours ago
