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.
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 issue year, 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 issue year 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 2 Chained
Upo Archive Chain Register
Update date: 2026-07-02