| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Invoicing (account) |
| Community Apps Dependencies | Show |
| Lines of code | 4034 |
| Technical Name |
l10n_pl_ksef_upo_archive |
| License | OPL-1 |
| Website | https://gencbaris.com/odoo_plugins/ |
| Versions | 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Invoicing (account) |
| Community Apps Dependencies | Show |
| Lines of code | 4034 |
| Technical Name |
l10n_pl_ksef_upo_archive |
| License | OPL-1 |
| Website | https://gencbaris.com/odoo_plugins/ |
| Versions | 18.0 19.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.
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
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module