---
title: "Reforma Tributária"
description: "Campos da Reforma Tributária (NBS, Classificação Tributária IBS/CBS, Indicador da Operação, PIS/COFINS e taxationType) no módulo NFE.io para WHMCS e a ordem de precedência aplicada na emissão."
source_url: https://nfe.io/docs/plugins/whmcs/reforma-tributaria
last_updated: 2026-07-30
---

O módulo suporta os campos da Reforma Tributária (RTC) na emissão de NFS-e. Esta página reúne o que cada campo significa, **onde configurá-lo** e **qual valor prevalece** quando ele está definido em mais de um lugar.

:::note Aplicabilidade — nenhum destes campos é de preenchimento universal

Os campos se dividem em dois grupos com regras diferentes:

- **NBS, Indicador da Operação e Classificação Tributária**: obrigatórios apenas para empresas nos regimes **Lucro Real** ou **Lucro Presumido**. Empresas em outros regimes podem preenchê-los, mas não são obrigadas.
- **PIS, COFINS e Tipo de Tributação**: **opcionais em qualquer regime**. Preencha somente se precisar declarar esses tributos ou definir o regime de tributação do ISSQN.

Em ambos os casos, campos em branco são omitidos do payload e não afetam a emissão — quem não precisa deles não precisa preencher nada.

Para o contexto completo da Reforma Tributária, consulte a [documentação da NFE.io sobre o tema](../../../../documentacao/reforma-tributaria/index.md).

:::

## Campos e onde configurá-los

| Campo | Emissor (padrão) | Código de serviço | Alíquotas & Retenções | Preenchimento |
| --- | :---: | :---: | :---: | --- |
| Nomenclatura Brasileira de Serviços (NBS) | ✅ | ✅ | — | Obrigatório no Lucro Real/Presumido |
| Indicador da Operação (`operationIndicator`) | ✅ | ✅ | — | Obrigatório no Lucro Real/Presumido |
| Classificação Tributária IBS/CBS (`classCode`) | ✅ | ✅ | — | Obrigatório no Lucro Real/Presumido |
| Retenção de ISS (%) | ✅ | — | ✅ | Opcional |
| Alíquota de PIS (%) | ✅ | — | ✅ | Opcional |
| Alíquota de COFINS (%) | ✅ | — | ✅ | Opcional |
| Tipo de Tributação do ISSQN (`taxationType`) | ✅ | — | ✅ | Opcional |

- **Emissor (padrão)**: [Configurações do Módulo → Definições de Emissores](./configuracao.md)
- **Código de serviço**: [Código de Serviço](./codigos-servicos.md), por produto/serviço
- **Alíquotas & Retenções**: [Retenções](./retencoes.md), por código de serviço

## Precedência na emissão

A resolução dos valores segue duas regras distintas — atenção à diferença, ela é a origem da maior parte das dúvidas.

### Classificação do serviço (NBS, Indicador da Operação, Classificação Tributária)

```
Produto com código de serviço personalizado?
  ├── Sim → usa os campos do registro do código de serviço (mesmo que vazios)
  └── Não → usa os campos padrão do emissor
```

:::warning Não há herança campo a campo

Se o produto possui um código de serviço personalizado, os três campos vêm **do registro do produto**. Deixá-los em branco ali significa enviá-los vazios na nota — o padrão do emissor **não** entra como reserva.

:::

### Alíquotas e tributação (ISS, PIS, COFINS, Tipo de Tributação)

```
Existe alíquota cadastrada para o código de serviço?
  ├── Sim → usa o valor da tela Alíquotas & Retenções
  └── Não → usa o valor padrão do emissor
             └── Vazio → campo omitido na nota
```

Aqui a herança é **campo a campo**: é possível, por exemplo, definir só a alíquota de PIS no código de serviço e deixar COFINS e Tipo de Tributação herdando o padrão do emissor.

## Qual emissor é usado

Antes de resolver qualquer campo, o módulo determina o emissor da nota:

1. Se o cliente possui um emissor associado ([Associar Emissor](./associar-emissor.md)), esse emissor e seus padrões são usados.
2. Caso contrário, é usado o **emissor padrão** definido nas configurações.

