Skip to main content
iVentureTeam

many2many_tax_tags

many2many_tax_tags is the tags widget tuned for accounting: identical options, one deliberate change, the dropdown always offers Search More, because tax grids are long and picking the wrong one is a filing error.

August 11, 2026Updated August 11, 20265 min read
Technical namemany2many_tax_tags
Field typesmany2many, one2many
Viewsform, list (journal items, tax configuration)
Moduleaccount (Invoicing/Accounting)
Used in core35 occurrences across account and l10n modules, journal items and tax configuration views
VersionsOdoo 20.0, Odoo 19.0, Odoo 18.0, Odoo 17.0, Odoo 16.0
No-code setupPreset on accounting views; not a Studio-facing widget
Alternativesmany2many_tags, autosave_many2many_tax_tags, many2many_checkboxes

What the tax tags widget does

On journal items and tax configuration lines, the tags being picked are not labels; they are tax grid tags, the markers that route amounts into the boxes of your VAT or tax return. Odoo renders them with this widget, a thin specialization of the standard tags control.

The source shows exactly how thin: the descriptor spreads many2ManyTagsField and swaps one component, the autocomplete. The replacement overrides loadOptionsSource to guarantee a Search More entry at the bottom of the dropdown regardless of how many results came back, and its onSearchMore passes the typed text into the selection dialog as a default name filter.

Everything else, the pills, the removal crosses, every option, is the tags widget you already know.

What this means for your team

Tax tags are where bookkeeping meets the tax authority: each tag corresponds to a box on a return, and the sum of lines carrying it is what lands in that box. A mispicked tag does not look wrong in the ledger; it looks wrong in the filing, months later, in front of an auditor.

That is the business case for the widget's one behavioral change. Localizations ship dozens of near-identical grid names, and the always-available Search More opens the full list view, searchable and sortable, instead of trusting a truncated dropdown. Slower by a click, safer by a lot, the right trade for fiscal data.

The deeper safeguard is configuration, not widgetry: when taxes are set up correctly, their repartition lines apply grid tags automatically and humans rarely touch this field on documents. Frequent manual tag editing on journal items is a signal your tax configuration needs attention, not your users.

Supported options in Odoo 19

Verified against many2x_tax_tags.js in the Odoo 19.0 account module: the descriptor spreads the full many2many_tags option set unchanged. The rows below list the inherited options; see the tags page for their full behavior notes.

OptionTypeWhat it does
color_fieldfield nameInherited from many2many_tags: integer field on the tag model for pill colors.
no_createbooleanInherited: removes creation entirely. Recommended on grid-tag fields; tags belong to the localization.
no_quick_createbooleanInherited: removes only inline creation from typed text.
no_create_editbooleanInherited: removes only the Create-and-edit popup entry.
createdomainInherited: conditional creation domain.
search_thresholdnumberInherited: minimum characters before the search fires.
placeholder_fieldfield nameInherited: char field supplying a dynamic placeholder.
create_name_fieldfield nameInherited undocumented option: which field receives typed text on inline creation.(default: name)

The delta is behavior, not options. No new option exists to configure the Search More entry; it is unconditional by design. If you need the plain dropdown behavior on a tax-tag field, use the base many2many_tags widget instead, though for grid tags we would advise against it.

Working examples

How journal item views use it

<field name="tax_tag_ids" widget="many2many_tax_tags"/>

Locked down on document lines

<field name="tax_tag_ids"
       widget="many2many_tax_tags"
       options="{'no_create': True}"/>

Grid tags come from the localization; users should pick, never invent. The inherited option closes creation exactly as on the base widget.

Delaying search on huge localizations

<field name="tax_tag_ids"
       widget="many2many_tax_tags"
       options="{'search_threshold': 2, 'no_create': True}"/>

Search More, guaranteed

Two source details close the loop on how this widget behaves in the wild.

Search More is appended, not configured. The overridden loadOptionsSource checks whether the last dropdown entry is already the Search More row and adds it if not. The dialog it opens is the standard select-create list, seeded with your typed text via search_default_name, so "intra" typed in the line becomes the search term in the dialog. Small touch, big difference on 60-grid localizations.

The autosave sibling. The same folder registers autosave_many2many_tax_tags, extending this widget for places that must persist the change immediately rather than with the document save. Same look, different commit timing; its own page covers it.

Version compatibility

