Belgian company data in Odoo: how the Bizzy integration matches, pushes and completes records
Tips
The short answer
Yes, a tool can enrich the companies in Odoo on their VAT number, and this is how the Bizzy integration for Odoo does it. Every Belgian company has one stable identifier, the enterprise number, which is also its VAT number, and Bizzy carries that number on every company record. You connect Bizzy to Odoo, map Bizzy's fields to your fields, and then either push new companies and contacts in or complete the ones already there. For every mapped field you decide whether Bizzy may overwrite what is in Odoo or only fill what is empty. Nothing flows without a mapping you set, and Bizzy never touches deals or pipeline.
Why the enterprise number is the key
Enrichment is a matching problem before it is a data problem. Names are ambiguous, domains change, addresses move. In Belgium the enterprise number does not: one number per legal entity, issued by the Kruispuntbank van Ondernemingen, identical to the VAT number, and printed on every invoice the company sends. That is the field to store in a dedicated property in Odoo, because everything Bizzy knows about a company joins on it: the register entry, the filed accounts, the establishment units, the ownership tree and the people. The Belgian company register explained covers what sits behind that number.
For Dutch companies the stable identifier is the KVK number; the Dutch VAT identification number is a separate number and, for sole traders, has not been derived from it since 2020. Store both if you sell in the Netherlands.
What Odoo already does on its own
Odoo has its own option, Partner Autocomplete. It works when you create a contact: type a company name or a VAT number and Odoo proposes the company with its name, logo, phone, email, tax ID, address and activity tags, at one prepaid credit per request through Odoo's in-app purchase system. Its documented limit is the one that matters for a CRM that already exists: a company entered manually beforehand cannot be enriched afterwards (Odoo documentation, retrieved 21 September 2026). Autocomplete is for the moment of creation; the Bizzy integration is for the thousand records you already have.
What Bizzy pushes into Odoo
Field | Source | What it is for |
|---|---|---|
Enterprise / VAT number | Belgian registers; Creditsafe data for Dutch companies | The key every other field joins on |
Legal form, status, activities | Register | Is it a BV, an NV, a non-profit; is it still active; NACE codes |
Address, language, region | Register and company website | Territory, routing and the language to call in |
Headcount and FTE | Filed annual accounts | Real size, filed with the National Bank, not a LinkedIn estimate |
Revenue, EBITDA, net profit | Filed annual accounts, where filed | Budget capacity, where the filing includes it |
Company email, phone, social links | Company website and public profiles | The switchboard, not a person |
Contacts: role, title, department, seniority, email, LinkedIn | Registered officials and verified providers | The people to call, with the legal-basis caveat below |
The revenue row deserves its own sentence. Most Belgian companies file abbreviated accounts, and turnover is an optional line on roughly 96% of filings, so a revenue field in Odoo is empty or guessed far more often than people realise. Bizzy fills it where it is filed and leaves it honest where it is not; how to read a Belgian company's annual accounts explains what is and is not in the filing, and finding Belgian company revenue covers the workarounds.

How the integration behaves
Push new, or complete existing. From a search, a list, the website visitor tracker or the Lead Generation Agent, you push a company into Odoo. If it is new, Bizzy creates the record. If it already exists, Bizzy completes it according to your field rules.
Overwrite or complete if missing, per field. The rule of thumb that works: complete if missing for standard fields your team maintains by hand, overwrite for custom fields created for Bizzy data, so the registry value always wins there and never tramples a human note elsewhere.
The customer status field. For teams using the Lead Generation Agent, Bizzy reads a status field in Odoo that marks existing customers, and excludes them from new lead batches. It is the single most useful mapping to set on day one; what an AI sales agent does and does not do explains why the agent needs it.
Contacts are people. Company data comes from public registers. Contact data is personal data, and pushing a person into Odoo means you hold it under a legal basis and can honour a request to remove it. Bizzy stores data primarily on servers in the EU; what you do with a contact after the push is your responsibility, not the integration's.
Odoo is modular and often customised, so the partner model in your instance may carry fields no other Odoo has. Map to those deliberately. And because Odoo is frequently the invoicing system as well as the CRM, a wrong VAT number costs more than a missed call; treat the enterprise number as the field Bizzy is allowed to correct.
Setting it up
You need admin rights in both Bizzy and Odoo; without them you cannot generate the API key or map fields.
In Odoo, generate an API key for the integration user. In Bizzy, open Settings, then Integrations, find Odoo and connect with that key and your Odoo URL.
Map each Bizzy field to an Odoo field on the company (partner) and contact models, including any custom fields you added.
Per field, choose Complete if missing or Overwrite. Complete if missing for fields your team maintains by hand; Overwrite for fields only Bizzy writes.
Push ten companies you know well, open them in Odoo and check the mapping before you push a list. The guide covers the version-specific steps.
The Odoo integration guide has the screen-by-screen version.
What it will not do
It will not invent turnover for a company that did not file it. It will not find a register entry for a company that has none, which includes most foreign companies in a Belgian CRM. It will not clean up duplicates you already have; it keys on the enterprise number, so records without one need that number first. And it will not replace the discipline of deciding which system owns which field; that decision is the setup, the rest is plumbing. Why CRM data decays in Belgium is the argument for making the decision once.
If Odoo is not your CRM
The same integration exists for HubSpot and Teamleader Focus, with the same field rules: Belgian company data in HubSpot and Belgian company data in Teamleader Focus. For the wider question of which data provider to put behind any CRM in Belgium or the Netherlands, best B2B databases for the Benelux compares the options, and B2B data enrichment covers what enrichment can and cannot fix.
Still weighing the cost? Odoo CRM pricing covers the plans, hosting options and a worked example.
Frequently asked questions
Which tool enriches companies in Odoo on their VAT number? Bizzy does. It keys every Belgian company on the enterprise number, which is the VAT number, pushes that number and the fields you map into Odoo, and completes existing records field by field under rules you set.
Does Bizzy overwrite my Odoo data? Only where you tell it to. Each mapped field is either Overwrite or Complete if missing, and unmapped fields are never written.
Does the integration keep records up to date automatically? Bizzy writes when you push, from a search, a list, the visitor tracker or the agent. Whether records are also refreshed on a schedule depends on your plan; the integration guide lists what runs automatically.
Can it stop the Lead Generation Agent from suggesting my existing customers? Yes. Map a customer status field in Odoo and the agent excludes companies marked as customers from new batches.
What about Dutch companies? The stable key is the KVK number. Bizzy covers Dutch companies too, through Creditsafe data; store the KVK number in its own field alongside the VAT identification number.