NF-e rejection 180: check the issuer's tax regime (CRT)
Starting November 16, 2026, SEFAZ compares the CRT (tax regime code) on NF-e and NFC-e invoices with the regime of the issuer's CNPJ in the Receita Federal database (LCC-RFB, which Receita shares with the SEFAZ). If they do not match, the invoice comes back with rejection 180. The rule comes from Technical Note (NT) 2026.007, the same one behind the recipient rejections 181 and 182.
The CRT is in the invoice XML, but it comes from the issuer's record in your ERP or invoicing system: usually the company changed its tax regime and the record still has the old CRT. This guide shows what to do, which CRT matches each situation and how to check the regime through the CNPJAPI API before issuing.
Got a 180 rejection? What to do
- Look up the CNPJ of the issuing company and check the
SimplesNacionalblock in the response. - Compare it with the CRT set up in your invoicing system, using the table below.
- Fix the CRT in the issuer's record (in your ERP or invoicing system) and transmit again.
The most common cases are an MEI that lost its MEI status and still issues with CRT 4, and a company excluded from Simples Nacional that still uses CRT 1. If you are unsure about the right regime, check with your accountant before changing the record. If the company should be in Simples Nacional and the lookup shows it is not, the fix is to sort out its status with your accountant, not to change the CRT.
Which CRT to use
| CRT on the NF-e | Regime | What the lookup should show |
|---|---|---|
| 1 | Simples Nacional | OpcaoPeloSimples: true and OpcaoPeloMEI: false |
| 2 | Simples Nacional, above the gross revenue sublimit | OpcaoPeloSimples: true and OpcaoPeloMEI: false |
| 3 | Regular regime (Regime Normal) | OpcaoPeloSimples: false, or SimplesNacional null |
| 4 | Simples Nacional, MEI | OpcaoPeloMEI: true |
An MEI also shows OpcaoPeloSimples: true, because SIMEI is part of Simples Nacional. So check OpcaoPeloMEI first: an MEI issuing with CRT 1 also gets rejection 180.
The response also includes the dates (DataOpcaoSimples, DataExclusaoSimples, DataOpcaoMEI and DataExclusaoMEI). Each exclusion date refers to its own regime: when the option is false, it shows when the company left. When the option is still true and the exclusion date is in the future, the exit is already scheduled and the CRT must change on that date.
Check it via API
Look up the issuer's CNPJ with GET /{cnpj}. To try it without an account, use the public test key with the fictitious sample 99999999000191, which is a Simples Nacional company (see Authentication):
curl "https://api.cnpjapi.com.br/99999999000191" \
-H "Authorization: Bearer cnpj_teste_exemplos"
"SimplesNacional": {
"OpcaoPeloSimples": true,
"DataOpcaoSimples": "15/08/2019",
"DataExclusaoSimples": "",
"OpcaoPeloMEI": false,
"DataOpcaoMEI": "",
"DataExclusaoMEI": ""
}
For a company outside Simples Nacional, SimplesNacional comes back null (that is the case of the other test key sample, 98765432000198).
In Python, a check to run when registering the issuer or before transmitting:
import requests
API_KEY = "cnpj_teste_exemplos" # replace with your key
def crt_esperado(cnpj: str) -> set[int]:
r = requests.get(
f"https://api.cnpjapi.com.br/{cnpj}",
headers={"Authorization": f"Bearer {API_KEY}"},
timeout=10,
)
r.raise_for_status()
simples = r.json()["SimplesNacional"]
if simples and simples["OpcaoPeloMEI"]:
return {4} # MEI
if simples and simples["OpcaoPeloSimples"]:
return {1, 2} # Simples Nacional
return {3} # Regime Normal
crt_da_nota = 1
if crt_da_nota not in crt_esperado("99999999000191"): # replace with the issuer's CNPJ
print("CRT does not match the regime at Receita: risk of rejection 180")
In Node.js:
async function crtEsperado(cnpj) {
const r = await fetch(`https://api.cnpjapi.com.br/${cnpj}`, {
headers: { Authorization: "Bearer cnpj_your_key" },
});
if (!r.ok) throw new Error(`HTTP ${r.status}`);
const { SimplesNacional: simples } = await r.json();
if (simples?.OpcaoPeloMEI) return [4]; // MEI
if (simples?.OpcaoPeloSimples) return [1, 2]; // Simples Nacional
return [3]; // Regime Normal
}
Where it fits in your system
- When registering the issuer: when you add the company to your ERP or invoicing system, look up the CNPJ and suggest the CRT from the table above.
- Periodic revalidation: the regime changes (exclusion from Simples, loss of MEI status). Revalidate issuing companies before November 16 and monthly after that. If you issue for many companies, as accounting firms do, use batch lookup.
- At issuing time: if the configured CRT is not among the expected ones, warn the user with a clear message ("this company's regime at Receita is Simples Nacional, MEI") instead of letting the invoice come back rejected.
Rejection 180 and rejection 481
Both are about the issuer's CRT, but they compare it against different databases. 481 compares it with the state SEFAZ registry and already existed. 180 is new and compares it with the Receita Federal database. If your invoices started getting 180, check the regime at Receita. If they get 481, the state registry also needs updating.
Frequently asked questions
What is NF-e rejection 180? It is the rejection issued when the CRT (tax regime code) on the invoice does not match the regime of the issuer's CNPJ in the Receita Federal database. It was created by NT 2026.007.
How do I fix rejection 180? Look up the issuing company's CNPJ, check whether it is a Simples Nacional company or an MEI and fix the CRT in your invoicing system: 1 or 2 for Simples Nacional, 3 for the regular regime and 4 for an MEI.
When does rejection 180 take effect? In production, from November 16, 2026, with testing since October 26, 2026, together with the other NT 2026.007 rules. The dates have been postponed more than once: check the NF-e National Portal.
What is the difference between rejection 180 and 481? 481 compares the CRT with the state SEFAZ registry. 180 compares it with the Receita Federal database.
Does it apply to NFC-e? Yes. The issuer rule applies to NF-e (model 55) and NFC-e (model 65), when the issuer is identified by CNPJ.
Next steps
- NF-e rejections 181 and 182: the recipient rules in the same NT.
- Look up a CNPJ: every field in the response.
- CNPJ lookup for ERP: customer and supplier records validated at the source.
- CNPJ lookup for accounting firms: for firms that track the tax regime of many clients.