TicketBAI in Odoo: what it is, calendar by territory (Araba, Bizkaia, Gipuzkoa) and OCA modules
TicketBAI is the invoicing obligation of the Basque Provincial Tax Authorities. We explain who it applies to, the calendar already in force in Araba, Gipuzkoa and Bizkaia (BATUZ), and how it is solved in Odoo with the OCA/l10n-spain modules: what they cover and which branches they actually exist in today.
What TicketBAI is
TicketBAI (TBAI) is the invoicing obligation of the three historic territories of the Basque Country. It is not a recommendation or an optional format: it is a set of legal and technical requirements that your invoicing software must meet if you are taxed in Araba, Bizkaia or Gipuzkoa.
TicketBAI (hereinafter TBAI) is a shared project between the three Provincial Councils and the Basque Government whose aim is to establish a series of legal and technical obligations.
The stated objective is twofold: to help the taxpayer meet their obligations and to prevent tax fraud, ensuring that everyone contributes according to their economic capacity. In practice, this means that every invoice or ticket must be generated with software that meets the technical requirements and that a file must be sent to the corresponding Provincial Tax Authority (Hacienda Foral).
Who it applies to
TicketBAI applies to all natural and legal persons who carry out an economic activity and who are subject to the regulatory jurisdiction of the Basque Provincial Tax Authorities (Haciendas Forales) for IRPF (personal income tax) or Impuesto sobre Sociedades (corporate income tax). In other words: it does not depend on your turnover or your size, but on where you are taxed.
all natural and legal persons who carry out an economic activity must use invoicing software that meets the technical requirements.
How it works technically
The system imposes obligations within the invoicing software itself: each invoice is signed electronically, is chained to the previous one to guarantee the integrity of the series, incorporates a QR code and a TBAI identifier, and generates an XML file that is sent to the Provincial Tax Authority (Hacienda Foral). That file receives a response from the administration (accepted or rejected, with its error code).
The design consequence is important for any Odoo implementation: issuing the PDF of the invoice is not enough. You need a component that signs, chains and communicates, and that also preserves the chain even if an invoice is rejected or cancelled.
Calendar by territory (already in force)
As of today (July 2026) TicketBAI is already generally applicable in the three territories. What changes between them is the calendar by which each got here, and above all the case of Bizkaia, which integrates TicketBAI within a broader system called BATUZ.
Gipuzkoa
Gipuzkoa rolled out TicketBAI progressively by sector (according to IAE classification), starting with advisory firms on 1 July 2022 and expanding in stages throughout 2022 and 2023.
Since 1 June 2023, the TicketBAI obligation is enforceable for all taxpayers who carry out economic activities in Gipuzkoa.
Araba / Álava
Araba followed a shorter calendar during 2022:
- Voluntary from 01/01/2022.
- Mandatory from 01/04/2022 for advisory firms.
- Mandatory from 01/07/2022 for the retail trade of medicines, healthcare products and personal hygiene products.
- Mandatory from 01/12/2022 for the rest of taxpayers.
Bizkaia (within the BATUZ system)
Bizkaia is the special case. There TicketBAI does not go alone: it is part of BATUZ, which in addition to the TicketBai invoicing software requires recording operations in the Register of Economic Operations (Libro Registro de Operaciones Economicas, LROE) in the Provincial Council's electronic office. The progressive rollout began in January 2024 and was organised into five windows by taxpayer type.
- 1st window (1 January 2024): Impuesto sobre Sociedades entities that were not micro-enterprises or small or medium-sized enterprises.
- 2nd window (1 July 2024): natural persons, community property entities (comunidades de bienes), civil partnerships (sociedades civiles) and SMEs in industrial, construction, transport and certain professional activities.
- 3rd window (1 January 2025): SME legal persons whose main activity is retail trade or hospitality.
- 4th window (1 July 2025): natural persons, community property entities (comunidades de bienes) or civil partnerships (sociedades civiles) in the activities of the previous window.
- 5th and final window (1 January 2026): entities exempt and partially exempt from IS (corporate income tax), non-profit entities, and SMEs in the primary sector, education and cultural services.
a calendar of five incorporation windows by taxpayer type was established, culminating this Thursday, 1 January 2026.
TicketBAI in Odoo: what OCA covers and what it does not
Odoo does not include TicketBAI in its base Spanish localisation. The reference solution in the Odoo ecosystem are the modules of the Odoo Community Association (OCA), published in the OCA/l10n-spain repository under the AGPL-3 licence. They are maintained mainly by Binovo and Landoo, the companies that have been behind this integration for years.
The OCA/l10n-spain modules
The set is organised into several pieces that are installed depending on your case (branch 16.0, versions as of this review):
- l10n_es_ticketbai_api — the base layer that generates, signs and transmits the TBAI files (includes QR code generation).
- l10n_es_ticketbai — integrates TicketBAI into invoicing (account.move): customer invoices, credit notes and cancellations. It depends on l10n_es, l10n_es_aeat and the API.
- l10n_es_ticketbai_pos — extends TicketBAI to the POS (Point of Sale), on top of l10n_es_pos.
- l10n_es_ticketbai_oss — covers the One-Stop Shop (OSS) regime for intra-Community B2C sales, on top of l10n_eu_oss_oca.
- l10n_es_ticketbai_api_batuz and l10n_es_ticketbai_batuz — the Bizkaia-specific variant (BATUZ / LROE). Note: the l10n_es_ticketbai_batuz module is marked as 'Alpha' in its manifest, a lower maturity status than the rest (mostly 'Beta').
Which branches it actually exists in (and which not yet)
This is the point where it pays to be honest before planning a migration. As of this review (23 July 2026), the TicketBAI modules of OCA/l10n-spain exist in branches 12.0, 13.0, 14.0, 15.0 and 16.0. They are NOT yet ported to branches 17.0, 18.0 or 19.0: in those branches the module folder does not exist (the path returns 404), even though other modules of the Spanish localisation have already been migrated.
Practical translation: if you are taxed under TicketBAI and want to be on Odoo 17, 18 or 19, today you cannot rely directly on the official OCA module in that branch. The real options are to stay on 16.0 while it is migrated, to port/sponsor the migration (it is AGPL-3 and the community appreciates it), or to consider an approved third-party integration. It pays to check the status of the migration in the repository before committing to dates, because these branches move.
Community, OCA and Enterprise: where the line is
TicketBAI in Odoo is, today, OCA territory on top of Odoo Community or Enterprise: the modules are AGPL-3 and work on top of standard accounting. You do not need Enterprise to comply, but you do need the correct OCA modules for your territory (the BATUZ variant for Bizkaia) and a branch in which they exist. The delicate part is never 'installing the module', but rather the certificates, the invoicing series, the chaining and getting cancellations/credit notes right.
Do you need help with TicketBAI in Odoo?
At skanndar we work with Odoo for SMEs and self-employed professionals in Spain, with judgement about what Community brings, what OCA adds and what has to be built. If you are in Araba, Bizkaia or Gipuzkoa and want an honest audit of your situation with TicketBAI/BATUZ —including whether your version of Odoo is supported or whether it is better to wait for the migration— write to us. We will tell you what is viable today and what is not, no smoke and mirrors.