VersionStatusNotes
Odoo 20.0Partial / changedNot released. Own file unchanged; inherits the base tags widget's Odoo 20 changes. See below.
Odoo 19.0VerifiedVerified against the shipped source and tested on a clean database.
Odoo 18.0VerifiedSame behavior. No XML changes needed.
Odoo 17.0VerifiedSame behavior. No XML changes needed.
Odoo 16.0VerifiedSame behavior. No XML changes needed.

Upgrade note. The widget inherits whatever the base tags widget does per version, so the notes on that page apply, including the Odoo 20 changes to the base. Its own delta, the guaranteed Search More, is unchanged across supported versions.

What is changing in Odoo 20

Odoo 20 is expected at Odoo Experience in Brussels, 24 to 26 September 2026. The changes below are read from the public development branch and are not final until release.

This widget's own file is unchanged: same spread of the base descriptor, same autocomplete override, same registration. What changes underneath is the base tags widget itself, which gains tag_limit and on_tag_click and loses the form color-editable variant in the development branch; those changes flow into this widget automatically through the spread. Details on the many2many_tags page. We re-verify once Odoo 20 ships.

Common problems and fixes

SymptomCause and fix
Amounts land in the wrong tax report boxWrong grid tag on the journal items, manually set or from a misconfigured tax repartition. Fix the tax's repartition tags so documents tag themselves; correct affected entries.
Users created a bogus tax tagInherited creation paths are open by default. Add no_create: True on document-facing views; grid tags come from the localization.
Cannot find the right grid in the dropdownLong localization lists truncate in any dropdown. Use the always-present Search More; your typed text carries into the dialog's search.
Tag change did not persist without saving the moveThis widget commits with the document save, like normal fields. Save the entry, or use views built on the autosave sibling where immediate persistence is intended.
Tags show without colorscolor_field is not set on this view, inherited behavior. Add options="{'color_field': ...}" if the tag model carries a color integer.

Tax tags widget vs the alternatives

WidgetBest forKey difference
many2many_tax_tagsTax grid tags on journal items and tax configurationBase tags widget plus a guaranteed Search More with carried-over search text
many2many_tagsGeneral-purpose labels anywhereSearch More appears only when results overflow
autosave_many2many_tax_tagsTax tags that must save on changeSame widget with immediate persistence
many2many_checkboxesShort fixed sets shown in fullEvery option visible, no search at all

The practical test: tax grid tags get this widget, full stop. General-purpose labels get the base tags widget. And if the change must survive without a document save, the autosave sibling exists for exactly that.

Frequently asked questions

What is the difference between many2many_tax_tags and many2many_tags?+
One behavior, verified in the source: the tax variant's dropdown always offers Search More, and typed text carries into that dialog as a search filter. Options and everything else are inherited unchanged from the base tags widget.
What do tax grid tags actually do?+
They route amounts into tax report boxes: every journal item carrying a tag is summed into the corresponding line of your VAT or tax return. That is why this field deserves a more careful picker than ordinary labels.
Should users edit tax tags on journal items by hand?+
Rarely. Correctly configured taxes apply grid tags automatically through their repartition lines. Frequent manual tagging is a symptom of tax configuration debt, worth fixing at the source.
Can I stop users creating new tax tags?+
Yes, the inherited no_create: True closes all creation paths, and on grid-tag fields that is almost always correct: valid tags come from the installed localization.
What is autosave_many2many_tax_tags?+
A sibling widget registered in the same source folder that extends this one to save the change immediately instead of waiting for the document save. Odoo uses it where tag edits must persist on their own.
Will Odoo 20 change this widget?+
Its own file is unchanged in the development branch, but it inherits the base tags widget's Odoo 20 changes (tag_limit, on_tag_click, removal of the form color variant) through its descriptor spread. Not final until release; we re-verify then.

Tax returns that fill themselves correctly?

Grid tags are only as good as the tax configuration behind them. We set up localizations, tax repartition and the controls that keep journal items filing-clean, on Odoo 16 through 19.

Book a free consultation

How this page was produced

The descriptor spread, the autocomplete override with its guaranteed Search More, the search_default_name seeding and the autosave sibling registration were all read from the Odoo 19.0 account module source (many2x_tax_tags.js and the neighboring autosave file) and confirmed on a clean Odoo 19 database with a localization installed, where the screenshot was captured. The Odoo 20 statement comes from the same files on the public development branch. Spotted an error? Tell us and we will correct the page.