What type of Documentos Fiscais does Invopop support?
What type of Documentos Fiscais does Invopop support?
Invopop supports NF-e, NFS-e and NFC-e documents. Transport documents (MDF-e and CF-e) are not currently supported.
Should I change my integration for the 2026 NFS-e federal tax format regulation?
Should I change my integration for the 2026 NFS-e federal tax format regulation?
It is not necessary, any fields pertaining to the previous municipal tax implementation will be ignored and the invoice will already have all the data to be compliant. However, it is always recommended to remove ignored fields to avoid confusion and keep your documents clean.
Issuing B2C invoices is mandatory in Brazil?
Issuing B2C invoices is mandatory in Brazil?
Yes, all transaction are mandatory in Brazil.
Do you support other types of documentos fiscais eletrรดnicos?
Do you support other types of documentos fiscais eletrรดnicos?
At the moment, only NFC-e and NFS-e are supported. We are working on adding support for other types.
Where can I find the mapping of GOBL fields to DF-e documents?
Where can I find the mapping of GOBL fields to DF-e documents?
For further details on how GOBL prepares data for conversion, see:
How does ISS tax work in Brazil?
How does ISS tax work in Brazil?
ISS (Imposto Sobre Serviรงos) is not treated as a standard transactional tax calculated on top of a net amount. Instead, it is an informative tax embedded in the final priceโthe invoice only reports what portion of the total corresponds to ISS.In GOBL, ISS is flagged as an โinformativeโ tax category. This means:
- ISS must be added to the GOBL invoice like any other tax, with the proper percentage.
- The tax amount is not added to the price; it represents the portion of the total that corresponds to ISS.
- The NFS-e document displays ISS as informational data, reflecting what was already embedded in the final price.
- Do not use
prices_includewith ISSโsince ISS is informative, it should not be treated as a price-inclusive tax.
How do I configure Chargebee or Stripe imports for Brazilian invoices with ISS?
How do I configure Chargebee or Stripe imports for Brazilian invoices with ISS?
Billing platforms like Chargebee and Stripe are not aware of ISS particularities and tend to wrongly treat ISS as a typical tax included in the price. This causes
invalid-prices-include errors during import because that pricing model is not compatible with how ISS works for NFS-e.The correct setup is:- Do not configure ISS as a tax in your billing platform (Chargebee, Stripe, etc.).
- Prices in your billing platform should already be the final public prices with ISS embedded.
- Add a Modify Silo Entry step to your import workflow that injects the ISS tax with the desired percentage into the GOBL invoice.
What are the required and optional fields for NF-e invoices in Brazil?
What are the required and optional fields for NF-e invoices in Brazil?
NF-e (
Address fields:
Valid Brazilian state codes: AC, AL, AM, AP, BA, CE, DF, ES, GO, MA, MG, MS, MT, PA, PB, PE, PI, PR, RJ, RN, RO, RR, RS, SC, SE, SP, TO
Payment means mapping:
br-nfe-v4) covers electronic invoices for the circulation of goods in Brazil. It maps to two fiscal models:- Model 55 โ NF-e: B2B or business-to-government transactions
- Model 65 โ NFC-e: B2C consumer transactions (simplified)
Notation
- โ Required โ validation will fail if missing
- โฌ Optional โ can be omitted
- ๐ง Auto-normalized โ set automatically if not provided
Invoice Header
| Field | Required | Notes |
|---|---|---|
$schema | auto | https://gobl.org/draft-0/bill/invoice |
$addons | โ | ["br-nfe-v4"] |
$tags | โฌ | Use ["simplified"] for NFC-e (model 65) |
uuid | โฌ | Auto-generated if absent |
type | โฌ | Defaults to standard |
series | โ | Pattern: ^(?:0|[1-9]{1}[0-9]{0,2})$ |
code | โฌ | Required to sign the document. |
issue_date | โ | ISO date, e.g. "2024-11-15" |
currency | โ | Must be "BRL" |
tax | โ | See Tax Extensions |
notes | โ | At least one note with key: "reason" required |
lines | โ | At least one line item |
charges | โฌ | Document-level charges |
discounts | โฌ | Document-level discounts |
supplier | โ | See Supplier |
customer | โ
model 55 โฌ model 65 | See Customer |
payment | โ if not fully paid | See Payment |
ordering | โฌ | |
delivery | โฌ |
Tax Extensions
Thetax object is required and must carry the following extensions:| Extension | Required | Values |
|---|---|---|
tax.ext.br-nfe-model | โ | "55" (NF-e, B2B) or "65" (NFC-e, B2C) |
tax.ext.br-nfe-presence | โ | See table below. Restricted by model. |
tax.ext.br-nfe-regime | โฌ | "1"=Simples Nacional, "2"=Simples Nacional Excess, "3"=Normal |
tax.ext.br-nfe-fiscal-incentive | โฌ | "1"=Has incentive, "2"=No incentive |
br-nfe-presence allowed values:| Code | Description | NF-e (55) | NFC-e (65) |
|---|---|---|---|
0 | N/A | โ | โ |
1 | In-person | โ | โ |
2 | Internet | โ | โ |
3 | Tele-service | โ | โ |
4 | Home delivery | โ | โ |
5 | Off-site | โ | โ |
9 | Others | โ | โ |
Notes
At least one note withkey: "reason" is required. It maps to the NF-e natOp field (nature of the operation).| Field | Required | Notes |
|---|---|---|
key | โ | Must be "reason" |
text | โ | 1โ60 characters |
Supplier
| Field | Required | Notes |
|---|---|---|
name | โ | |
tax_id.country | โ | "BR" |
tax_id.code | โ | CNPJ (14 digits) or CPF (11 digits), Mod11 validated |
identities[].key: "br-nfe-state-reg" | โ | State Registration (Inscriรงรฃo Estadual) |
addresses | โ | At least one โ see address fields below |
ext.br-ibge-municipality | โ | 7-digit IBGE municipality code, pattern ^\d{7}$ |
emails | โฌ | |
telephones | โฌ |
| Field | Required | Notes |
|---|---|---|
street | โ | |
num | โ | Street number |
locality | โ | Maps to bairro (neighbourhood) |
state | โ | One of 27 Brazilian state codes (see below) |
code | โ | Postal code, pattern ^\d{5}-?\d{3}$ |
region | โฌ | Municipality name, e.g. "Salvador" |
street_extra | โฌ | Complement, e.g. "Bloco C" |
country | โฌ | Defaults to "BR" |
Customer
Model 55 (NF-e): Customer is โ Required
| Field | Required | Notes |
|---|---|---|
tax_id.country | โ | "BR" |
tax_id.code | โ | CNPJ or CPF |
addresses | โ | At least one โ same sub-fields as supplier address |
ext.br-ibge-municipality | โ | Required when addresses are present |
name | โฌ | Recommended |
Model 65 (NFC-e): Customer is โฌ Optional
For simplified B2C consumer transactions the customer can be omitted entirely.Line Items
| Field | Required | Notes |
|---|---|---|
quantity | โ | |
item.name | โ | |
item.price | โ | Must be zero or positive |
item.key | โฌ | "goods" or "services" |
item.unit | โฌ | |
item.ref | โฌ | |
item.description | โฌ |
Required tax categories per line
| Category | Required | Notes |
|---|---|---|
ICMS | โ | Imposto sobre Circulaรงรฃo de Mercadorias e Serviรงos |
PIS | โ | Programa de Integraรงรฃo Social |
COFINS | โ | Contribuiรงรฃo para o Financiamento da Seguridade Social |
IPI | โฌ | Imposto sobre Produtos Industrializados |
Optional item extensions
| Field | Required | Notes |
|---|---|---|
item.ext.br-nfe-cfop | โฌ | 4-digit CFOP (Cรณdigo Fiscal de Operaรงรตes e Prestaรงรตes), pattern ^[1-7]\d{3}$ |
item.identities[].key: "ncm" | โฌ | NCM product code (Nomenclatura Comum do Mercosul) |
item.identities[].key: "gtin" | โฌ | Product barcode (GTIN) |
item.identities[].key: "gtin+taxable" | โฌ | Taxable product GTIN |
Payment
Required when the invoice is not fully paid (i.e.totals.due > 0).| Field | Required | Notes |
|---|---|---|
payment.instructions | โ | Must be present |
payment.instructions.key | โ | See means table below |
payment.instructions.ext.br-nfe-payment-means | ๐ง | Auto-set from key. Must be set manually when key: "other" |
payment.advances[].key | โฌ | Same keys as instructions |
payment.advances[].ext.br-nfe-payment-means | ๐ง | Auto-set from key |
| GOBL key | NF-e code | Description |
|---|---|---|
cash | 01 | Dinheiro |
cheque | 02 | Cheque |
card | 03 | Cartรฃo de Crรฉdito |
debit-transfer+debit | 04 | Cartรฃo de Dรฉbito |
credit-transfer | 18 | Transferรชncia bancรกria |
online | 18 | Carteira Digital |
other | 99 | Outros (set ext.br-nfe-payment-means manually) |
What are the required and optional fields for NFS-e invoices in Brazil?
What are the required and optional fields for NFS-e invoices in Brazil?
NFS-e (
Address fields:
Valid Brazilian state codes: AC, AL, AM, AP, BA, CE, DF, ES, GO, MA, MG, MS, MT, PA, PB, PE, PI, PR, RJ, RN, RO, RR, RS, SC, SE, SP, TO
br-nfse-v1) covers electronic service invoices (Notas Fiscais de Serviรงos Eletrรดnicas) in Brazil. Service invoices are regulated at the municipal level, so several fields carry municipality-specific codes. The addon implements the ABRASF national standard (v2.04).Notation
- โ Required โ validation will fail if missing
- โฌ Optional โ can be omitted
- โ Not supported โ must be absent; validation will fail if present
- ๐ง Auto-normalized โ set automatically if not provided
Invoice Header
| Field | Required | Notes |
|---|---|---|
$schema | auto | https://gobl.org/draft-0/bill/invoice |
$addons | โ | ["br-nfse-v1"] |
$tags | โฌ | |
uuid | โฌ | Auto-generated if absent |
type | โฌ | Defaults to standard |
series | โ | Any non-empty string |
code | โฌ | Required to sign the document. Pattern: ^[1-9][0-9]*$ |
issue_date | โ | ISO date, e.g. "2024-11-15" |
currency | โ | Must be "BRL" |
tax | โฌ | |
notes | โฌ | |
lines | โ | At least one line item |
charges | โ | Not supported by NFS-e |
discounts | โ | Not supported by NFS-e |
supplier | โ | See Supplier |
customer | โฌ | See Customer |
payment | โฌ | |
ordering | โฌ | |
delivery | โฌ |
Supplier
| Field | Required | Notes |
|---|---|---|
name | โ | |
tax_id.country | โ | "BR" |
tax_id.code | โ | CNPJ (14 digits) or CPF (11 digits), Mod11 validated |
identities[].key: "br-nfse-municipal-reg" | โ | Municipal Registration (Inscriรงรฃo Municipal) |
identities[].key: "br-nfse-national-reg" | โฌ | National Registration |
addresses | โ | At least one โ see address fields below |
ext.br-ibge-municipality | โ | 7-digit IBGE municipality code, pattern ^\d{7}$ |
ext.br-nfse-simples | โ | Simples Nacional opt-in status โ see values below |
ext.br-nfse-fiscal-incentive | โ | Fiscal incentive status. ๐ง Auto-defaults to "2" if absent |
ext.br-nfse-special-regime | โฌ | Special tax regime โ see values below |
emails | โฌ | |
telephones | โฌ |
| Field | Required | Notes |
|---|---|---|
street | โ | |
num | โ | Street number |
locality | โ | Maps to bairro (neighbourhood) |
state | โ | One of 27 Brazilian state codes (see below) |
code | โ | Postal code, pattern ^\d{5}-?\d{3}$ |
region | โฌ | Municipality name, e.g. "Rio de Janeiro" |
street_extra | โฌ | Complement, e.g. "Torre A" |
country | โฌ | Defaults to "BR" |
br-nfse-simples values:| Code | Description |
|---|---|
1 | Opt-in (Optante) |
2 | Opt-out (Nรฃo optante) |
br-nfse-fiscal-incentive values:| Code | Description |
|---|---|
1 | Has incentive (Possui incentivo) |
2 | Does not have incentive (Nรฃo possui incentivo) โ default |
br-nfse-special-regime values:| Code | Description |
|---|---|
1 | Municipal micro-enterprise (Microempresa municipal) |
2 | Estimated (Estimativa) |
3 | Professional Society (Sociedade de profissionais) |
4 | Cooperative (Cooperativa) |
5 | Single micro-entrepreneur โ MEI (Microempreendedor individual) |
6 | Micro-enterprise or Small Business โ ME/EPP |
Customer
The customer is optional for NFS-e. When provided, no additional fields beyond the standard GOBL rules are enforced (name recommended whentax_id is set).| Field | Required | Notes |
|---|---|---|
name | โฌ | Recommended if tax_id is set |
tax_id.country | โฌ | "BR" |
tax_id.code | โฌ | CNPJ or CPF |
addresses | โฌ | |
ext.br-ibge-municipality | โ | Required when addresses are present |
Line Items
| Field | Required | Notes |
|---|---|---|
quantity | โ | |
item.name | โ | |
item.price | โ | Must be zero or positive |
item.key | โฌ | Typically "services" |
item.unit | โฌ | |
item.ref | โฌ | |
item.description | โฌ |
Required item extension
| Field | Required | Notes |
|---|---|---|
item.ext.br-nfse-service | โ | Municipality-defined service code (e.g. "10.5"). Typically from Lei Complementar 116/2003 |
Optional item extensions
| Field | Required | Notes |
|---|---|---|
item.ext.br-nfse-cnae | โฌ | CNAE code (National Classification of Economic Activities). Pattern: ^\d{2}[\s\.\-\/]?\d{2}[\s\.\-\/]?\d[\s\.\-\/]?\d{2}$ |
item.ext.br-nfse-operation | โฌ | 6-digit operation indicator for IBS/CBS determination. All-or-none with tax-status and tax-class |
item.ext.br-nfse-tax-status | โฌ | 3-digit CST (Cรณdigo de Situaรงรฃo Tributรกria) for IBS/CBS. All-or-none |
item.ext.br-nfse-tax-class | โฌ | 6-digit tax classification code for IBS/CBS. All-or-none |
Required tax categories per line
| Category | Required | Notes |
|---|---|---|
ISS | โ | Imposto Sobre Serviรงos |
ISS tax extensions
| Field | Required | Notes |
|---|---|---|
taxes[ISS].ext.br-nfse-iss-liability | โ | ISS liability status. ๐ง Defaults to "1" if not set |
taxes[ISS].ext.br-ibge-municipality | โฌ | Override the municipality where ISS is levied, when it differs from the supplierโs |
br-nfse-iss-liability values:| Code | Description |
|---|---|
1 | Liable (Exigรญvel) โ default |
2 | Not subject (Nรฃo incidรชncia) |
3 | Exempt (Isenรงรฃo) |
4 | Export (Exportaรงรฃo) |
5 | Immune (Imunidade) |
6 | Suspended Judicially (Suspensa por Decisรฃo Judicial) |
7 | Suspended Administratively (Suspensa por Processo Administrativo) |
Participate in our community
Ask and answer questions about Brazilโs regulation โ