REDA One Help Center
EN
Language
English EN Español ES Português PT Italiano coming soon Français FR Deutsch coming soon العربية coming soon
reda.one ↗
Home / REDA Financials AI / Tax Management / Tax in Practice (Country Walkthroughs) / Setting Up Brazil Tax

Setting Up Brazil Tax — End to End

Brazil is the most complex tax system REDA supports — several taxes on one line, some embedded in the price (por dentro), rates that depend on your regime and on who the buyer is. This article shows how to configure the data so all of that is handled for you. Set it up once and every invoice gets the right stack of taxes, posted the Brazilian way. We’ll configure a small catalogue, then post a sale to prove it.

Getting there. This setup lives in the REDA Financials Admin app — open the App Launcher (the grid icon at the top-left of any page), pick REDA Financials Admin, and use its tax tabs (Tax Jurisdictions, Tax Types, Tax Rules, Tax Profiles, Party Tax Profiles). Most of the chain is created for you by the Tax Seeding Wizard; the tax stack is then calculated automatically on the invoices you post in the day-to-day REDA Financials AI app.
Access you'll need. Setting up the tax rulebook requires the Accounting Admin v2 or Accounting Controller v2 permission set. The Accounts Payable v2, Accounts Receivable v2, and Read Only v2 sets can view the setup but not change it.
The four things that make Brazil different. (1) Multiple taxes stack on one line (ICMS, IPI, PIS, COFINS, plus the new CBS/IBS). (2) Some are embedded (por dentro) — inside the price, posted as a deduction from revenue, not added to the receivable. (3) The federal contributions depend on your tax regime (Lucro Real / Presumido / Simples). (4) Some taxes depend on who the buyer is (DIFAL/FCP fire only on interstate sales to a non-contributor consumer). Each is a piece of data you set once.

The configuration chain

#WhatWhy it existsSource
1JurisdictionBR + states (ICMS is state-level)Seed
2Tax TypeICMS, IPI, PIS, COFINS, ISS, CBS, IBS, DIFAL, FCP — each flagged recoverable or notSeed
3Tax ProfileGoods vs services treatment bucketsSeed
4Party Tax ProfileYour regime + whether the buyer is a contributor or consumerSeed + you assign
5Fiscal OperationIntra-state vs inter-state (CFOP) — derivedSeed
6Tax RuleAssembles the stack per profile / state / regime / buyerSeed
7Product Fiscal ProfilePuts your product in a bucketYou
8GL MappingPayable, input-credit, and contra-revenue deduction accountsSeed
9Registration + regime + defaultsYour nexus and your regimeYou

Our example catalogue

Product / serviceTreatment bucketTaxes it attracts
Goods for resale (e.g. electronics)BR-STD-GOODSICMS, PIS, COFINS, CBS, IBS
Manufactured goodsBR-IPI-GOODSIPI (+ the above where configured)
Professional serviceBR-SERVICESISS, PIS, COFINS

Step 1 — Jurisdictions

The seed creates BR plus the 26 states + Distrito Federal. ICMS is a state tax with state-specific rates, and the seller’s and buyer’s states decide intra- vs inter-state — so the state jurisdictions matter (e.g. BR-SP São Paulo, BR-RJ Rio de Janeiro).

Step 2 — Tax Types (the stack)

Brazil’s taxes ship as separate Tax Types, and two behaviours do a lot of work. Recoverable is a flag on the Tax Type itself; embedded (por dentro) is set per rule (Tax Included in Price on each Tax Rule), so the seeded rules for a tax carry it consistently. Here is how each tax behaves:

TaxEmbedded (por dentro)?Recoverable?
ICMSYesYes (Lucro Real)
PIS / COFINSYesYes (non-cumulative)
IPINo (on top)Yes (industrial)
ISS (services)NoNo
DIFAL / FCPNoNo
CBS / IBS (reform, pilot 2026)No (on top)Yes

The embedded behaviour is the crucial one: an embedded tax is inside the price, so REDA posts it as a reduction of revenue, not an addition to what the customer owes (more in the payoff).

Step 3 — Tax Profiles

Tax ProfileFor
BR-STD-GOODSStandard goods (ICMS, CBS, IBS)
BR-IPI-GOODSManufactured goods (IPI)
BR-REDUCED-GOODSReduced-rate goods
BR-SERVICESServices (ISS)

