AWRA OpsHub Search

Brazil · Latin America

Your invoice line carries five taxes. Ours has one column.

Most tax arguments are about what a number should be. Brazil's is about how many numbers there are. A line on a Brazilian invoice today can bear ICMS, IPI, PIS and COFINS together — ISS in place of ICMS on services — each with its own base, its own jurisdiction and its own return. Through the reform transition CBS and IBS sit on top of all of them, so the count goes up before it comes down, and it stays up for years. Our invoice line has a single tax rate column. That is not a rate we have got wrong; it is a shape, and this page is about what a shape can and cannot hold.

A count, not a rate table

What sits on one line today, and what our line holds

Not a rate table. A count of the separate taxes a single Brazilian invoice line can bear at the same time, each with its own base, its own administering government and its own return — followed by the number of tax figures our line can carry.

01

ICMS

The state

Rates are set per state and interstate movements follow their own rules, so the figure depends on where the goods went as well as where they came from.

02

IPI

The federal government

Charged on industrialised products against its own base, so it is neither a share of ICMS nor derived from it.

03

PIS

The federal government

A contribution with its own base and its own credit rules, computed separately from everything above.

04

COFINS

The federal government

The same again, on a different footing, and reported separately.

05

ISS

The municipality

Services instead of ICMS — a different tax, a different government, and roughly five and a half thousand municipalities setting their own rates.

06

CBS + IBS

Federal, and states with municipalities

Added by the reform on top of all of the above for the length of the transition, so during those years both systems are calculated, reported and remitted at once.

Six rows, and the last is two taxes rather than one. Our invoice line carries one tax figure and has room for no more, and an item's tax treatment resolves to either the organization's default rate or zero — there is no third answer, so a line cannot carry a second positive rate even if somebody wanted it to. That is a hard structural limit rather than a configuration gap, and it is the first thing a Brazilian evaluation should establish about any system.

What this does not mean is that Brazilian totals come out wrong in our system. It means the composition is not held: an invoice can carry the tax you are charging as one figure, and cannot break that figure into the taxes it is made of, cannot attribute each part to the government that levies it, and cannot report on them separately. If your accountant does that composition outside the system today, nothing here changes for you. If you need the system to do it, this is a data-model change and we would quote it as one rather than describe it as a setting.

And a second finding, of a different kind

And one of those figures depends on somebody else's address

Interstate ICMS is not a property of the seller. It depends on where the goods came from and where they went, which makes it a fact about a pair of places rather than about a business.

Our per-organization tax rate can be given a jurisdiction — a country, a region and a city. Three columns of geography, and all three describe **one** place: yours. There is nowhere to record that a rate applies because of where the customer is, and nothing about the counterparty's location enters the calculation at any point.

For most of the world that is the correct shape, which is why it has never been a problem. Brazil is the market where it stops being correct, because the reform is moving taxation from origin to destination — so the direction of travel is toward the customer's address mattering more, not less.

Worth stating precisely, because the near-miss reads better than the truth: the geography columns exist and they are real. What is missing is a second endpoint. A rate that describes a route rather than a place has nowhere to live.

What this costs you in practice

Four things a Brazilian controller already knows

A total you cannot break apart

One tax figure on a line is enough to charge correctly and not enough to say what it is made of. When a figure has to be attributed to four governments, a single number is the wrong unit — and no amount of rate configuration turns one column into four.

Two systems running at once, for years

The transition does not swap one set of taxes for another on a date. Both are calculated, reported and remitted together across the transition years, so the requirement is to hold more at the same time rather than to change what is held.

A rate that belongs to a route

Interstate ICMS depends on origin and destination together. A system whose rate is a property of your own address has nowhere to put that, and the reform points further in that direction rather than away from it.

Five and a half thousand municipalities

ISS is set locally, so a services business selling across Brazil is not looking up one rate. Any system claiming to hold that is holding a dataset, and the question worth asking is who maintains it and how often — not whether the field exists.

Running the operation, not filing for it

What we are for in Brazil, which is not the invoice

Everything above is about a document. Most of what an operations system does here has nothing to do with one, and it is worth separating the two before an evaluation confuses them.

Four items rather than six. Three of the four are true of every market we serve and are listed because they are what buyers actually ask about after the tax conversation ends, not because they are Brazilian.

Scope, in three parts rather than two

What runs today, what we would build, and where we stop on purpose

