EPR Packaging Compliance — registration numbers by country and their validity, German Systembeteiligung, packaging materials weighed per product, calculated tonnages, and a refusal to place products on the market in a country without valid coverage. VerpackDG: the LUCID number alone does not make you compliant. Now checks the unique identifier against ADEME's SYDEREP register in open data: a dated verdict, with its source, and clean graceful degradation.
Overview
Packaging EPR — DYONYSOS
App for producers, importers and distance sellers subject to extended producer responsibility (EPR), on Odoo 19 Community.
Also searched as: packaging EPR software, LUCID number, VerpackDG, Systembeteiligung, ZSVR Zentrale Stelle Verpackungsregister, PPWR Regulation (EU) 2025/40, ADEME unique identifier, SYDEREP, PRO tonnage declaration, extended producer responsibility, EPR packaging compliance, Amazon listings deactivated for packaging.
The point that makes the difference
Extended producer responsibility requires anyone placing packaging on a market to register there, obtain a registration number and declare their tonnages. In France, the producer receives a unique identifier issued by the administrative authority — in practice ADEME, via the SYDEREP registry (French Environmental Code, art. L541-10-13, applicable since January 1, 2022; the principle of the EPR scheme is set out in art. L541-10 et seq.).
In Germany, there are two obligations, not one. Since August 12, 2026, the VerpackDG — the German law implementing Regulation (EU) 2025/40 — has replaced the Packaging Act. It requires registration in the LUCID register with the Zentrale Stelle Verpackungsregister (§ 6 VerpackDG) and participation in a system, the Systembeteiligung (§ 7(1) VerpackDG). § 13 VerpackDG prohibits making products available on the market for anyone who fails to meet either one (paragraphs 1 and 3).
A LUCID number alone does not make you compliant. This is the costly mistake, and the module makes it impossible: it refuses placing products on the German market until participation in a system is filled in, exactly as it refuses without a number.
For marketplaces, § 13(4) VerpackDG refers to Art. 30(1)(d) of Regulation (EU) 2022/2065 (DSA) and to Art. 45(4) of Regulation (EU) 2025/40. As for the practical consequences, on June 15, 2022 Amazon announced on its German Seller Central that it would deactivate listings from unregistered sellers: an announcement that predates the VerpackDG, based on the law then in force, to be rechecked with your marketplace. The risk is nonetheless of a different nature than a fine processed eighteen months later: a stop on sales, on what is the primary channel for many sellers.
What the module refuses
Confirming a placement on the market in a country not covered by any valid number on the date of placement on the market — not today's date: a product shipped in March under a number obtained in June was not covered when it left, and that is the date an inspection looks at. For Germany, the message spells out the LUCID issue in plain terms, citing the text in force.
Confirming a placement on the German market under a valid LUCID number but without participation in a system covering the date. This is a separate refusal, with its own message: § 7(1) VerpackDG is an obligation in its own right, and § 13 closes the market both to those who fail to meet it and to those who are not registered.
Confirming a placement on the market for a product with no weighed packaging component: the line would declare zero tonnage, and an empty declaration creates the illusion of compliance.
Validating a return whose registration does not cover the end of the reported period: a return is filed under a number, and without a number it has no basis.
Validating a return that carries no tonnage.
Recording a filing without the reference returned by the producer responsibility organization or the register: it is the only proof that the declaration was sent.
Grams, not kilos
The declaration covers tonnages by material, never products. A seller who knows its shipped quantities but not the weight of each packaging component will have to weigh samples of its entire catalog by hand, often in a rush.
The module therefore asks, once and for all, for the packaging breakdown of each product: box, cushioning, film, label — each with its material, its role and its unit weight in grams. A label weighs 0.4 g; entered in kilograms it becomes 0.0004 and disappears in rounding, yet across one hundred thousand units it weighs forty kilos — and that is a line in the declaration. Tonnage is then calculated automatically.
It checks the unique identifier against ADEME's SYDEREP register
The module now queries ADEME's SYDEREP registry as open data — dataset “REP — Liste des producteurs enregistrés dans SYDEREP avec leur identifiant unique” (EPR — list of producers registered in SYDEREP with their unique identifier), listed on data.gouv.fr, served by https://data.ademe.fr/data-fair/api/v1/datasets/rep-producteurs-idu/, open and requiring no access key (301,972 rows as of September 14, 2026, with daily updates announced). It returns a dated verdict that cites its source: whether the unique identifier appears in the registry, under whose name, for which EPR schemes and which approval categories.
What the register does not publish: any validity date. No start, no end, no status. The module will therefore never say that a unique identifier “has expired”: it does not know, and nobody tells it. It says whether or not the identifier appears in the register, as of the date it checked. The only expiry that exists here is that of its own answer.
Nor does it claim that you must verify. Art. L541-10-9 of the code de l'environnement requires the seller to collect the unique identifier and record it in a register (art. R541-167), with due diligence as to consistency; it does not require verification against the national register, and the FAQ of the Direction générale de la prévention des risques (French directorate-general for risk prevention) specifies that no checking frequency is set. This lookup is an aid to due diligence, not the fulfillment of an obligation to verify.
The register is French. For other countries — Germany first and foremost — no open register has been verified: the module queries nothing and says so on the record, rather than querying a random address. LUCID registration and participation in a system are still entered and documented by hand.
A chain of sources, and the expiry date only you know. The registry publishes no validity date and covers only France. Sources are therefore ordered: the registry first — verdict verified at source —, then the certificate entered on the record — verdict declared. Enter the expiry date in “Valid until” and the module combines the two without mixing them up: “listed in the registry, declared expiry date passed”. That is the verdict it could not deliver before. Outside France, it likewise returns a declared verdict rather than an empty screen.
And provenance is visible everywhere — record, list, filters, grouping and exports. A manually entered value is never presented as verified, and a verified verdict is never overwritten by declared data.
The module records findings; it does not draw conclusions. “Not found in the register” means the register publishes nothing under that identifier on that date — not that the supplier is at fault. A recent registration may not appear there yet.
Graceful degradation is the serious part. Register unreachable, quota exceeded, unexpected format: the module says so, keeps the last known response with its date, and never blocks data entry or placing a product on the market. Lookups never run on screen: the button queues the request, a scheduled action makes the call.
No stream mapping is invented. The register publishes codes — EMPAP, PAP, EPRO, EEE, TLC, EA, BAT, PMCB, ABJ, JOUET, ASL, PNEU, PCHIM, LUB, TSUU, MNU, BPS, VEHICULE, DISP_MED, TABAC — whose mapping to the module's EPR streams is published nowhere. Stream matching therefore only happens if you enter the expected code yourself.
What the module does not do
It registers nowhere and issues no number. It reads ADEME's SYDEREP register; it does not write to it, files no declaration and writes to no producer responsibility organization. And it never says that an identifier is valid: the register publishes no validity date.
It calculates no eco-contribution. The scales are specific to each eco-organization (producer responsibility organization), they include bonuses and penalties that change every year, and a wrong invoice is worse than no invoice. The module produces the tonnages; the rate stays with your eco-organization.
It does not tell you which countries apply to you, or which product stream falls under which producer responsibility organization: these rules are national, they change, and a wrong answer in a compliance module is worse than no answer.
It does not handle invoicing, logistics or the sales catalog: it keeps its own product list, because packaging data is compliance data.
Two roles
Operator: describes the products and weighs their packaging, enters the quantities placed on the market. Compliance manager: maintains the registration numbers by country and their validity, calculates and validates the tonnage declarations, records the filings.
Legal bases, kept as data
The legal references the module applies are not hard-coded: they are records, viewable and editable under “Legal Bases”. The day a text changes — as Germany has just demonstrated — it is corrected on a record.
France: Environmental Code (code de l'environnement), art. L541-10 et seq. (principle of the EPR scheme), art. L541-10-13 (unique identifier issued by the administrative authority — in practice ADEME, via SYDEREP; art. R541-173 is complementary; applicable since January 1, 2022), art. L541-10-9 together with art. R541-167 for the collection of the unique identifier and its recording in a register, with a due-diligence duty on the consistency of its format. This is not an obligation to verify the identifier against the national register, and no inspection frequency is set: the module therefore imposes none.
Germany: § 6 VerpackDG (registration in the LUCID register with the Zentrale Stelle Verpackungsregister, the competent authority for the register under Art. 44 of Regulation (EU) 2025/40), § 7(1) VerpackDG (participation in a scheme), § 13 VerpackDG (bans on making available on the market), § 13(4) VerpackDG referring to Art. 30(1)(d) of Regulation (EU) 2022/2065 (DSA) and to Art. 45(4) of Regulation (EU) 2025/40.
What the module does not say, and why: it does not date the former German packaging law — the text has been removed from the official collection and its date has not been established from a primary source; it does not cite the official gazette reference of the VerpackDG, which needs rechecking; it does not date the marketplace obligation under the former regime; and it presents Amazon's June 15, 2022 announcement for what it is — a 2022 document, based on a text since replaced. It cites neither fee schedules nor eco-contributions: these change, and a compliance module that cited them wrongly would be worse than one that does not cite them at all.
Specifications
| Price | €199 excl. VAT |
|---|---|
| License | OPL-1 |
| Odoo series | 19.0: published on the Odoo Apps Store; 20.0: published on the Odoo Apps Store |
| Version | 1.1.0 |
| Edition | Odoo Community / on-premise |
| Technical name | dyo_epr_emballages |
| Domain | Industries and services |
Price excluding VAT as displayed on the Odoo Apps Store; purchase and installation are done on the Store or through your Omnifloo instance.