Step 4 — Party Tax Profiles (regime + contributor)

In Brazil the party profile carries two things that change the tax: your regime and whether a party is a state-tax contributor. This is where two of the four “what makes Brazil different” behaviours live.

Party ProfileRegimeContributor?Use for
BR-LR-CONTRIBLucro RealYesYour entity (full-credit regime)
BR-LP-CONTRIBLucro PresumidoYesCumulative-regime entity
BR-SN-CONTRIBSimples NacionalYesSimplified-regime entity
BR-CONSUMER—NoEnd-consumer (B2C) buyer
BR-EXEMPT—NoTax-exempt entity
  • Regime → PIS/COFINS rate. Lucro Real = non-cumulative (1.65% / 7.6%, recoverable); Lucro Presumido = cumulative (0.65% / 3.0%, not recoverable). Set on your entity’s profile.
  • Contributor → DIFAL/FCP. Those fire only on interstate sales to a non-contributor (a consumer). Set on the buyer’s profile.

Step 5 — Fiscal Operations (intra/inter, CFOP)

As in India, the engine derives intra-state vs inter-state from the two states and selects the matching CFOP operation (Brazil’s fiscal-operation code, e.g. BR-5101 intrastate, BR-6101 interstate). This drives the ICMS rate (internal vs interstate) and gates DIFAL/FCP. You don’t set it on the invoice.

Step 6 — Tax Rules (how the stack assembles)

The seeded rules wire the stack together. You rarely edit them; it’s worth knowing how each tax is gated:

TaxGated by
ICMSGoods profile + destination state + intra/inter (sets the rate)
PIS / COFINSSeller regime (and goods/services profile)
IPIManufactured-goods profile
ISSServices profile
DIFAL / FCPInterstate and buyer = Non-Contributor
CBS / IBSGoods/services profile (reform pilot rates)

Step 7 — Classify your catalogue

Give each product a fiscal profile (with its NCM code — Brazil’s harmonized product tariff code) linking it to a treatment bucket:

ProductAssign Tax Profile
Goods for resaleBR-STD-GOODS
Manufactured goodsBR-IPI-GOODS
Professional serviceBR-SERVICES

Step 8 — GL mappings (incl. the deduction accounts)

Brazil needs a third kind of mapping that other countries don’t. As well as the Sales (payable) and Purchase (input-credit) mappings, each embedded sales tax needs a Sales Deduction mapping pointing at a contra-revenue account:

TaxSales (payable)Purchase (ITC)Sales Deduction (contra-revenue)
ICMS2331-ICMS-BR1523-ICMS-ITC-BR4911-ICMS-SALES-BR
PIS2335-PIS-BR1521-PIS-ITC-BR4912-PIS-SALES-BR
COFINS2336-COFINS-BR1522-COFINS-ITC-BR4913-COFINS-SALES-BR
IPI2334-IPI-BR1524-IPI-ITC-BR— (not embedded)
Why the deduction account? An embedded tax is inside the price, so it isn’t extra money from the customer — it’s the government’s slice of the price. Posting it to a … on Sales deduction account reduces gross revenue to net (the Brazilian DRE — income statement — presentation, aligned with IFRS 15), instead of inflating Accounts Receivable. Every embedded sales tax needs one, or posting stops with a clear error.

Step 9 — Register, set your regime & defaults

Register. Create an Entity Tax Registration at BR (and the state) with your CNPJ / state registration.
Set your regime. On the Entity’s Party Tax Profile, choose BR-LR-CONTRIB (Lucro Real), BR-LP-CONTRIB (Presumido), or BR-SN-CONTRIB (Simples) — this sets your PIS/COFINS rates.
Tag your buyers. Business customers → a Contributor profile; end consumers → BR-CONSUMER. This is what turns DIFAL/FCP on or off.
Set states & default GLs on the entity and customers.

The payoff — the stack, posted the Brazilian way

Sell R$10,000 of resale goods, intrastate in São Paulo, to a business (contributor). The configured data assembles the stack: ICMS 18% (embedded), PIS 1.65% + COFINS 7.6% (embedded, Lucro Real), CBS 0.9% + IBS 0.1% (on top). DIFAL/FCP don’t fire (intrastate, and the buyer is a contributor). The journal:

