本文目前仅提供英文版本。翻译即将推出。
Odoo Brazil Localization 2026: NFe, ICMS, PIS/COFINS & Reinf Setup
Brazil's tax system is the most complex in Latin America — and arguably the world. The country runs five major tax regimes administered by federal, state, and municipal authorities simultaneously: ICMS (state VAT-like, 27 different state rules), IPI (federal manufacturing tax), PIS/COFINS (federal social contributions), ISS (municipal services tax), and federal income taxes. Every transaction generates an electronic document — Nota Fiscal Eletronica (NFe), Nota Fiscal de Servicos Eletronica (NFSe), Conhecimento de Transporte Eletronico (CTe), or other SPED-aligned documents. The 2026 Reforma Tributaria begins replacing this maze with a dual VAT (CBS federal + IBS state/municipal), but the transition runs through 2033. Odoo's l10n_br localization, especially via the OCA Brazil community, handles the bulk of compliance, but every Brazilian deployment requires significant local expertise.
Key Takeaways
- Brazil has five tax layers: ICMS (state), IPI (federal), PIS/COFINS (federal), ISS (municipal), IRPJ/CSLL (federal corporate)
- NFe (goods) and NFSe (services) are mandatory electronic documents transmitted to SEFAZ
- Tax Reform (CBS + IBS dual VAT) phases in 2026-2033, replacing existing taxes
- Odoo
l10n_brCommunity covers chart and basic taxes; OCA Brazil modules add NFe, fiscal regimes- Three tax regimes: Simples Nacional, Lucro Presumido, Lucro Real — each requires different ERP setup
- Reinf monthly submission required for service-related withholdings since 2023
- eSocial replaces traditional payroll declarations across all employers
Brazil Tax Framework Overview
Five major tax authorities relevant to Odoo:
- Receita Federal: IPI, PIS/COFINS, IRPJ (corporate income tax 15% + 10% surcharge above BRL 240k/year), CSLL (social contribution on profit, 9% generally), social security
- State (27 SEFAZ): ICMS (rates 7-25% by state and product), ICMS-ST (substitution), ICMS-DIFAL (interstate)
- Municipal: ISS on services (2-5%), IPTU, ITBI
- INSS: Social security contributions
Tax regime selection drives ERP configuration:
- Simples Nacional: Unified regime for businesses up to BRL 4.8M/year, single payment covering most taxes, simplified rates
- Lucro Presumido: Presumed profit regime, suitable for SMEs up to BRL 78M/year, simpler but higher effective rate than Lucro Real for low-margin businesses
- Lucro Real: Actual profit regime, mandatory above BRL 78M or for specific sectors (banks, exporters, etc.), most complex but most flexible
The Tax Reform (Reforma Tributaria) approved in 2023 (Constitutional Amendment 132) replaces ICMS, IPI, PIS, COFINS, and ISS with two VAT-style taxes: CBS (federal, ~8.8%) and IBS (state/municipal, ~17.7%). The transition runs from 2026 through 2033.
Required Odoo Localization Modules
| Module | Purpose | Source |
|---|---|---|
l10n_br | Base Brazil chart of accounts | Odoo Community |
l10n_br_account | Brazilian fiscal classifications | OCA |
l10n_br_nfe | NFe 4.0 generation and SEFAZ integration | OCA |
l10n_br_account_payment_brcobranca | Boleto generation | OCA |
l10n_br_fiscal | CFOP, CST, NCM management | OCA |
l10n_br_sale | Brazilian sales workflow | OCA |
account_reports | EFD-Contribuicoes, SPED Fiscal | Enterprise + custom |
l10n_br_hr_payroll | eSocial-compliant payroll | OCA / Custom |
The OCA (Odoo Community Association) Brazil group maintains the most complete Brazilian localization. Production deployments typically combine Odoo Enterprise/Community core with the OCA Brazil bundle.
Chart of Accounts Setup
Brazil's chart aligns with CPC (Comite de Pronunciamentos Contabeis) standards, which converge with IFRS. The OCA chart provides:
- 1.x: Ativo (assets)
- 2.x: Passivo (liabilities) — including ICMS a recolher, IPI, PIS, COFINS, IR, CSLL provisions
- 3.x: Patrimonio liquido
- 4.x: Receitas
- 5.x: Custos
- 6.x-7.x: Despesas operacionais
Configure the company record with:
- CNPJ (14 digits) for entities or CPF (11 digits) for individuals
- Inscricao Estadual (state registration) per state of operation
- Inscricao Municipal (municipal registration)
- Regime fiscal (Simples Nacional, Lucro Presumido, Lucro Real)
- Codigo de Regime Tributario (CRT) per SEFAZ
- A1 digital certificate (.pfx file) for NFe signing
ICMS Configuration
ICMS rates depend on state of origin, state of destination, and product. Internal-state rates are typically 18% (some at 17%, 19%, 20%, 25%); interstate rates are 4%, 7%, or 12% based on origin-destination matrix and product origin.
ICMS-ST (Substituicao Tributaria) shifts the tax burden — usually the manufacturer/importer pays ICMS for the entire chain on certain products (cosmetics, beverages, auto parts). Rates and inclusion lists vary by state.
ICMS-DIFAL (Differential of Aliquota) applies on interstate sales to non-contributors (final consumers), taxing the difference between origin and destination rates. EC 132/2023 modified DIFAL collection — the destination state takes priority.
Configure ICMS as a complex tax in Odoo:
| Tax Name | Rate | Type | Notes |
|---|---|---|---|
| ICMS 18% Internal | 18% | Sales | Same-state retail/wholesale |
| ICMS 12% Interstate | 12% | Sales | Sales from S/SE to N/NE/CO |
| ICMS 7% Interstate | 7% | Sales | Sales from N/NE/CO to S/SE |
| ICMS 4% Imported Goods | 4% | Sales | All interstate sales of imported goods |
| ICMS-ST | Variable | Sales | Per state and NCM |
| ICMS-DIFAL Origin/Destination | Variable | Sales | Interstate to non-contributor |
CST (Codigo de Situacao Tributaria) codes classify each tax line: CST 00 = fully taxed, CST 10 = taxed and ST, CST 20 = with reduction of base, etc. CFOP (Codigo Fiscal de Operacoes e Prestacoes) classifies the operation type — 5102 (sale to same state), 6102 (interstate), 5910 (loan), and hundreds more.
IPI and PIS/COFINS
IPI (Imposto sobre Produtos Industrializados) is a federal manufacturing tax. Rates per NCM (Nomenclatura Comum do Mercosul) code, ranging from 0% to 30%+ for most goods. Industrialized companies are IPI taxpayers; pure service companies are not.
PIS/COFINS are federal social contributions on revenue:
- Cumulative regime (Lucro Presumido): PIS 0.65% + COFINS 3% on gross revenue, no input credit
- Non-cumulative regime (Lucro Real): PIS 1.65% + COFINS 7.6% on gross revenue, with input credits for qualifying inputs
Configure PIS/COFINS with the appropriate CST codes (01-99) and account for credits where allowed.
# Example PIS/COFINS computation for non-cumulative regime
def compute_pis_cofins(self, line):
if self.company_id.regime_fiscal == 'lucro_real':
# Non-cumulative regime
line.pis_amount = line.price_subtotal * 0.0165
line.cofins_amount = line.price_subtotal * 0.0760
line.pis_credit_eligible = line.product_id.allow_pis_credit
line.cofins_credit_eligible = line.product_id.allow_cofins_credit
else:
# Cumulative regime
line.pis_amount = line.price_subtotal * 0.0065
line.cofins_amount = line.price_subtotal * 0.0300
NFe Generation and SEFAZ Integration
Every B2B and B2C goods sale generates an NFe (model 55) or NFCe (model 65 for retail/POS). The flow:
- Invoice is created in Odoo with all fiscal codes (NCM, CFOP, CST, CEST)
- OCA NFe module generates the XML per SEFAZ schema (NT 2024 versions)
- Signs the XML with the company's A1 certificate
- Submits to the state SEFAZ webservice (autorizacao endpoint)
- SEFAZ returns authorization or rejection (with reject code from the SEFAZ documentation)
- Authorized NFe receives a chave de acesso (44-digit access key) and timestamp
- DANFE (printed representation) is generated for accompanying physical goods
Carta de Correcao (CCe) handles minor corrections; cancellation requires SEFAZ approval within 24 hours.
NFSe for Services
NFSe is the municipal service invoice. Each municipality has its own webservice endpoint, schema variations, and rules — there are over 5,000 municipalities, each potentially different. Some adopt the ABRASF national standard; many do not. Odoo NFSe modules typically support the major municipalities (Sao Paulo, Rio, Belo Horizonte, Curitiba, Porto Alegre) and require custom adapters for others.
Reinf and eSocial
EFD-Reinf is the monthly digital declaration for retentions (CSRF, INSS retention on services), revenue from sport events, and other specific events. Mandatory since 2023 for all companies, with phased rollout per regime size.
eSocial is the unified labor and social security reporting system replacing traditional payroll declarations (RAIS, CAGED, DIRF for labor). All employee events — hires, salaries, vacations, dismissals — must be sent to eSocial in real-time or per period.
OCA payroll modules support eSocial submission. Implementation is substantial — typically 200-400 hours for medium-sized operations.
Reporting Requirements
A Brazilian Odoo deployment must produce:
- SPED Fiscal (EFD-ICMS/IPI): Monthly digital file of all goods movements
- SPED Contribuicoes (EFD-Contribuicoes): Monthly file for PIS/COFINS
- SPED Contabil (ECD): Annual digital bookkeeping
- ECF (Escrituracao Contabil Fiscal): Annual tax bookkeeping
- DCTF Web: Monthly federal tax declaration
- EFD-Reinf: Monthly retentions and contributions
- eSocial: Periodic and event-based labor/payroll
- DIRF: Annual income tax retention statement
Implementation Checklist
- Determine fiscal regime (Simples, Presumido, Real) and obtain CNPJ, IE, IM
- Procure A1 digital certificate (.pfx) for NFe signing
- Install
l10n_br(Odoo) + OCA Brazil bundle (odoo-brasil) - Configure CNPJ, IE per state, regime fiscal, CRT
- Map NCM codes for all products; assign CFOP/CST per operation type
- Configure ICMS internal and interstate rates per origin-destination matrix
- Configure IPI for industrialized products
- Configure PIS/COFINS per regime (cumulative or non-cumulative)
- Test NFe issuance in SEFAZ homologacao environment
- Configure NFSe per municipality of operation
- Set up payroll with eSocial and EFD-Reinf submission
Common Pitfalls
Wrong CST/CFOP combinations: SEFAZ rejects NFe with mismatched CST and CFOP. Maintain a fiscal matrix per product-operation pair.
ICMS-ST not set on covered products: Products under ST must be sold without taxing again downstream — common mistakes inflate prices.
DIFAL collection wrong post-EC132: The destination state now collects DIFAL on interstate non-contributor sales; configurations from before the change still send to origin state.
NFe certificate expiry: A1 certificates are valid for 1 year. Monitor expiry and rotate before lapse.
Mass eSocial errors: Hire/dismissal events have strict timing requirements (hire on or before first work day). Late events incur fines.
ECOSIRE provides Odoo localization for Brazil through partnership with OCA Brazil contributors. Contact us for implementation or explore our Odoo customization services.
Frequently Asked Questions
How does Tax Reform affect Odoo configurations going live in 2026?
The transition starts with informational reporting in 2026, partial replacement in 2027 (CBS + IBS at low rates alongside legacy taxes), and gradual phaseout through 2033. New deployments should configure the legacy stack (ICMS, IPI, PIS/COFINS, ISS) for 2026 operations and plan for CBS/IBS additions as official rates and rules are published. ECOSIRE tracks Reforma Tributaria implementing legislation closely.
Should we use OCA Brazil modules or build custom?
OCA Brazil (odoo-brasil GitHub organization) is the de facto standard for Brazilian Odoo deployments. Building custom NFe, eSocial, and SPED modules from scratch is impractical given the maintenance burden — every NT (Nota Tecnica) update from SEFAZ requires schema changes, and they happen frequently. Use OCA modules and contribute fixes upstream.
How do we handle multi-municipality service operations?
NFSe is municipal — each city has its own format. Companies operating across cities need either separate NFSe configurations per city or a multi-city integration through providers like Migrate, NFS-e Nacional (when fully rolled out), or Wesoft. Some Odoo NFSe modules abstract this complexity but always require per-city testing.
What's the difference between Simples Nacional and Lucro Real for Odoo setup?
Simples Nacional uses a single combined tax rate (~6-30% based on revenue and activity), simplified invoicing rules, and consolidated payment via DAS. Lucro Real has separate rates for each tax (ICMS, IPI, PIS, COFINS, IR, CSLL), full input credit chains, and complex computations. Odoo configuration for Simples is dramatically simpler; many community modules ship Simples-only flows by default.
Is eSocial really mandatory for all companies?
Yes — eSocial covers all employers (companies, individual employers, public sector) in phased rollout completed by 2024. Even companies with one employee must submit. Odoo's payroll integration with eSocial is non-trivial — most clients with 50+ employees use specialized payroll solutions (Senior, ADP) integrated to Odoo for HR data while keeping payroll calculations separate.
作者
ECOSIRE TeamTechnical Writing
The ECOSIRE technical writing team covers Odoo ERP, Shopify eCommerce, AI agents, Power BI analytics, GoHighLevel automation, and enterprise software best practices. Our guides help businesses make informed technology decisions.
相关文章
如何将自定义按钮添加到 Odoo 表单视图 (2026)
将自定义操作按钮添加到 Odoo 19 表单视图:Python 操作方法、视图继承、条件可见性、确认对话框。经过生产测试。
如何在没有 Studio 的情况下在 Odoo 中添加自定义字段 (2026)
通过 Odoo 19 中的自定义模块添加自定义字段:模型继承、视图扩展、计算字段、存储/非存储决策。代码优先,版本控制。
如何使用外部布局在 Odoo 中添加自定义报告
使用 web.external_layout 在 Odoo 19 中构建品牌 PDF 报告:QWeb 模板、paperformat、操作绑定。带有印刷徽标+页脚覆盖。