EUDR Due Diligence
The video below shows EUDR Due Diligence running on a real Odoo 19 database. Want it driven against your own data, or a question answered first? Ask and we will set up a session.
REGULATION (EU) 2023/1115 • APPLIES TO LARGE OPERATORS SINCE 30 DEC 2025
What it does
EUDR compliance in Odoo, without the spreadsheet
Record the plots of land behind every lot of coffee, cocoa, soya, rubber, palm, cattle or wood. Check the coordinates, the hectare threshold and the boundary before a container is cleared to leave.
the Article 2(28) point-or-boundary threshold
commodities: coffee, cocoa, soya, palm, rubber, cattle, wood
a latitude past this is lat/long entered backwards
refuse the despatch, record the gap, or do not check
The coordinates are always the missing part
Odoo knows the commodity and the quantity already. It has nowhere to put the plot — so the plot lives in a supplier's spreadsheet, and the day it is needed is the day the container is loaded. The rows below are the app's own screen.
Every gap is named, not counted. An oversized plot carrying only a point says so. A latitude past 90 — the signature of lat and long entered the wrong way round — is caught on save, not at customs.
Kept outside Odoo
Disconnected — agronomist coordinates sit in emails, shared folders and CSVs outside Odoo.
Found on loading day — the despatch team goes looking for a plot reference while the lorry waits.
Silently swapped axes — a latitude written as a longitude is invisible until a declarant rejects it.
All or nothing — a hard block on incomplete data stops goods that had nothing wrong with them.
Result: the data is assembled by hand, on the day it is least available.
Held in the module
Entered once — a plot carries supplier, country, commodity, area, coordinates and period.
Lots point at plots — a farm is entered once and every lot off it refers back.
Checked on save — the four-hectare rule and the coordinate range, before anything ships.
A gate you set — refuse the despatch, record the gap, or do not check. Receipts never block.
Result: a due diligence statement assembled from data Odoo already holds.
The four-hectare rule, built in
Article 2(28) allows a single point for a plot of four hectares or less and asks for the boundary above that — except cattle, where the geolocation is of the establishment, not a field. An oversized plot with only a point is reported incomplete; a cattle establishment of any size is not.
Inverted coordinate detection
A latitude past 90 is the signature of latitude and longitude entered the wrong way round, which is the commonest way this data arrives broken. It is caught when the plot is saved.
A despatch gate at a strength you choose
Refuse the despatch outright, let it through with the gap recorded on the transfer, or do not check at all. The default records it — a rule that halts the warehouse on day one gets switched off on day two.
What this app does
✓ Hold plots: supplier, country, commodity, area, coordinates or boundary, production period
✓ Link lots and serial numbers to the plots they came off
✓ Mark products as one of the seven Annex I commodities
✓ Check a plot against the four-hectare rule and its coordinates for range
✓ Assemble, per delivery, the content a statement needs, and name every gap
✓ Record or refuse a despatch that cannot be traced to a plot
One container held at the port, against $69 once
Demurrage at the large EU container ports runs into the hundreds per container per day, and an inspection hold adds administrative cost on top. The figures vary by port and contract, so check your own — this module is a one-off licence with no per-transaction fee.
The plot register, and a delivery checked line by line — which lots trace to a complete plot, and for the ones that do not, whether the problem is a missing plot, an incomplete one, or a product with no lot tracking at all.
Whether your products could carry plot data at all.
Records whose company conflicts with their links.
Four audits for what your database accumulates.
Who can actually read, write and delete what.
What it does not do
— File anything. Statements go to the Commission's own system; this produces the content
— Tell you whether the land was deforested — that is a satellite question, and answering it from an ERP would be a guess dressed as a finding
— Classify countries by risk. The benchmarking is amended, and a frozen copy would be worse than none
— Ship an Annex I code list, for the same reason. Your HS code is quoted as you entered it
— Verify that a boundary is where its coordinates say it is
Before you buy: needs Odoo 19 Community or Enterprise with Inventory and Purchase. Products in scope have to be tracked by lot or serial number — without that there is nothing to attach a plot to, and the app says so rather than reporting a gap it cannot explain.
Screenshots


Requirements
- Odoo 19.0, Community or Enterprise.
- Odoo.sh or On-Premise only. Third-party apps cannot be installed on Odoo Online (SaaS) databases — check your hosting before buying.
- Module
mh_eudr_diligence, version 19.0.1.0.15, licensed OPL-1.
Related apps
Inventory valuation for any period: opening stock, received, issued and closing value, per product.
Age your inventory into buckets by how long it has sat unsold, with the capital tied up in each, per warehouse and category
Check every reordering rule against what the product has actually consumed: which minimums will stock out over the lead time, and which maximums are hoarding cash