Stop duplicate Tax IDs before they corrupt your books
Turns Odoo's ignored VAT warning into an enforced, configurable and fully audited data-quality guardrail for every contact you create.
The problem
Sales and purchasing teams create a "new" customer or vendor that already exists under the same Tax ID, corrupting tax reporting, VIES reconciliation and invoicing. Odoo only shows a soft warning nobody notices, and bulk imports or migrations let hundreds of these silent collisions slip straight into the database.
The solution
A single guardrail blocks any save that would create a duplicate Tax ID, names the exact contact that already owns it, and automatically exempts legitimate parent/child and branch structures — while every blocked attempt and every granted exception is written to a permanent audit log.
Everything you need to keep Tax IDs unique
Every capability below is implemented in the module.
Enforced Tax ID uniqueness
Blocks saving a contact whose Tax ID already belongs to another contact, turning Odoo's silent warning into a hard stop.
Applies to customers and vendors
Uniqueness covers your entire contact base — not just one side of the relationship — and empty Tax IDs are always ignored.
Parent/child exception
Legitimate shared Tax IDs across a company and its branch or delivery contacts are automatically exempted from the rule.
Multi-company aware
Choose per-company or global uniqueness scope from Settings; behaves correctly across every company in the database.
Named, actionable error
The block message names the exact existing contact that owns the Tax ID, so you can open it and resolve the conflict immediately.
Real-time conflict banner
A live warning banner appears on the contact form the moment a conflicting Tax ID is entered — before you ever try to save.
Configurable rules
An administrator settings page lets you toggle enforcement, scope, the parent/child exception, country matching, and exception logging.
Duplicate Tax ID visualization
A dedicated view groups every Tax ID shared by two or more contacts, with a one-click drill-down into every member.
Full audit log
A durable log records every blocked duplicate and every parent/child exception granted, so data stewards keep full visibility.
How it works
Configure the rules
Open Settings > Partner VAT Uniqueness and choose enforcement, scope, and exception behavior.
Enter a contact
A user creates or edits a contact and types a Tax ID as normal — nothing changes about the data-entry flow.
Instant feedback
If the Tax ID already belongs to another contact, a banner names the owner immediately and saving is blocked until it is resolved.
Review the trail
Data stewards check the Duplicate Tax ID Groups view and the Audit Log any time to see what was blocked or exempted.
Frequently asked
No sales fog. If your question isn't here, email us and we'll answer it the same way.
It blocks the save outright with a validation error. Standard Odoo only shows a soft warning banner that most users never notice; this app turns that warning into an enforced rule, while still telling you exactly which contact already owns the Tax ID.
Buy it on the Odoo App Store
Purchase, download and install directly from the official Odoo Apps Store — you'll always get the latest supported build.
Partner Tax ID (VAT) Uniqueness — Enforced & Audited
Enforced Tax ID uniqueness for customers and vendors, with parent/child exceptions, multi-company awareness and a real-time conflict banner — plus duplicate visualization and a full audit log.
Buy on Odoo App Store