Three columns, because "no" means two entirely different things and one list hides which is which. The middle column is work that has not been done and has a price. The right-hand column is work we would decline from a paying customer — and it is the one worth demanding from every other vendor you talk to, because a page without it has not told you where its edges are.

Scope in Brazil, including the column that is one column

Running in the product today

  • One tax figure per invoice line, stored on the line — correct for charging, and the property that keeps your history stable through a long transition.
  • Reports that run against a period rather than a snapshot, so a year inside the overlap can be reproduced instead of reconstructed.
  • Stock by location with full movement history, which is what a network positioned for tax needs before it can be re-argued on distance.
  • Receiving matched against purchase orders with tolerances, and the discrepancy captured where it happened.
  • Multi-organization operation with separate base currencies and separate rates, reported per entity or across several.

Not built yet — and commissionable

  • Several taxes on one invoice line. Room for one tax figure where several are owed is the whole of this finding, and widening it is a data-model change rather than a configuration one. Everything else in this list depends on it.
  • Each tax figure attributed to the government that levies it, so federal, state and municipal amounts can be reported and reconciled separately.
  • A rate that depends on a second location — the customer's — rather than only on the organization's own jurisdiction.
  • A tax treatment per item beyond standard-or-zero. Today an item resolves to the organization's default rate or to nothing; there is no third answer.

What we would decline, and would rather say now

  • We will not transmit anything to SEFAZ and we do not issue NF-e. That is a boundary rather than a backlog: Brazilian clearance is a specialist integration with its own certification and liability, and a system that half-does it is worse than one that does not, because it looks finished.
  • We will not maintain a municipal ISS rate dataset for you. Roughly five and a half thousand municipalities set their own; treating our copy of that as current would put your filings on our data-maintenance schedule, and we would rather you kept that risk where you can see it.
  • We will not advise on the transition timetable or on whether you are collecting yet. That is a question with a date and a professional attached, and no software choice improves the answer.
  • We do not run Brazilian payroll. No local income tax tables, no statutory contribution calculation. Labour cost attribution to projects and cost centres exists and is not payroll, and calling it payroll would be the kind of thing this column exists to prevent.

The first two rows of the middle column are one piece of work: give a line several tax figures and attribute each to its levying authority, and the reporting follows from the shape rather than needing to be built on top of it. The second location is separable and smaller. All of it is commissionable now with a written specification, a timeline and a price — Kenya's eTIMS transmission and our payroll engine are the evidence that we build this way rather than describe it. No date on a public page.

The honest summary is that we are a stronger operations system than tax system in this market, and Brazil is the market where that gap is widest. If the composition of the tax figure is what you need a system to hold, the right conclusion may be a Brazilian fiscal system alongside something for the operation — and if so, we would rather help you scope that than sell you one product doing both badly.

How this starts

Three questions that separate a shortlist

01

Ask how many tax figures a line can hold

Not which taxes are supported — how many separate figures one line can carry at once, and whether each can name the government it is owed to. This is a question about shape and it has a number for an answer. Ours is one.

02

Raise an invoice to a customer in another state

Then ask what in the system knew the customer was elsewhere. If the rate came only from your own configured jurisdiction, the counterparty's address never entered the calculation, and interstate is where that begins to matter.

03

Pull a report for a period two years back

Through a seven-year overlap this is the question you will ask most often, and it is the cheapest thing to test. A system that can only report on now will make every transition-year question an exercise in reconstruction.

Read before you shortlist

Guides for this market

Accounting Insights 10 min

One Line, Several Taxes

A Brazilian invoice line can carry four or five taxes at once, owed to three levels of government. Ours has one column for tax — which is a counting problem rather than a rate problem, and the reform makes the count go up before it comes down.

Read
Reports & BI 9 min

A Total You Cannot Report On

Addition is lossy. Store 4 + 3 + 2 as 9 and you can still charge, reconcile and audit the 9 — but every report that needs the 4 is already impossible, and nobody finds out until they need one.

Read
Implementation & Rollout 12 min

Buying Operations Software in Brazil: A Straight Guide

Six questions with structural answers — a number, a yes, a name — including the one almost nobody asks: who maintains the municipal rate dataset, and on what schedule?

Read
Inventory Insights 10 min

A Catalogue Is Not a Text Field

A free-text field with validation is not a smaller version of a coded one. Where a jurisdiction wants a value from a published list, the field either holds it or your document is not the document.