AccountDebitCredit
Accounts ReceivableR$10,100.00
ICMS on Sales (deduction)R$1,800.00
PIS on Sales (deduction)R$165.00
COFINS on Sales (deduction)R$760.00
Gross RevenueR$10,000.00
ICMS PayableR$1,800.00
PIS PayableR$165.00
COFINS PayableR$760.00
CBS PayableR$90.00
IBS PayableR$10.00

Debits R$12,825 = Credits R$12,825. The customer pays R$10,100 (price + the on-top CBS/IBS); net revenue is R$7,275 (R$10,000 gross − R$2,725 embedded ICMS/PIS/COFINS). The embedded taxes reduced revenue; they did not inflate the receivable.

Change the buyer — DIFAL & FCP appear

Sell the same goods interstate (SP → RJ) to an end consumer (BR-CONSUMER). Two things change, both from data: ICMS uses the interstate rate (12%), and because the buyer is a non-contributor on an interstate sale, DIFAL (the rate differential, e.g. 8%) and FCP (e.g. 2%) now fire and add to the receivable. Sell to a business in RJ instead and DIFAL/FCP stay off — the buyer settles ICMS on its own resale. You changed one field (the customer’s profile); the engine did the rest.

Purchases — recovering embedded credits

When you buy, the recoverable embedded taxes (ICMS, PIS, COFINS for Lucro Real) are lifted out of the cost into input-credit assets (a recuperar), leaving the expense net — the mirror of the sales-side deduction. Non-recoverable embedded taxes stay in the cost. Again, driven by the Tax Type’s recoverable flag, not a choice at entry.

The 2026–2033 reform. CBS and IBS are replacing PIS/COFINS/IPI (CBS) and ICMS/ISS (IBS), and they’re calculated on top of the price — the embedded (por dentro) machinery and DIFAL disappear by 2033. The 2026 pilot is already in the pack. Brazil’s pack ships two live rules under Constitutional Amendment 132/2023 — CBS at 0.9% and IBS at 0.1%, both effective 1 January to 31 December 2026 and scoped to standard goods — so a 2026 invoice already carries them. They stop at the end of 2026 by date. The post-pilot rates are not law yet, so no rule can ship for them: when they are confirmed, REDA ships an updated Brazil pack, you re-seed, and old rules retire by date while CBS/IBS take over with history preserved. Plan the re-seed before your first 2027 invoice.

If the tax looks wrong, check the chain

  1. PIS/COFINS missing? The entity’s Party Tax Profile must carry the right regime (Lucro Real/Presumido) — that’s what those rules match on.
  2. DIFAL/FCP firing for a business buyer? Tag that customer as a Contributor, not BR-CONSUMER.
  3. Posting error about a missing mapping? An embedded sales tax needs its Sales Deduction GL mapping (Step 8).
  4. Wrong ICMS rate? Check both states are set — intra vs inter changes the rate.

Where to go next

  1. UK VAT — the simplest walkthrough to compare against.
  2. India (GST + TDS) — another multi-component country setup.
  3. Tax Calculation Components — how Brazil’s layered bases are built.
  4. Tax Seeding Wizard — load Brazil’s rulebook in one click.
  5. Understanding Withholding Tax — Brazil’s IRRF withholding side.

Frequently asked questions

By Brazilian convention ICMS (and PIS/COFINS) are por dentro — the tax is part of the price the customer pays, not an add-on. REDA reflects this by posting the embedded amount as a deduction from gross revenue (reducing it to net) rather than increasing Accounts Receivable.

Only when a sale is interstate AND the buyer is a non-contributor (an end consumer). Sell within one state, or sell to a registered business, and they don’t fire. It’s controlled by the rule’s Buyer Contributor Scope against the buyer’s party profile.

It sets your PIS/COFINS rates: Lucro Real is non-cumulative (1.65% / 7.6%, recoverable as credits); Lucro Presumido and Simples are cumulative (0.65% / 3.0%, not recoverable). Choose the right party profile on your entity and the correct rules match.

No action yet beyond knowing it’s coming. The 2026 pilot rates are seeded; when the full rates are law REDA ships an updated pack and you re-seed. Your current setup keeps serving the transition years and historical documents.

Was this article helpful?