Skip to content
PokutsoftPokutsoft
GlobalLocalization/Poland
Poland KSeF UPO Archive icon

Poland KSeF UPO Archive

Tamper-evident KSeF UPO confirmation archive: hash-chained storage, statutory retention, verifiable bulk export

Odoo 20.0Odoo 19.0Odoo 18.0

Poland KSeF UPO Archive

Tamper-evident UPO storage · Hash chain · Statutory retention · Verifiable bulk export

Keep every Poland KSeF acceptance confirmation (UPO — Urzędowe Poświadczenie Odbioru) in a tamper-evident, append-only archive that you can prove intact to the tax authority years later. Built on the Poland KSeF e-Invoice connector. Compatible with Odoo 18, 19 & 20.

Why an archive, not just a field

Polish tax law requires the UPO to be retained for the statutory period (generally 5 years from the end of the year in which the VAT falls due, art. 70 Ordynacja podatkowa) and produced on demand. A retention archive is only credible if it can demonstrate that nothing was silently altered or deleted.

Hash-chained storage

Each accepted invoice's UPO is sealed into a per-company SHA-256 hash chain: every entry hashes its own canonical body together with the previous entry's hash. Recomputing the chain proves the archive is intact — altering or removing any historical UPO breaks every digest from that point forward.

Append-only & immutable

Once sealed, an entry's chained content cannot be edited and the record cannot be deleted outside the guarded retention-disposal flow. The archive grows; it never quietly shrinks.

Automatic capture

UPOs are archived the moment a KSeF invoice reaches the accepted state, idempotently. A back-fill cron seals confirmations cleared before install, and a manual Archive UPO button is available per invoice.

Statutory retention

Every entry carries a retention deadline computed from the end of the year in which the VAT falls due (January of the next year for October to December supplies) plus a configurable horizon. Entries are flagged active, expiring soon or disposable, and only entries past their deadline can be disposed.

Verifiable bulk export

Produce an auditor-ready bundle for any period: a CSV manifest, a JSON manifest carrying a bundle-level digest, and a ZIP embedding every stored UPO. The export is reproducible — byte-identical for the same data — and refuses to run on a tampered chain.

Built on the e-Invoice Core Engine

Reuses the shared engine's document model, profile and security groups and the Poland KSeF connector's clearance flow rather than duplicating them. Stores and exports data already in your database — it transmits nothing to any external service.

Screenshots

Upo Archive Entry 1 Hash Cha

Upo Archive Entry 1 Hash Cha

Upo Archive Entry 2 Chained

Upo Archive Entry 2 Chained

Upo Archive Chain Register

Upo Archive Chain Register

Update date: 2026-09-26

User guides (PDF)

Related modules