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.

Capabilities

Everything you need to keep Tax IDs unique

Every capability below is implemented in the module.

01

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.

02

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.

03

Parent/child exception

Legitimate shared Tax IDs across a company and its branch or delivery contacts are automatically exempted from the rule.

04

Multi-company aware

Choose per-company or global uniqueness scope from Settings; behaves correctly across every company in the database.

05

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.

06

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.

07

Configurable rules

An administrator settings page lets you toggle enforcement, scope, the parent/child exception, country matching, and exception logging.

08

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.

09

Full audit log

A durable log records every blocked duplicate and every parent/child exception granted, so data stewards keep full visibility.

Workflow

How it works

1

Configure the rules

Open Settings > Partner VAT Uniqueness and choose enforcement, scope, and exception behavior.

2

Enter a contact

A user creates or edits a contact and types a Tax ID as normal — nothing changes about the data-entry flow.

3

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.

4

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.

Questions

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.

Get the app

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