UPO in KSeF — what the official receipt confirmation is
UPO (the official receipt confirmation) confirms that KSeF accepted your invoice and assigned it a KSeF number — formal proof that the invoice was issued. The KSeF number identifies the invoice (art. 2 pkt 32a); UPO proves it was submitted. Without a UPO, the invoice was not issued.
When you send an invoice to KSeF, you get back two things: a KSeF number and a UPO. The UPO — urzędowe poświadczenie odbioru, the official receipt confirmation — confirms that the submission to KSeF succeeded and that the invoice was issued once a KSeF number was assigned. It's the formal proof of acceptance, the equivalent of a delivery receipt.
What is a UPO?
A UPO is the official receipt confirmation — the message KSeF uses to confirm that it accepted your invoice and assigned it a KSeF number. It's formal proof that you met your obligation to issue the invoice. Without a UPO, the invoice was not issued — at best it's still processing, or it was rejected.
KSeF number vs UPO — they're not the same thing
- KSeF number — identifies the invoice in the system (art. 2 pkt 32a of the VAT Act). What you submitted.
- UPO — confirmation that the submission succeeded. Proof that you submitted.
Both matter: the number identifies the document, the UPO proves it was accepted at a specific time.
Why the moment of submission matters
In KSeF, the issue date of an invoice is the date you send it to the system (art. 106na ust. 1 of the VAT Act) — not the date you type into the document itself. That's why the UPO and the timestamp it carries are so important: they fix the moment you formally issued the invoice.
Why keep the UPO
The UPO is your protection in a dispute or an audit. It shows that the invoice reached KSeF, and when. Without it, proving you met your obligation is hard. So:
- Archive the UPO together with the invoice.
- Keep it in a form you can reproduce (signed XML).
- Best of all, use a tool that saves the UPO automatically — no manual downloads.
What if an invoice is rejected
After submission, an invoice moves through these states: sent → processing → accepted or rejected. If the document has an error, it ends up rejected — and then you don't get a UPO, only a rejection code. That's the signal that the invoice was not issued and needs to be fixed and resubmitted. The UPO only appears once a KSeF number has been assigned.
UPO in practice — automation
In KSeF Kit, once an invoice is accepted, the KSeF number and UPO are written back onto the invoice in Stripe, and you can download the confirmations in bulk as a ZIP — ready-made proof for your accountant. See how to issue an invoice and KOR corrections.