Os códigos de serviço e as alíquotas são sempre buscados **para o emissor resolvido** — cada emissor tem seus próprios registros.

## Agrupamento das notas

Uma NFS-e comporta apenas um conjunto de atributos fiscais. Por isso, os itens da fatura são agrupados pela combinação completa de `código de serviço` + `NBS` + `indicador da operação` + `classificação tributária`, e **cada grupo gera uma nota própria**.

Uma fatura com itens de classificações fiscais diferentes resulta em múltiplas notas fiscais.

## Como os valores chegam à nota

Para conferência e diagnóstico, estes são os campos enviados no payload de emissão:

| Configuração no módulo | Campo na API |
| --- | --- |
| NBS | `nbsCode` |
| Indicador da Operação | `IbsCbs.operationIndicator` |
| Classificação Tributária | `IbsCbs.classCode` |
| Retenção de ISS (%) | `issAmountWithheld` (valor calculado) |
| Alíquota de PIS (%) | `pisRate` (fração decimal) e `pisAmount` (valor calculado) |
| Alíquota de COFINS (%) | `cofinsRate` (fração decimal) e `cofinsAmount` (valor calculado) |
| Tipo de Tributação (ISSQN) | `taxationType` |

Notas sobre o cálculo:

- Você informa as alíquotas de PIS e COFINS em **percentual** (ex.: `0,65` e `3,00`). O módulo as envia à API como **fração decimal** (`0.0065` e `0.03`), e na nota elas voltam a aparecer como percentual — 0,65% e 3,00%.
- Os valores são calculados sobre o valor dos serviços do grupo fiscal, arredondados para duas casas: `valor dos serviços × alíquota ÷ 100`. Em uma nota de R$ 100,00 com as alíquotas do exemplo, isso resulta em R$ 0,65 de PIS e R$ 3,00 de COFINS.
- Os valores de PIS e COFINS são enviados **sem retenção**.
- Campos vazios são **omitidos** do payload e não afetam a emissão.

O payload completo de cada emissão fica registrado no Log de Módulo do WHMCS quando o Modo Depuração está ativo.

## Tipo de Tributação do ISSQN

Valores aceitos no campo **Tipo de Tributação (ISSQN)** (`taxationType`):

| Valor | Descrição |
| --- | --- |
| `None` | Nenhum |
| `WithinCity` | Tributável no município |
| `OutsideCity` | Tributável fora do município |
| `Export` | Exportação de serviço |
| `Free` | Isento |
| `Immune` | Imune |
| `SuspendedCourtDecision` | Suspenso por decisão judicial |
| `SuspendedAdministrativeProcedure` | Suspenso por processo administrativo |
| `OutsideCityFree` | Fora do município / Isento |
| `OutsideCityImmune` | Fora do município / Imune |
| `OutsideCitySuspended` | Fora do município / Suspenso |
| `OutsideCitySuspendedAdministrativeProcedure` | Fora do município / Suspenso (processo administrativo) |
| `ObjectiveImune` | Imune objetivo |

Quando o campo não é informado em nenhum nível, a API assume `WithinCity`.

## Tabelas de referência

Use as tabelas oficiais para determinar os códigos corretos para os seus serviços:

- [Tabela de Correlação — LC 116, NBS, Indicador de Operação e Classificação Tributária](../../../../documentacao/reforma-tributaria/conceitos-funcionais/tabelas-de-referencia/lc116-nbs-correlation-table-pt-br.md)
- [Tabela de Referência — Indicador da Operação (indOp)](../../../../documentacao/reforma-tributaria/conceitos-funcionais/tabelas-de-referencia/doc-ref-operationindicator-table-pt-br.md)
- [Tabela de Referência — CST e Classificação Tributária (IBS/CBS)](../../../../documentacao/reforma-tributaria/conceitos-funcionais/tabelas-de-referencia/doc-ref-classcode-situationcode-table.md)

## Reemissão

A [reemissão de uma nota](./notas-fiscais.md) preserva todos os atributos fiscais da nota original (NBS, indicador de operação, classificação tributária, PIS/COFINS e tipo de tributação). Para reemitir com uma classificação diferente, ajuste antes a configuração do emissor ou do código de serviço e gere uma nova nota.
