How to Add an Attachment to a KSeF Invoice?
An attachment to a e-invoice in KSeF is XML data within the Zalacznik element of schema FA(3), rather than a PDF document. Taxpayers must submit the ZGL_ZAL form in e-Urząd Skarbowy and wait up to 3 working days for confirmation before issuing such invoices. Sending invoices with attachments requires batch sessions and software integrated with the KSeF API.

Last updated: 13 November 2026
A KSeF invoice attachment is not a PDF or a scan. KSeF is Poland's national e-invoicing system, and an attachment there is an extra block of XML data inside the invoice itself (the Zalacznik element of the FA(3) schema). You can use it only after notifying KAS, Poland's National Revenue Administration, in the e-Urząd Skarbowy portal (e-US); without that, the gateway rejects the invoice.
Most small businesses will never need it: the law allows an attachment only for complex quantity, unit or price data, such as utilities, telecoms and fuel. If that is you, file early. The Ministry of Finance (MF) takes up to 3 working days, and from 1 January 2027 the transitional period for businesses with monthly sales up to PLN 10,000 gross ends. Penalties for KSeF errors are set to be deferred to 31 December 2027 (the Sejm has passed the bill, the Senate is next), but the obligation itself stays.
Below: when it makes sense, how to file ZGL_ZAL, and what your invoicing software should handle.
What a KSeF invoice attachment is, and what it is not
According to the MF's KSeF 2.0 handbook, the attachment is an integral part of the structured invoice. That is why you cannot upload a separate PDF, JPG or Excel sheet to KSeF. Contracts, offers, delivery protocols and price lists still travel outside KSeF, however you agree it with the customer.
What the rules say:
Format: structured data in XML, inside the
Zalacznikelement. It works only in the FA(3) schema (the current invoice XML format), not in FA_RR (VAT RR invoices for farmers).Quantity: one
Zalacznikelement per invoice, but it may hold several data blocks.Legal basis: Article 106gba(1) of the VAT Act allows an attachment for transactions with complex data on quantities, units of measure or net unit price.
Content: only data covered by Article 106e(1) of the VAT Act, or data closely tied to it. The MF explicitly excludes marketing material, contracts, acceptance protocols and price lists.
An illustrative example: a Polish subsidiary of a logistics group re-invoices fuel for 25 trucks. The invoice has one line, "fuel, October", and the attachment breaks it down per vehicle: quantity, unit and net price for each. That is exactly what the attachment was designed for. A software-services invoice with a signed acceptance protocol in PDF is not.
"KAS approval" is actually a notification
People say "KAS consent", but formally it is a notification of intent to issue and send invoices with attachments to KSeF. The MF's own page calls it a notification, and the MF's Q&A states that a correctly filed notification cannot be rejected (a collection of MF answers republished on podatki.biz). In practice it behaves like a permission: until you get the confirmation e-mail, the KSeF API will not accept such an invoice.
The key rules:
Who files: for a JDG (a sole proprietorship), you do, as a natural person. For a company, the organisation account user (UKO).
Where: only in e-Urząd Skarbowy. Not in the KSeF Taxpayer Application, not in your invoicing program, not on paper.
What it covers: issuing invoices with attachments. Receiving them requires no formalities.
In the notification you declare that your transactions meet the conditions of Article 106gba. That assessment is yours. I am a software founder, not an accountant, and I do not judge individual cases: if you are unsure whether your invoices qualify, ask a Polish tax adviser.
How to file ZGL_ZAL in e-Urząd Skarbowy
The MF's instruction is short. The form has been available since 1 January 2026. The portal is in Polish, so the menu names are given below with translations.
Log in to e-Urząd Skarbowy (urzadskarbowy.gov.pl).
In the side menu choose "Deklaracje" (Declarations), then "Złóż e-Deklarację" (File an e-Declaration).
Type "KSEF" in the search box.
Select the ZGL_ZAL form. Do not send the notification as a "pismo ogólne" (general letter); the MF says it must go through this form.
Fill in the form, submit it and download the UPO (Urzędowe Poświadczenie Odbioru, the official receipt confirmation).
Wait for e-mails at the address you entered: first a status update, then confirmation that the notification was completed.
Per the MF handbook, the form asks for your NIP (Polish tax ID), name, e-mail address, a declaration that the conditions are met, the type of transactions, a planned start date (informational only), the expected average number of such invoices per month and their average size in kB. The permission has no expiry date.
Two things people mix up. First, the UPO is not the approval: it only confirms the notification was received. Second, notifications are handled in order of receipt, within up to 3 working days, so do not plan your first attachment invoice for the day after you submit.
Sending a KSeF invoice attachment: technical limits
Once you have the permission, some technical constraints remain:
Batch sessions only. Invoices with attachments are sent only in a batch session. The one exception is a technical correction of an XML file in offline mode.
3 MB limit. That is the maximum size of the invoice XML including the attachment.
One UPO. The attachment has no receipt of its own; one UPO covers the whole file.
Errors are fixed with a correction invoice. The correction must include the attachment too.
The free MF tools cannot issue these invoices. The KSeF Taxpayer Application, the mobile app and e-mikrofirma can display the attachment and let you download the invoice, but cannot create one. You need software integrated with the KSeF API.
In our tests on the KSeF test environment, the same invoice with an attachment, sent in an interactive session, got this response:
HTTP 415 Brak możliwości wysyłania faktury z załącznikiem
The identical document passed in a batch session (measured on 10 September 2026). It is a good illustration of why the choice of sending mode should be the software's job, not yours.
If you stop using attachments, the permission ends after you file ZGL_ZAP (Article 106gba(8)). Do not file it if you may still need to issue corrections to old invoices with attachments: the MF warns in its Q&A (question 88) that you would lose that ability. The head of KAS can also withdraw the permission if the attachment contains disallowed data or if you move data out of required FA(3) fields into it.
What your invoicing software should do for you
Nobody can file the notification for you: the MF accepts it only in e-US, from the taxpayer. Everything else about a KSeF invoice attachment is the software's job:
build an FA(3) invoice with a valid
Zalacznikelement,check that you hold the permission before sending anything,
pick the batch session,
fetch the UPO and store the KSeF number.
Biurko already does part of this. Before sending, we check whether the company has the attachment permission and say so plainly instead of waiting for a gateway error. An invoice with an attachment is routed automatically to a batch session with a single invoice, because KSeF requires it, and we collect the session's UPO. We cannot file ZGL_ZAL for you, but we know when it is missing. The interface is available in English, Polish and Ukrainian.
Checklist before your first KSeF invoice attachment
Confirm that your transactions have complex quantity, unit or net price data. If not, the attachment is not for you.
File ZGL_ZAL in e-US at least a week before the first planned invoice.
Keep the UPO, but wait for the completion e-mail.
Make sure your software is integrated with the KSeF API and sends attachment invoices in batch sessions.
Put only Article 106e(1) data (or closely related data) in the attachment. Send contracts and price lists outside KSeF.
Watch the 3 MB limit on the XML file.
Do not file ZGL_ZAP if you might still need corrections to invoices with attachments.
Summary
A KSeF invoice attachment is a narrow, optional feature: XML data, available after the ZGL_ZAL notification and only for complex quantity and price data. If your invoices fit the standard FA(3) fields, you file nothing. You file the notification yourself in e-US, the answer comes within 3 working days, and the rest (XML, batch session, UPO) should be handled by your software. If you are choosing a tool for 2027, test it on exactly this. You can try Biurko free for 14 days at biurko.io.
FAQ
Can I attach a PDF to an invoice in KSeF?
No. The attachment in KSeF is part of the invoice XML file, and separate files such as PDF, JPG or XLS are not accepted. Contracts, protocols and price lists go outside KSeF, in whatever way you agree with the customer, for example by e-mail. In FA(3) you can add only structured data in the Zalacznik element.
How long does KAS approval for an attachment take?
The MF handles the ZGL_ZAL notification in order of receipt, within a maximum of 3 working days. You receive two e-mails: a status update and a completion notice. Only after the second can you send invoices with attachments. The UPO from e-US only confirms that the notification was received, not that the permission was granted.
Do I need to file a notification to receive an invoice with an attachment?
No. The notification applies only to issuing invoices with attachments. Receiving them in KSeF requires no extra formalities. The free MF tools can display such invoices and let you download them, but they cannot issue them, and the KSeF mobile app shows a notice that the invoice contains an attachment.
What is the size limit for a KSeF invoice with an attachment?
The invoice XML with an attachment can be up to 3 MB. One invoice has one Zalacznik element, though it may contain several data blocks. Invoices with attachments go only through batch sessions, and a single UPO covers the whole file, with no separate receipt for the attachment.
Can I file ZGL_ZAL through my invoicing software or the KSeF Taxpayer Application?
No. The notification is filed only in e-Urząd Skarbowy, through the taxpayer's account: for a sole proprietorship by the individual, for a company by the organisation account user (UKO). It is not accepted on paper, in the KSeF Taxpayer Application, or via accounting software integrated with KSeF.
This article is for information only and is not tax advice. For your specific case, consult a Polish tax adviser.
Tags
Previous article
How to issue a KSeF invoice correction without errors?