Read
Sales Insights 10 min

A Cancellation Your Customer Can Refuse

Everywhere else, voiding a document is something you do. Here it is something you ask for — and your customer can say no, or say nothing, which is worse.

Read
Accounting Insights 10 min

Fields That Are Not on Your Customer Record

Your customer master holds what you need to know about a customer. It has nowhere to hold what your customer asserts about themselves — and some documents will not clear without it.

Read

What a Brazilian controller asks in the first ten minutes

Answered by counting, including where the count is one

Can your system produce a compliant Brazilian invoice?

No, and the answer is structural rather than partial. We do not issue NF-e and we transmit nothing to SEFAZ — that half is a boundary rather than a backlog, because Brazilian clearance is a specialist integration carrying its own certification and liability, and a system that half-implements it looks finished while not being. Separately, our invoice line holds one tax figure where a Brazilian line needs several. That half is on the roadmap and commissionable now — a written specification, a timeline and a price, with Kenya's eTIMS transmission as the evidence that we build this kind of thing rather than talk about it.

So would our totals be wrong?

Not necessarily, and it is worth being precise because "wrong" is the wrong word. You can charge a correct total in our system by configuring the rate you actually charge. What you cannot do is hold that total as its parts — which tax, at what rate, owed to which government. If your accounting practice composes that outside the system today, nothing changes for you. If you need the system to hold the composition, it cannot, and that is a data-model limit rather than a setting you have not found.

What about the reform — are you ready for CBS and IBS?

No, and we will not tell you we will be by a date. The transition's defining property is not that new taxes arrive, it is that both systems run at the same time for years, so the requirement it creates is to hold more figures on one line simultaneously — which is precisely the finding on this page. Building that is the same work whether it is called CBS or something else, which is why it is on the list as a shape change rather than as a Brazil feature. On the roadmap and commissionable now, with a specification and a price; we will not name a date on a public page while the transition's own schedule is still being implemented.

Are you collecting CBS and IBS in 2026 or not?

That is a question for your tax adviser and we are deliberately not answering it here. Published accounts of the test year disagree with each other — some describe symbolic rates with no collection obligation, others describe pilot-phase collection — and a page that printed one of those as fact would be doing the thing this corpus exists not to do. What we can tell you is what does not depend on the answer: whichever it is, both systems have to be calculated and reported alongside each other for the length of the transition, and that is the requirement our line cannot meet.

Do you hold ISS rates for our municipalities?

No, and this one is a boundary rather than a backlog. Roughly five and a half thousand municipalities set their own ISS, and any vendor holding that is holding a dataset with a maintenance schedule attached. If your filings depended on our copy being current, you would have moved a real compliance risk onto our release cycle where you cannot see it. Hold the rates you actually charge, keep the source and the date you checked, and let the system record rather than assert.

We run Brazil alongside operations in other countries. Does that work?

Yes, and this is the part of the product that is genuinely strong rather than the part being apologised for. Separate organizations with their own base currencies, their own rates and their own calendars run side by side, with reporting scoped to one or consolidated across several. The caveat is deliberate: amounts in different currencies are shown as themselves rather than converted and summed, because a single total across currencies is a number somebody will act on and no exchange rate makes it true.

Is there a Portuguese-language interface?

Not today. Two halves, and they have different answers. A boundary rather than a backlog: we will not fold a translation into a standard implementation, because a half-translated operational system is worse than an English one — it teaches people to distrust the screens they can read, and that is how a rollout fails quietly rather than early. On the roadmap and commissionable now: as a project of its own with a specification and a price, scoped to the screens your people actually work in. Our Portugal guide argues the neighbouring point about certified software, and the two are worth reading together if language and locality are both on your list.

What is actually good here, then?

The operation rather than the document, and we would rather say that than dress it up. Stock by location with real movement history, receiving matched against orders at the door, reports that run against a period so a transition year can be reproduced instead of reconstructed, and supplier records that survive staff turnover. In a market where most systems are sold on fiscal compliance, buying the operations layer separately from the fiscal one is a legitimate architecture — and if that is where you land, we would rather help you scope it than compete for a job we would do badly.

The question is a number, and ours is one.

Ask any system how many tax figures a single invoice line can carry, and how each is attributed. It is a two-minute question with a structural answer, and it will separate the shortlist faster than a demonstration will. If our answer disqualifies us for the fiscal half, that is a fair conclusion and better reached now.