> ## Documentation Index
> Fetch the complete documentation index at: https://docs.engineapi.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Referência de campos: NFe

> Todo campo do payload de emissão de NFe (POST /v1/nfe): tipo, tamanho, tag do leiaute e obrigatoriedade.

Esta página lista **exatamente** o que a engineAPI aceita hoje no payload de emissão
de NFe, nem mais, nem menos, com a tag do leiaute de cada campo onde ela já
foi catalogada. Alguns campos aceitos aqui ainda não têm efeito completo no documento fiscal final (ex.: os campos ANTIGOS de ICMS-ST, `baseCalculoST`/`aliquotaST`/`valorST`, hoje recusados com `422 ICMS_ST_NAO_SUPORTADO` porque a substituição tributária passou a usar os nomes do leiaute; ver [Erros e Rejeições](/guides/errors)); esta página descreve o **contrato de entrada**, não a cobertura fiscal completa do leiaute oficial. Formatos decimais fixos respeitam casas e teto do dicionário: `13v2` aceita até 13 dígitos inteiros e 2 casas; os pesos `12v3` aceitam até 3 casas. Excesso devolve `400` com campo e valor, sem arredondamento silencioso. `valorUnitario` conserva as até 10 casas e respeita os 11 dígitos inteiros do `11v0-10`. Ver [Erros e respostas](/guides/errors#casas-decimais-em-valores-monetrios-400). Tamanho, formato e enumeração do leiaute recusam **400** na entrada, nomeando campo e faixa, **antes** de alocar número fiscal.

**Leiaute:** versão 4.00  · **Contrato revisado em:** 2026-09-17&#x20;

**206 campos** documentados abaixo (contagem recursiva, incluindo objetos aninhados e itens de array).

***

## Navegação por grupo do leiaute

1. [Identificação](#grupo-identificacao)
2. [Documento referenciado](#grupo-documento-referenciado)
3. [Emitente](#grupo-emitente)
4. [Destinatário](#grupo-destinatario)
5. [Itens](#grupo-itens)
6. [Totais](#grupo-totais) *(sem campo no contrato hoje, ver nota)*
7. [Transporte](#grupo-transporte)
8. [Cobrança](#grupo-cobranca)
9. [Pagamento](#grupo-pagamento)
10. [Informações adicionais](#grupo-informacoes-adicionais)
11. [Tributação assistida (Cérebro Fiscal)](#grupo-cerebro-fiscal)

***

<h2 id="grupo-identificacao">
  Identificação
</h2>

<ParamField path="naturezaOperacao" type="string">
  **Tamanho:** 1-60 · **Tag do leiaute:** `natOp` (grupo `ide: Identificação da NF-e`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

  Natureza da operação, texto livre (ex.: "VENDA DE MERCADORIA")

  **Condição do leiaute:** Texto livre. Ausente, a engineAPI escreve "Venda de Mercadoria", porque o leiaute exige a tag preenchida.

  *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/ide/natOp*
</ParamField>

<ParamField path="serie" type="integer">
  **Tamanho:** 1-3 (0 a 999) · **Tag do leiaute:** `serie` (grupo `ide: Identificação da NF-e`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** preenchido automaticamente pela engineAPI

  Série da NF-e. Ausente = série padrão do emissor

  **Condição do leiaute:** Ausente = série padrão do emissor. Emitente comum usa 0-889; o leiaute reserva 890-899 para avulsa do Fisco e 900-999 para contingência.

  *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/ide/serie (TSerie)*
</ParamField>

<ParamField path="numero" type="integer">
  **Tamanho:** 1-9 · **Tag do leiaute:** `nNF` (grupo `ide: Identificação da NF-e`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** preenchido automaticamente pela engineAPI

  Número da NF-e (passthrough). Ausente = alocado automaticamente pela engineAPI

  **Condição do leiaute:** Ausente = número alocado pela engineAPI no controle de numeração do emissor. Informar o número é passthrough e a responsabilidade pela sequência passa a ser do integrador.

  *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/ide/nNF (TNF)*
</ParamField>

<ParamField path="tpNF" type="integer">
  **Tamanho:** 1 · **Tag do leiaute:** `tpNF` (grupo `ide: Identificação da NF-e`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

  Tipo de operação: 0=entrada, 1=saída. Padrão: saída

  **Condição do leiaute:** Ausente = 1 (saída).

  *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/ide/tpNF*
</ParamField>

<ParamField path="idDest" type="number">
  **Tamanho:** 1 · **Tag do leiaute:** `idDest` (grupo `ide: Identificação da NF-e`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** derivado de outros campos (calculado)

  Identificador de local de destino: 1=interna, 2=interestadual, 3=exterior. Ausente: a API deriva do 1º dígito do CFOP dos itens (1/5=interna, 2/6=interestadual, 3/7=exterior). A UF do emissor vem do cadastro da empresa. Valor explícito vence sempre. Itens com CFOPs que derivam idDest diferentes recusam 422 CFOP\_IDDEST\_DIVERGENTE nomeando os códigos

  **Condição do leiaute:** Ausente: derivado do 1º dígito do CFOP dos itens (1/5=interna, 2/6=interestadual, 3/7=exterior). Valor explícito vence sempre. Itens com CFOPs que derivam idDest diferentes: 422 CFOP\_IDDEST\_DIVERGENTE. A UF do emissor vem do cadastro.

  *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/ide/idDest*

  | Valor | Significado                 |
  | ----- | --------------------------- |
  | `1`   | Operação interna (mesma UF) |
  | `2`   | Operação interestadual      |
  | `3`   | Operação com o exterior     |
</ParamField>

<ParamField path="indFinal" type="integer">
  **Tamanho:** 1 · **Tag do leiaute:** `indFinal` (grupo `ide: Identificação da NF-e`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

  Indica operação com consumidor final: 0=não, 1=sim. Ausente: o motor deriva 1 quando o destinatário é não contribuinte (indicadorIE=9 ou CPF), conforme NT 2016.002 da SEFAZ; nos demais casos vale 0. Informar 0 com destinatário não contribuinte recusa com 422 INDFINAL\_INCOERENTE\_COM\_DESTINATARIO antes de numerar

  **Condição do leiaute:** Ausente = 0.

  *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/ide/indFinal*
</ParamField>

<ParamField path="indPres" type="integer">
  **Tamanho:** 1 · **Tag do leiaute:** `indPres` (grupo `ide: Identificação da NF-e`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

  Indicador de presença do comprador: 0=não se aplica, 1=presencial, 2=internet, 3=teleatendimento, etc.

  **Condição do leiaute:** Ausente = 1 (presencial).

  *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/ide/indPres*
</ParamField>

<ParamField path="finNFe" type="integer">
  **Tamanho:** 1 · **Tag do leiaute:** `finNFe` (grupo `ide: Identificação da NF-e`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

  Finalidade da emissão: 1=normal, 2=complementar, 3=ajuste, 4=devolução, 5=nota de crédito, 6=nota de débito. Ausente = 1. As finalidades 2, 3 e 4 exigem "referenciadas" (a nota original): sem o grupo a SEFAZ rejeitaria a nota DEPOIS de consumir o número (cStat 254 na finalidade 2, cStat 321 na 4), então a API recusa com 422 FINALIDADE\_SEM\_NFREF antes de numerar. As finalidades 3 e 4 exigem ainda "pagamentos" com forma "90" (sem pagamento).

  **Condição do leiaute:** Ausente = 1 (normal). A engineAPI deriva desta lista a validação do contrato e recusa valores fora de 1 a 6 antes da numeração. As finalidades 2, 3 e 4 exigem o grupo de documento referenciado (campo referenciadas): sem ele a engineAPI recusa com 422 FINALIDADE\_SEM\_NFREF ANTES de numerar. É regra de validação de negócio da SEFAZ (tabela cStat), não constraint do XSD: sem a guarda, a SEFAZ rejeitaria a nota DEPOIS de consumir o número, com cStat 254 na finalidade 2 (complementar) e cStat 321 na finalidade 4 (devolução); a finalidade 3 (ajuste) não tem cStat dedicado confirmado. As finalidades 3 e 4 exigem ainda pagamentos com forma 90 (sem pagamento), regra YA02-04 do MOC.

  *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/ide/finNFe (TFinNFe)*
</ParamField>

***

<h2 id="grupo-documento-referenciado">
  Documento referenciado
</h2>

Array na raiz do corpo, cada entrada com `chaveAcesso` (44 dígitos da nota original), que vira a tag do documento referenciado no leiaute. `finNFe: 2` (complementar), `3` (ajuste) e `4` (devolução) exigem este campo; ver [Erros e Rejeições](/guides/errors).

<ParamField path="referenciadas" type="object[]">
  **Tag do leiaute:** `NFref` (grupo `ide: Identificação da NF-e`) · **Obrigatoriedade do leiaute:** condicional no leiaute

  Documentos fiscais referenciados (grupo NFref do leiaute, máximo 500). Obrigatório em finNFe 2 (complementar), 3 (ajuste) e 4 (devolução): é o que liga a nota nova à original. Em finNFe 2 vale exatamente um

  **Condição do leiaute:** Opcional no XSD (minOccurs 0), mas obrigatório por regra de negócio da SEFAZ nas finalidades 2 (complementar), 3 (ajuste) e 4 (devolução). Uma entrada do array vira um subgrupo NFref do leiaute, até 999. Cada chave entra uma única vez.

  **Nota do leiaute:** Grupo, não campo: NFref é o contêiner de um documento referenciado.

  *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/ide/NFref (minOccurs="0" maxOccurs="999")*

  <Expandable title="cada item tem 1 campo(s)">
    <ParamField path="referenciadas[].chaveAcesso" type="string" required>
      **Tamanho:** 44 · **Tag do leiaute:** `refNFe` (grupo `ide: Identificação da NF-e`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

      Chave de acesso do documento referenciado (44 dígitos): NF-e (modelo 55), NFC-e (65) ou CF-e SAT (59). Vira a tag refNFe do documento (padrão: `^\d{44}$`)

      **Condição do leiaute:** Chave de acesso da NF-e ou NFC-e referenciada, 44 dígitos. O leiaute prevê o grupo como uma escolha entre seis variantes e a engineAPI escreve a primeira delas (refNFe, entre documentos eletrônicos): as variantes de nota de papel, produtor rural, CT-e, cupom de ECF e chave com código numérico zerado ainda não são suportadas. A chave é conferida antes da numeração: dígito verificador pelo módulo 11, código de UF na tabela do IBGE e modelo 55 ou 65.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/ide/NFref/refNFe (TChNFe)*
    </ParamField>
  </Expandable>
</ParamField>

***

<h2 id="grupo-emitente">
  Emitente
</h2>

Os dados completos do emitente (razão social, CNPJ, endereço, Inscrição Estadual) vêm do cadastro da empresa selecionada em `issuerId`, não são enviados campo a campo no payload de emissão.

<ParamField path="issuerId" type="string">
  **Tag do leiaute:** sem tag própria no XML (grupo `engineAPI: plataforma`) · **Obrigatoriedade do leiaute:** não é campo do leiaute (informativo/de compatibilidade) · **Preenche:** você, na requisição

  UUID do emissor (retornado por POST /v1/companies). Opcional com 1 emissor cadastrado; obrigatório com 2+ (padrão: `^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$`)

  **Condição do leiaute:** Opcional com um emissor cadastrado; obrigatório com dois ou mais (a API não escolhe o CNPJ emitente por conta própria).

  **Nota do leiaute:** Campo de plataforma: identifica qual emissor cadastrado assina o documento. Não existe no leiaute fiscal, onde o emitente é identificado pelo CNPJ no grupo emit.

  *Fonte do leiaute: contrato da engineAPI (POST /v1/companies devolve o UUID)*
</ParamField>

***

<h2 id="grupo-destinatario">
  Destinatário
</h2>

<ParamField path="destinatario" type="object" required>
  **Tag do leiaute:** `dest` (grupo `dest: Identificação do Destinatário`) · **Obrigatoriedade do leiaute:** condicional no leiaute

  **Condição do leiaute:** Obrigatório na NF-e. O leiaute marca o grupo como opcional na estrutura porque o mesmo tipo descreve a NFC-e, em que a venda pode sair sem identificação do consumidor.

  **Nota do leiaute:** Grupo, não campo: dest é o contêiner dos dados de identificação do destinatário.

  *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/dest*

  <Expandable title="6 campo(s)">
    <ParamField path="destinatario.cnpjCpf" type="string" required>
      **Tamanho:** 14 (CNPJ) ou 11 (CPF) · **Tag do leiaute:** `CNPJ` (grupo `dest: Identificação do Destinatário`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      CNPJ (14 dígitos) ou CPF (11 dígitos) do destinatário, só números

      **Condição do leiaute:** O leiaute tem as duas tags em escolha exclusiva: CNPJ para pessoa jurídica (14 dígitos) e CPF para pessoa física (11 dígitos). A engineAPI recebe o documento num campo só e o motor fiscal escolhe a tag pelo tamanho.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/dest/CNPJ (TCnpj) e /CPF (TCpf)*
    </ParamField>

    <ParamField path="destinatario.nome" type="string" required>
      **Tamanho:** 2-60 · **Tag do leiaute:** `xNome` (grupo `dest: Identificação do Destinatário`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

      Razão social ou nome completo do destinatário

      **Condição do leiaute:** Obrigatório sempre que o grupo do destinatário é emitido, que na NF-e é sempre. O leiaute o marca como opcional na estrutura pelo mesmo motivo do grupo dest.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/dest/xNome*
    </ParamField>

    <ParamField path="destinatario.ie" type="string">
      **Tamanho:** 2-14 · **Tag do leiaute:** `IE` (grupo `dest: Identificação do Destinatário`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

      Inscrição Estadual do destinatário. Obrigatória (validada pela SEFAZ contra o CNPJ) quando indicadorIE = 1

      **Condição do leiaute:** Obrigatória nas operações com contribuinte do ICMS, ou seja, quando indicadorIE = 1. A SEFAZ valida a inscrição contra o CNPJ informado.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/dest/IE (TIeDestNaoIsento)*
    </ParamField>

    <ParamField path="destinatario.indicadorIE" type="integer">
      **Tamanho:** 1 · **Tag do leiaute:** `indIEDest` (grupo `dest: Identificação do Destinatário`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      Indicador de IE do destinatário: 1 = contribuinte (exige ie); 2 = isento; 9 = não contribuinte

      **Condição do leiaute:** Ausente = 9 (não contribuinte).

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/dest/indIEDest*
    </ParamField>

    <ParamField path="destinatario.email" type="string">
      **Tamanho:** 1-60 · **Tag do leiaute:** `email` (grupo `dest: Identificação do Destinatário`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

      E-mail do destinatário (informativo, não usado para envio)

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/dest/email*
    </ParamField>

    <ParamField path="destinatario.endereco" type="object" required>
      **Tag do leiaute:** `enderDest` (grupo `enderDest: Endereço do Destinatário`) · **Obrigatoriedade do leiaute:** condicional no leiaute

      **Condição do leiaute:** Obrigatório na NF-e, junto com o grupo do destinatário. O leiaute o marca como opcional na estrutura pelo mesmo motivo do grupo dest.

      **Nota do leiaute:** Grupo, não campo: enderDest é o contêiner do endereço.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/dest/enderDest (TEndereco)*

      <Expandable title="8 campo(s)">
        <ParamField path="destinatario.endereco.logradouro" type="string" required>
          **Tamanho:** 2-60 · **Tag do leiaute:** `xLgr` (grupo `enderDest: Endereço do Destinatário`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

          Nome da rua/avenida do destinatário

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TEndereco/xLgr*
        </ParamField>

        <ParamField path="destinatario.endereco.numero" type="string" required>
          **Tamanho:** 1-60 · **Tag do leiaute:** `nro` (grupo `enderDest: Endereço do Destinatário`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

          Número do endereço (aceita "S/N")

          **Condição do leiaute:** Ausente, a engineAPI escreve "SN".

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TEndereco/nro*
        </ParamField>

        <ParamField path="destinatario.endereco.complemento" type="string">
          **Tamanho:** 1-60 · **Tag do leiaute:** `xCpl` (grupo `enderDest: Endereço do Destinatário`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

          Complemento do endereço (apto, sala, bloco)

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TEndereco/xCpl*
        </ParamField>

        <ParamField path="destinatario.endereco.bairro" type="string" required>
          **Tamanho:** 2-60 · **Tag do leiaute:** `xBairro` (grupo `enderDest: Endereço do Destinatário`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

          Bairro do destinatário

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TEndereco/xBairro*
        </ParamField>

        <ParamField path="destinatario.endereco.codigoMunicipio" type="string" required>
          **Tamanho:** 7 · **Tag do leiaute:** `cMun` (grupo `enderDest: Endereço do Destinatário`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

          Código IBGE do município (7 dígitos, ex.: "5208707" para Goiânia)

          **Condição do leiaute:** Código do município na tabela do IBGE. Para operação com o exterior o leiaute manda informar 9999999.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TEndereco/cMun (TCodMunIBGE)*
        </ParamField>

        <ParamField path="destinatario.endereco.municipio" type="string" required>
          **Tamanho:** 2-60 · **Tag do leiaute:** `xMun` (grupo `enderDest: Endereço do Destinatário`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

          Nome do município

          **Condição do leiaute:** Para operação com o exterior o leiaute manda informar EXTERIOR.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TEndereco/xMun*
        </ParamField>

        <ParamField path="destinatario.endereco.uf" type="string" required>
          **Tamanho:** 2 · **Tag do leiaute:** `UF` (grupo `enderDest: Endereço do Destinatário`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

          Sigla da UF, 2 letras maiúsculas (ex.: "GO", "SP")

          **Condição do leiaute:** Para operação com o exterior o leiaute manda informar EX.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TEndereco/UF (TUf)*
        </ParamField>

        <ParamField path="destinatario.endereco.cep" type="string">
          **Tamanho:** 8 · **Tag do leiaute:** `CEP` (grupo `enderDest: Endereço do Destinatário`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

          CEP do destinatário, só dígitos ou com hífen. Opcional no leiaute (8 dígitos, sem máscara)

          **Condição do leiaute:** Opcional no leiaute. Quando informado, usa 8 dígitos sem máscara.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TEndereco/CEP*
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

***

<h2 id="grupo-itens">
  Itens
</h2>

<ParamField path="items" type="object[]" required>
  **Tag do leiaute:** `det` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute

  Itens da nota (mínimo 1). Atenção: o campo é "items", não "itens"

  **Nota do leiaute:** Grupo, não campo: `det` é o contêiner do item e não carrega valor próprio (só o atributo nItem, gerado pela ordem do array).

  *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det (maxOccurs="990")*

  <Expandable title="cada item tem 27 campo(s)">
    <ParamField path="items[].codigo" type="string" required>
      **Tamanho:** 1-60 · **Tag do leiaute:** `cProd` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      Código interno do produto (seu SKU)

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/cProd*
    </ParamField>

    <ParamField path="items[].ean" type="string">
      **Tamanho:** 8, 12, 13 ou 14 (ou o literal SEM GTIN) · **Tag do leiaute:** `cEAN` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      Código de barras EAN/GTIN do produto. Ausente = "SEM GTIN"

      **Condição do leiaute:** A tag é sempre emitida: sem GTIN cadastrado, o leiaute manda escrever o literal "SEM GTIN", que é o que a engineAPI faz quando o campo vem ausente.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/cEAN*
    </ParamField>

    <ParamField path="items[].descricao" type="string" required>
      **Tamanho:** 1-120 · **Tag do leiaute:** `xProd` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      Descrição do produto

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/xProd*
    </ParamField>

    <ParamField path="items[].ncm" type="string" required>
      **Tamanho:** 2 ou 8 · **Tag do leiaute:** `NCM` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      Nomenclatura Comum do Mercosul, com 2 ou 8 dígitos (padrão: `^(?:\d{2}|\d{8})$`)

      **Condição do leiaute:** O leiaute admite 2 ou 8 posições. Com 2 posições, informa-se o gênero do NCM fora de comércio exterior e de produto tributado pelo IPI.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/NCM*
    </ParamField>

    <ParamField path="items[].cest" type="string">
      **Tamanho:** 7 · **Tag do leiaute:** `CEST` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

      Código Especificador da Substituição Tributária, 7 dígitos sem pontuação (ex.: "0100100"). Transmitido no produto do documento; formato inválido devolve 422 CEST\_INVALIDO

      **Condição do leiaute:** Obrigatório para mercadoria sujeita a substituição tributária ou antecipação do recolhimento do imposto. A engineAPI tira a máscara antes de escrever (aceita "01.001.00").

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/CEST (dentro de xs:sequence minOccurs="0")*
    </ParamField>

    <ParamField path="items[].cBenef" type="string">
      **Tamanho:** 8 ou 10 (ou o literal SEM CBENEF) · **Tag do leiaute:** `cBenef` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

      Código do benefício fiscal (cBenef) concedido pela UF, exigido por algumas UFs quando o CST/CSOSN indica benefício (ex.: GO exige cBenef no CST 61 monofásico). Passthrough: o código vem da tabela de benefícios da própria UF, o motor não calcula nem confere

      **Condição do leiaute:** Exigido por algumas UFs quando o CST/CSOSN indica benefício fiscal concedido pela própria UF (ex.: GO no CST 61 monofásico). O código vem da tabela de benefícios da UF: passthrough, o motor não confere.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/cBenef*
    </ParamField>

    <ParamField path="items[].cfop" type="string" required>
      **Tamanho:** 4 · **Tag do leiaute:** `CFOP` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      Código Fiscal de Operações e Prestações (ex.: "5102" venda estadual, "6102" interestadual)

      **Condição do leiaute:** O leiaute restringe o primeiro dígito a 1, 2, 3, 5, 6 ou 7 (natureza da operação por origem/destino).

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/CFOP*
    </ParamField>

    <ParamField path="items[].unidade" type="string" required>
      **Tamanho:** 1-6 · **Tag do leiaute:** `uCom` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      Unidade comercial: "UN", "KG", "MT", "CX", etc.

      **Condição do leiaute:** Unidade COMERCIAL do item (como o produto é vendido). O leiaute tem duas unidades; a tributável tem campo próprio (`unidadeTributavel`) e, quando ele não vem, uTrib repete este valor.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/uCom*
    </ParamField>

    <ParamField path="items[].quantidade" type="number" required>
      **Tamanho:** 11v0-4 · **Tag do leiaute:** `qCom` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      Quantidade vendida (mínimo 0.0001)

      **Condição do leiaute:** Quantidade na unidade COMERCIAL. Sem quantidadeTributavel, qTrib repete este valor.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/qCom (TDec\_1104v)*
    </ParamField>

    <ParamField path="items[].valorUnitario" type="number" required>
      **Tamanho:** 11v0-10 · **Tag do leiaute:** `vUnCom` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      Valor unitário do produto em R\$ (mínimo 0.01)

      **Condição do leiaute:** Valor unitário na unidade COMERCIAL. Sem valorUnitarioTributavel, vUnTrib repete este valor.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/vUnCom (TDec\_1110v)*
    </ParamField>

    <ParamField path="items[].valorTotal" type="number">
      **Tamanho:** 13v2 · **Tag do leiaute:** `vProd` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** derivado de outros campos (calculado)

      Redundante: sempre recalculado como quantidade × valorUnitario. Se enviado e divergente, 400

      **Condição do leiaute:** O valor transmitido é SEMPRE quantidade × valorUnitario (a SEFAZ valida vProd = qCom × vUnCom). Informar valorTotal divergente devolve 400 antes de emitir; o campo é redundante no contrato.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/vProd (TDec\_1302)*
    </ParamField>

    <ParamField path="items[].desconto" type="number">
      **Tamanho:** 13v2 · **Tag do leiaute:** `vDesc` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

      Desconto INCONDICIONAL do item em R\$ (vDesc do leiaute). Reduz a base do ICMS e do IBS/CBS. NÃO informe desconto condicional (sob condição/evento posterior): por lei ele integra a base e não tem campo no item

      **Condição do leiaute:** Desconto INCONDICIONAL. Só é escrito quando maior que zero e reduz a base do ICMS e do IBS/CBS. Desconto condicional (sob evento posterior) integra a base por lei e não tem campo no item.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/vDesc (TDec\_1302Opc)*
    </ParamField>

    <ParamField path="items[].valorFrete" type="number">
      **Tamanho:** 13v2 · **Tag do leiaute:** `vFrete` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

      Frete do item em R\$ (vFrete do leiaute), cobrado pelo próprio emitente e destacado no documento. Soma no vNF e integra a base do ICMS e do IBS/CBS

      **Condição do leiaute:** Só é escrito quando maior que zero. Soma no total da nota e integra a base do ICMS e do IBS/CBS.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/vFrete (TDec\_1302Opc)*
    </ParamField>

    <ParamField path="items[].valorSeguro" type="number">
      **Tamanho:** 13v2 · **Tag do leiaute:** `vSeg` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

      Seguro do item em R\$ (vSeg do leiaute). Soma no vNF e integra a base do ICMS e do IBS/CBS

      **Condição do leiaute:** Só é escrito quando maior que zero. Soma no total da nota e integra a base do ICMS e do IBS/CBS.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/vSeg (TDec\_1302Opc)*
    </ParamField>

    <ParamField path="items[].outrasDespesas" type="number">
      **Tamanho:** 13v2 · **Tag do leiaute:** `vOutro` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

      Outras despesas acessórias do item em R\$ (vOutro do leiaute). Soma no vNF e integra a base do ICMS e do IBS/CBS

      **Condição do leiaute:** Só é escrito quando maior que zero. Soma no total da nota e integra a base do ICMS e do IBS/CBS.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/vOutro (TDec\_1302Opc)*
    </ParamField>

    <ParamField path="items[].indTot" type="number">
      **Tamanho:** 1 · **Tag do leiaute:** `indTot` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      Indica se o vProd do item compõe o vProd/vNF do total da nota (indTot do leiaute): 1 = compõe (ausente = 1, default do leiaute); 0 = não compõe. Não afeta a tributação do próprio item, só a composição do total

      **Condição do leiaute:** Ausente = 1, o default do leiaute.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/indTot*

      | Valor | Significado                                |
      | ----- | ------------------------------------------ |
      | `0`   | O valor do item não compõe o total da nota |
      | `1`   | O valor do item compõe o total da nota     |
    </ParamField>

    <ParamField path="items[].unidadeTributavel" type="string">
      **Tamanho:** 1-6 · **Tag do leiaute:** `uTrib` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      Unidade TRIBUTÁVEL do item (uTrib do leiaute), 1 a 6 caracteres, quando ela difere da unidade comercial: vende em "CX" e tributa em "UN". Ausente = igual a `unidade`. Vai junto com quantidadeTributavel e valorUnitarioTributavel

      **Condição do leiaute:** Unidade TRIBUTÁVEL do item, quando difere da comercial (vende em "CX", tributa em "UN"). Opcional no contrato: ausente, o documento repete a unidade comercial. Vai junto com quantidadeTributavel e valorUnitarioTributavel, e o par quantidade×valor tem que fechar com o mesmo vProd.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/uTrib*
    </ParamField>

    <ParamField path="items[].quantidadeTributavel" type="number">
      **Tamanho:** 11v0-4 · **Tag do leiaute:** `qTrib` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      Quantidade na unidade TRIBUTÁVEL (qTrib do leiaute, até 4 casas). Ausente = igual a `quantidade`. quantidadeTributavel × valorUnitarioTributavel tem que dar o mesmo vProd de quantidade × valorUnitario

      **Condição do leiaute:** Quantidade na unidade TRIBUTÁVEL. Opcional no contrato: ausente, o documento repete a quantidade comercial.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/qTrib (TDec\_1104v)*
    </ParamField>

    <ParamField path="items[].valorUnitarioTributavel" type="number">
      **Tamanho:** 11v0-10 · **Tag do leiaute:** `vUnTrib` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      Valor unitário na unidade TRIBUTÁVEL em R$ (vUnTrib do leiaute, até 10 casas). Ausente = igual a `valorUnitario`. Caixa de 12 a R$ 100,00 tributada em unidades vira 8.3333333333

      **Condição do leiaute:** Valor unitário na unidade TRIBUTÁVEL. Opcional no contrato: ausente, o documento repete o valor unitário comercial. Aceita até 10 casas porque a conversão raramente é exata (caixa de 12 a R\$ 100,00 → 8,3333333333).

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/vUnTrib (TDec\_1110v)*
    </ParamField>

    <ParamField path="items[].icms" type="object">
      **Tag do leiaute:** `ICMS` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute

      Tributação de ICMS do item (obrigatório de fato só sem resolverTributacao)

      **Nota do leiaute:** Grupo, não campo: o leiaute escolhe o subgrupo (ICMS00, ICMS61, ICMSSN102...) pelo CST/CSOSN informado, e é o subgrupo que carrega as tags.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS (choice entre ICMS00..ICMS90 e ICMSSN101..ICMSSN900)*

      <Expandable title="56 campo(s)">
        <ParamField path="items[].icms.origem" type="integer">
          **Tamanho:** 1 · **Tag do leiaute:** `orig` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

          Origem da mercadoria, conforme Torig do leiaute: 0=nacional; 1/2=estrangeira; 3/4/5/8=nacional conforme conteúdo de importação ou processo produtivo; 6/7=estrangeira sem similar nacional. Aceita 0 a 8. Ausente = 0

          **Condição do leiaute:** Ausente = 0 (nacional). A engineAPI deriva desta lista a validação do contrato e recusa valores fora de 0 a 8 antes da numeração. Os códigos 3 a 8 declaram percentual de conteúdo de importação, produto sem similar nacional da lista CAMEX e gás natural.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/\*/orig (Torig)*
        </ParamField>

        <ParamField path="items[].icms.cst" type="string">
          **Tamanho:** 2 · **Tag do leiaute:** `CST` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Código de Situação Tributária do ICMS (Lucro Real/Presumido), ex.: "00" tributada integralmente, "40" isenta. "10" (tributada com ST), "30" (isenta ou não tributada com ST) e "70" (redução de base com ST) são a substituição tributária cobrada NESTA operação, o lado substituto (indústria, atacado, revenda que retém para a frente da cadeia): valem na NF-e para emissor em Regime Normal (CRT=3) ou Simples com excesso de sublimite (CRT=2), com modBCST/vBCST/pICMSST/vICMSST (e o ICMS próprio em modBC/vBC/pICMS/vICMS nos CST "10" e "70", mais pRedBC no "70"). "60" é o ICMS cobrado anteriormente por substituição tributária (revenda de mercadoria já retida pelo fornecedor: bebida, autopeça, cosmético, medicamento), nos mesmos regimes, com os campos vBCSTRet/pST/vICMSSTRet. "02" e "61" são a tributação monofásica de combustíveis e valem nos dois regimes, inclusive Simples Nacional (exigem o grupo combustivel e os campos qBCMono/adRemICMS/vICMSMono ou qBCMonoRet/adRemICMSRet/vICMSMonoRet) (padrão: `^\d{1,3}$`)

          **Condição do leiaute:** Obrigatório no regime normal (Lucro Real/Presumido). No Simples Nacional o leiaute usa CSOSN no lugar; as duas tags nunca convivem no mesmo item. Valores do leiaute: 00, 02, 10, 15, 20, 30, 40, 41, 50, 51, 53, 60, 61, 70 e 90. Dos quatro CST monofásicos de combustível (02, 15, 53 e 61), a engineAPI emite hoje o 02 (própria) e o 61 (cobrada anteriormente); informar o 15 (com retenção) ou o 53 (com diferimento) é recusado, porque os campos próprios deles ainda não existem no contrato.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS\{cst}/CST (o CST é o SUFIXO do nome do subgrupo)*
        </ParamField>

        <ParamField path="items[].icms.csosn" type="string">
          **Tamanho:** 3 · **Tag do leiaute:** `CSOSN` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Código de Situação da Operação do Simples Nacional, ex.: "102" tributada pelo Simples sem crédito, "400" não tributada. "201" (com permissão de crédito), "202" (sem permissão de crédito) e "203" (isenção na faixa de receita bruta) são a substituição tributária cobrada NESTA operação pelo emissor do Simples pleno (CRT=1), na NF-e (modelo 55): exigem modBCST/vBCST/pICMSST/vICMSST, e o "201" exige também pCredSN/vCredICMSSN (o crédito do art. 23 da LC 123/2006, que sai da sua apuração: o motor não o calcula) (padrão: `^\d{1,3}$`)

          **Condição do leiaute:** Obrigatório no Simples Nacional (substitui o CST). Ausente = 102. Com resolverTributacao ligado, o Cérebro Fiscal resolve o CSOSN dos itens sem tributação manual.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMSSN\{csosn}/CSOSN*
        </ParamField>

        <ParamField path="items[].icms.aliquota" type="number">
          **Tamanho:** 3v2-4 · **Tag do leiaute:** `pICMS` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Alíquota do ICMS em % (só com cst, regime CST)

          **Condição do leiaute:** Obrigatória junto com vBC nos CST que tributam.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS00/pICMS (TDec\_0302a04)*
        </ParamField>

        <ParamField path="items[].icms.baseCalculo" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vBC` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Base de cálculo do ICMS em R\$ (só com cst, regime CST)

          **Condição do leiaute:** Obrigatório nos CST que tributam (00, 10, 20, 51, 70, 90). No motor de regime normal a base é calculada do valor líquido do item; este campo é o passthrough para quem informa a tributação à mão.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS00/vBC (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.valor" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vICMS` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Valor do ICMS em R\$ (só com cst, regime CST)

          **Condição do leiaute:** Obrigatório junto com vBC e pICMS nos CST que tributam.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS00/vICMS (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.baseCalculoST" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vBCST` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Campo antigo, SEM EFEITO: informar devolve 422 ICMS\_ST\_NAO\_SUPORTADO. A base da ST cobrada nesta operação hoje é vBCST, com o nome do leiaute (junto de modBCST, pICMSST e vICMSST, sob cst "10", "30" ou "70")

          **Condição do leiaute:** Obrigatório nos CST com substituição tributária (10, 30, 70, 90) e no CSOSN 201/202/203.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS10/vBCST (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.aliquotaST" type="number">
          **Tamanho:** 3v2-4 · **Tag do leiaute:** `pICMSST` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Campo antigo, SEM EFEITO: informar devolve 422 ICMS\_ST\_NAO\_SUPORTADO. A alíquota da ST cobrada nesta operação hoje é pICMSST (ver baseCalculoST)

          **Condição do leiaute:** Obrigatória junto com vBCST nos CST com substituição tributária.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS10/pICMSST (TDec\_0302a04)*
        </ParamField>

        <ParamField path="items[].icms.valorST" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vICMSST` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Campo antigo, SEM EFEITO: informar devolve 422 ICMS\_ST\_NAO\_SUPORTADO. O valor da ST cobrada nesta operação hoje é vICMSST (ver baseCalculoST)

          **Condição do leiaute:** Obrigatório junto com vBCST nos CST com substituição tributária.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS10/vICMSST (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.modBC" type="string">
          **Tamanho:** 1 · **Tag do leiaute:** `modBC` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 10/70 (substituição tributária) e 20/51/90 (benefício fiscal): modalidade de determinação da base de cálculo do ICMS próprio. "0"=margem de valor agregado, "1"=pauta (valor), "2"=preço tabelado máximo (valor), "3"=valor da operação. Obrigatório nos CST 10, 20, 51, 70 e 90

          **Condição do leiaute:** Obrigatório no CST 20 (redução de base), onde o leiaute exige o grupo completo. Opcional nos CST 51 e 90. No caminho assistido a engineAPI resolve a tributação e escreve a modalidade 3 (valor da operação).

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS20/modBC*

          | Valor | Significado                   |
          | ----- | ----------------------------- |
          | `0`   | Margem de valor agregado (%)  |
          | `1`   | Pauta (valor)                 |
          | `2`   | Preço tabelado máximo (valor) |
          | `3`   | Valor da operação             |
        </ParamField>

        <ParamField path="items[].icms.pRedBC" type="number">
          **Tamanho:** 3v2-4 · **Tag do leiaute:** `pRedBC` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 20/70 (obrigatório) e 51/90 (opcional): percentual de redução da base de cálculo do ICMS próprio, em %. No CST 70 é ele que distingue o 70 do 10, e no 20 o leiaute exige o grupo completo; inexistente nos CST 10 e 30. Em todos, informe a base JÁ REDUZIDA em vBC: o motor não aplica a redução por você

          **Condição do leiaute:** Obrigatório no CST 20 (redução de base). A base transmitida em vBC JÁ É a base reduzida: a engineAPI não aplica a redução por você, e confere vICMS contra vBC vezes a alíquota, com tolerância de um centavo.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS20/pRedBC (TDec\_0302a04)*
        </ParamField>

        <ParamField path="items[].icms.vBC" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vBC` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 10/70 (substituição tributária) e 20/51/90 (benefício fiscal): base de cálculo do ICMS próprio em R$, como vai no documento. É passthrough: informe a base da SUA operação (nos CST 20 e 70 ela já entra reduzida pelo pRedBC). O motor confere vICMS = vBC x pICMS, com tolerância de R$ 0,01

          **Condição do leiaute:** Base de cálculo do ICMS próprio, como vai no documento. Obrigatória nos CST que têm ICMS próprio: 10 e 70 (substituição tributária cobrada nesta operação) e 20, 51 e 90 (benefício fiscal). Nos CST 20 e 70 ela já entra REDUZIDA pelo pRedBC: a engineAPI não recalcula. É o vocabulário canônico do contrato para esta tag; baseCalculo continua aceito no ICMS clássico e no Simples Nacional, mas junto de um desses CST é recusado (dois nomes para a mesma tag é ambiguidade).

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS20/vBC (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.pICMS" type="number">
          **Tamanho:** 3v2-4 · **Tag do leiaute:** `pICMS` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 10/70 (substituição tributária) e 20/51/90 (benefício fiscal): alíquota do ICMS próprio em %, ex.: 18 para 18%

          **Condição do leiaute:** Alíquota do ICMS próprio. Obrigatória junto de vBC nos CST 10, 20, 51, 70 e 90. Vocabulário canônico do contrato para esta tag (aliquota segue aceito no ICMS clássico e no Simples Nacional).

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS20/pICMS (TDec\_0302a04)*
        </ParamField>

        <ParamField path="items[].icms.vICMS" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vICMS` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 10/70 (substituição tributária) e 20/51/90 (benefício fiscal): valor do ICMS próprio em R$. Precisa bater com vBC x pICMS (tolerância de R$ 0,01); divergente devolve 422 antes de emitir (ICMS\_ST\_INVALIDO nos CST de substituição, ICMS\_BENEFICIO\_INVALIDO nos de benefício)

          **Condição do leiaute:** Valor do ICMS próprio. Obrigatório junto de vBC e pICMS nos CST 10, 20, 51, 70 e 90, e precisa bater com a base vezes a alíquota (tolerância de um centavo): a engineAPI recusa antes de numerar em vez de deixar a SEFAZ rejeitar depois. Soma no total de ICMS do documento. Vocabulário canônico do contrato para esta tag (valor segue aceito no ICMS clássico e no Simples Nacional).

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS20/vICMS (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.vBCFCP" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vBCFCP` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 10/70 (substituição tributária) e 20/51/90 (benefício fiscal): base de cálculo do Fundo de Combate à Pobreza sobre o ICMS próprio, em R\$. Bloco indivisível: vai com pFCP e vFCP

          **Condição do leiaute:** Fundo de Combate à Pobreza, bloco indivisível: obrigatório junto com pFCP e vFCP. Disponível nos CST 20, 51 e 90.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS20/vBCFCP (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.pFCP" type="number">
          **Tamanho:** 3v2-4 (o tipo do leiaute não aceita zero) · **Tag do leiaute:** `pFCP` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 10/70 (substituição tributária) e 20/51/90 (benefício fiscal): percentual do Fundo de Combate à Pobreza sobre o ICMS próprio, em %. Vai com vBCFCP e vFCP

          **Condição do leiaute:** Fundo de Combate à Pobreza, bloco indivisível: obrigatório junto com vBCFCP e vFCP.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS20/pFCP (TDec\_0302a04Opc)*
        </ParamField>

        <ParamField path="items[].icms.vFCP" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vFCP` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 10/70 (substituição tributária) e 20/51/90 (benefício fiscal): valor do Fundo de Combate à Pobreza sobre o ICMS próprio, em R\$. Vai com vBCFCP e pFCP, e soma no total do documento

          **Condição do leiaute:** Fundo de Combate à Pobreza, bloco indivisível: obrigatório junto com vBCFCP e pFCP. Soma no total de FCP do documento.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS20/vFCP (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.modBCST" type="string">
          **Tamanho:** 1 · **Tag do leiaute:** `modBCST` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 10/30/70 (Regime Normal) e CSOSN 201/202/203 (Simples Nacional): modalidade de determinação da base de cálculo da ST. "0"=preço tabelado ou máximo sugerido, "1"=lista negativa (valor), "2"=lista positiva (valor), "3"=lista neutra (valor), "4"=margem de valor agregado (%), "5"=pauta (valor), "6"=valor da operação. Obrigatório sempre que há ST cobrada nesta operação

          **Condição do leiaute:** Obrigatório nos três CST de substituição tributária cobrada nesta operação (10, 30 e 70) e nos CSOSN 201, 202 e 203 (a mesma substituição, declarada por emissor do Simples Nacional), junto de vBCST, pICMSST e vICMSST.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS10/modBCST*

          | Valor | Significado                       |
          | ----- | --------------------------------- |
          | `0`   | Preço tabelado ou máximo sugerido |
          | `1`   | Lista negativa (valor)            |
          | `2`   | Lista positiva (valor)            |
          | `3`   | Lista neutra (valor)              |
          | `4`   | Margem de valor agregado (%)      |
          | `5`   | Pauta (valor)                     |
          | `6`   | Valor da operação                 |
        </ParamField>

        <ParamField path="items[].icms.pMVAST" type="number">
          **Tamanho:** 3v2-4 (o tipo do leiaute não aceita zero) · **Tag do leiaute:** `pMVAST` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 10/30/70 e CSOSN 201/202/203: percentual da margem de valor agregado da ST, em %. Opcional no leiaute (só faz sentido com modBCST "4"). Passa de 100% legitimamente em vários convênios: o motor não a usa para recalcular a base, apenas a transcreve

          **Condição do leiaute:** Opcional nos CST 10, 30 e 70 e nos CSOSN 201, 202 e 203: só faz sentido com modBCST 4 (margem de valor agregado). É transcrito como informado, nunca usado para recalcular a base: passa de 100% legitimamente em vários convênios.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS10/pMVAST (TDec\_0302a04Opc)*
        </ParamField>

        <ParamField path="items[].icms.pRedBCST" type="number">
          **Tamanho:** 3v2-4 (o tipo do leiaute não aceita zero) · **Tag do leiaute:** `pRedBCST` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 10/30/70 e CSOSN 201/202/203: percentual de redução da base de cálculo da ST, em %. Opcional no leiaute. Informe a base JÁ REDUZIDA em vBCST: o motor não recalcula

          **Condição do leiaute:** Opcional nos CST 10, 30 e 70 e nos CSOSN 201, 202 e 203. A base informada em vBCST já entra REDUZIDA: a engineAPI não recalcula.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS10/pRedBCST (TDec\_0302a04Opc)*
        </ParamField>

        <ParamField path="items[].icms.vBCST" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vBCST` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 10/30/70 e CSOSN 201/202/203: base de cálculo do ICMS-ST cobrado NESTA operação, em R\$, como vai no documento. Passthrough: a base é sua, o motor não a estima a partir da margem. Soma no vBCST do total da nota

          **Condição do leiaute:** Obrigatório nos CST 10, 30 e 70 e nos CSOSN 201, 202 e 203. Passthrough: a engineAPI não estima a base da substituição a partir da margem de valor agregado (ela varia por estado, produto e convênio). Soma no total da base de substituição tributária do documento.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS10/vBCST (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.pICMSST" type="number">
          **Tamanho:** 3v2-4 · **Tag do leiaute:** `pICMSST` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 10/30/70 e CSOSN 201/202/203: alíquota interna do ICMS-ST na UF de destino, em %. É informação sua: ela varia por UF, NCM e convênio, e o motor não a estima

          **Condição do leiaute:** Obrigatório nos CST 10, 30 e 70 e nos CSOSN 201, 202 e 203: alíquota interna da substituição tributária no estado de destino, informada por você.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS10/pICMSST (TDec\_0302a04)*
        </ParamField>

        <ParamField path="items[].icms.vICMSST" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vICMSST` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 10/30/70 e CSOSN 201/202/203: valor do ICMS-ST cobrado nesta operação, em R\$. Soma no vST do total da nota e COMPÕE o valor total do documento (vNF = produtos + vST + vFCPST + ...): os pagamentos precisam fechar com esse total. O motor não confere este valor contra vBCST x pICMSST (não há regra de validação escrita para essa conta, e conferir o que a fonte não afirma recusaria emissão legítima)

          **Condição do leiaute:** Obrigatório nos CST 10, 30 e 70 e nos CSOSN 201, 202 e 203. Soma no total de substituição tributária do documento e COMPÕE o valor total da nota, então os pagamentos precisam fechar com ele. A engineAPI não confere este valor contra a base vezes a alíquota: não há regra de validação escrita para essa conta.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS10/vICMSST (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.vBCFCPST" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vBCFCPST` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 10/30/70 e CSOSN 201/202/203: base de cálculo do Fundo de Combate à Pobreza retido por ST, em R\$. Bloco indivisível: vai com pFCPST e vFCPST

          **Condição do leiaute:** Bloco do Fundo de Combate à Pobreza retido por substituição tributária (CST 10, 30 e 70 e CSOSN 201, 202 e 203), indivisível: obrigatório junto com pFCPST e vFCPST.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS10/vBCFCPST (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.pFCPST" type="number">
          **Tamanho:** 3v2-4 (o tipo do leiaute não aceita zero) · **Tag do leiaute:** `pFCPST` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 10/30/70 e CSOSN 201/202/203: percentual do Fundo de Combate à Pobreza retido por ST, em %. Vai com vBCFCPST e vFCPST

          **Condição do leiaute:** Bloco do Fundo de Combate à Pobreza retido por substituição tributária (CST 10, 30 e 70 e CSOSN 201, 202 e 203), indivisível: obrigatório junto com vBCFCPST e vFCPST.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS10/pFCPST (TDec\_0302a04Opc)*
        </ParamField>

        <ParamField path="items[].icms.vFCPST" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vFCPST` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 10/30/70 e CSOSN 201/202/203: valor do Fundo de Combate à Pobreza retido por ST, em R\$. Vai com vBCFCPST e pFCPST, soma no vFCPST do total da nota e também COMPÕE o valor total do documento

          **Condição do leiaute:** Bloco do Fundo de Combate à Pobreza retido por substituição tributária (CST 10, 30 e 70 e CSOSN 201, 202 e 203), indivisível: obrigatório junto com vBCFCPST e pFCPST. Soma no total desse fundo no documento e COMPÕE o valor total da nota.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS10/vFCPST (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.pCredSN" type="number">
          **Tamanho:** 3v2-4 · **Tag do leiaute:** `pCredSN` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CSOSN 201: alíquota aplicável de cálculo do crédito do Simples Nacional, em % (art. 23 da LC 123/2006). Obrigatória nesse código, junto de vCredICMSSN. É informação sua: sai da sua apuração do Simples, e o motor não a calcula

          **Condição do leiaute:** Obrigatório no CSOSN 201 (tributada COM permissão de crédito), junto de vCredICMSSN. É a alíquota aplicável de cálculo do crédito de que trata o artigo 23 da Lei Complementar 123/2006: sai da sua apuração do Simples Nacional, e a engineAPI não a calcula. No CSOSN 202 e 203 o leiaute não tem onde escrevê-la, e informá-la é recusado antes de numerar.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMSSN201/pCredSN (TDec\_0302a04)*
        </ParamField>

        <ParamField path="items[].icms.vCredICMSSN" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vCredICMSSN` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CSOSN 201: valor do crédito de ICMS que o destinatário pode aproveitar nos termos do art. 23 da LC 123/2006, em R\$. Obrigatório nesse código, junto de pCredSN. Não compõe o total do documento: é informação ao adquirente

          **Condição do leiaute:** Obrigatório no CSOSN 201, junto de pCredSN. É o valor do crédito de ICMS que o destinatário pode aproveitar nos termos do artigo 23 da Lei Complementar 123/2006. NÃO compõe o total da nota: é informação ao adquirente. Sem ele o documento sairia declarando crédito zero, então a emissão é recusada antes de numerar.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMSSN201/vCredICMSSN (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.vBCSTRet" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vBCSTRet` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 60: valor da base de cálculo do ICMS-ST retido anteriormente, em R\$ (está na nota de entrada do fornecedor). Vai junto com pST e vICMSSTRet: o bloco é indivisível no leiaute

          **Condição do leiaute:** Bloco do ST retido (CST 60), indivisível: obrigatório junto com pST e vICMSSTRet. O valor está na nota de entrada do fornecedor, que foi quem reteve o imposto.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS60/vBCSTRet (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.pST" type="number">
          **Tamanho:** 3v2-4 (o tipo do leiaute não aceita zero) · **Tag do leiaute:** `pST` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 60: alíquota suportada pelo consumidor final, em % (campo pST do leiaute). Não é a alíquota que gerou a retenção: é informação de transparência ao destinatário, e por isso o motor NÃO confere vICMSSTRet contra vBCSTRet × pST

          **Condição do leiaute:** Bloco do ST retido (CST 60), indivisível: obrigatório junto com vBCSTRet e vICMSSTRet. É a alíquota suportada pelo consumidor final, informação de transparência ao destinatário, e NÃO a que gerou a retenção: por isso o motor não confere vICMSSTRet contra vBCSTRet vezes pST.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS60/pST (TDec\_0302a04Opc)*
        </ParamField>

        <ParamField path="items[].icms.vICMSSubstituto" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vICMSSubstituto` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 60: valor do ICMS próprio do substituto, cobrado na operação anterior, em R\$. Opcional no leiaute (algumas UFs exigem mesmo zerado); só é aceito acompanhando vBCSTRet/pST/vICMSSTRet

          **Condição do leiaute:** Único campo opcional DENTRO do bloco do ST retido: só é aceito acompanhando vBCSTRet, pST e vICMSSTRet. É o ICMS próprio do substituto, cobrado na operação anterior; algumas UFs o exigem mesmo zerado.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS60/vICMSSubstituto (TDec\_1302, minOccurs="0")*
        </ParamField>

        <ParamField path="items[].icms.vICMSSTRet" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vICMSSTRet` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 60: valor do ICMS-ST retido anteriormente, em R\$ (nota de entrada do fornecedor). Vai junto com vBCSTRet e pST

          **Condição do leiaute:** Bloco do ST retido (CST 60), indivisível: obrigatório junto com vBCSTRet e pST. É o imposto que o fornecedor já reteve, conforme a nota de entrada.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS60/vICMSSTRet (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.vBCFCPSTRet" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vBCFCPSTRet` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 60: base de cálculo do FCP retido anteriormente por ST, em R\$. Bloco indivisível: vai com pFCPSTRet e vFCPSTRet (e soma no vFCPSTRet do total da nota)

          **Condição do leiaute:** Bloco do FCP retido por ST (CST 60), indivisível: obrigatório junto com pFCPSTRet e vFCPSTRet.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS60/vBCFCPSTRet (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.pFCPSTRet" type="number">
          **Tamanho:** 3v2-4 (o tipo do leiaute não aceita zero) · **Tag do leiaute:** `pFCPSTRet` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 60: percentual do FCP retido anteriormente por ST, em %. Vai com vBCFCPSTRet e vFCPSTRet

          **Condição do leiaute:** Bloco do FCP retido por ST (CST 60), indivisível: obrigatório junto com vBCFCPSTRet e vFCPSTRet.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS60/pFCPSTRet (TDec\_0302a04Opc)*
        </ParamField>

        <ParamField path="items[].icms.vFCPSTRet" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vFCPSTRet` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 60: valor do FCP retido anteriormente por ST, em R\$. Vai com vBCFCPSTRet e pFCPSTRet

          **Condição do leiaute:** Bloco do FCP retido por ST (CST 60), indivisível: obrigatório junto com vBCFCPSTRet e pFCPSTRet. Soma no total de FCP retido do documento.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS60/vFCPSTRet (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.pRedBCEfet" type="number">
          **Tamanho:** 3v2-4 (o tipo do leiaute não aceita zero) · **Tag do leiaute:** `pRedBCEfet` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 60: percentual de redução da base de cálculo efetiva, em %. Bloco indivisível: vai com vBCEfet, pICMSEfet e vICMSEfet

          **Condição do leiaute:** Bloco da base efetiva (CST 60), indivisível: obrigatório junto com vBCEfet, pICMSEfet e vICMSEfet.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS60/pRedBCEfet (TDec\_0302a04Opc)*
        </ParamField>

        <ParamField path="items[].icms.vBCEfet" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vBCEfet` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 60: valor da base de cálculo efetiva, em R\$. Vai com pRedBCEfet, pICMSEfet e vICMSEfet

          **Condição do leiaute:** Bloco da base efetiva (CST 60), indivisível: obrigatório junto com pRedBCEfet, pICMSEfet e vICMSEfet.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS60/vBCEfet (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.pICMSEfet" type="number">
          **Tamanho:** 3v2-4 (o tipo do leiaute não aceita zero) · **Tag do leiaute:** `pICMSEfet` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 60: alíquota do ICMS efetivo, em %. Vai com pRedBCEfet, vBCEfet e vICMSEfet

          **Condição do leiaute:** Bloco da base efetiva (CST 60), indivisível: obrigatório junto com pRedBCEfet, vBCEfet e vICMSEfet.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS60/pICMSEfet (TDec\_0302a04Opc)*
        </ParamField>

        <ParamField path="items[].icms.vICMSEfet" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vICMSEfet` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 60: valor do ICMS efetivo, em R\$. Vai com pRedBCEfet, vBCEfet e pICMSEfet

          **Condição do leiaute:** Bloco da base efetiva (CST 60), indivisível: obrigatório junto com pRedBCEfet, vBCEfet e pICMSEfet.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS60/vICMSEfet (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.qBCMono" type="number">
          **Tamanho:** 11v0-4 · **Tag do leiaute:** `qBCMono` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 02: quantidade tributada do ICMS monofásico próprio, na unidade de medida do produto (não em R\$). Obrigatória com cst "02" (a SEFAZ rejeita com 767)

          **Condição do leiaute:** Tributação monofásica PRÓPRIA (CST 02). É uma QUANTIDADE na unidade do produto, não um valor em reais.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS02/qBCMono (TDec\_1104v)*
        </ParamField>

        <ParamField path="items[].icms.adRemICMS" type="number">
          **Tamanho:** 3v2-4 · **Tag do leiaute:** `adRemICMS` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 02: alíquota AD REM do ICMS monofásico, em R\$ por unidade (não é percentual). Definida na legislação para o produto ANP

          **Condição do leiaute:** Tributação monofásica própria (CST 02): alíquota AD REM, em reais por unidade, definida em lei para o produto ANP. Não é percentual.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS02/adRemICMS (TDec\_0302a04)*
        </ParamField>

        <ParamField path="items[].icms.vICMSMono" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vICMSMono` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 02: valor do ICMS monofásico próprio em R$. Precisa bater com qBCMono × adRemICMS (tolerância de R$ 0,01); divergente devolve 422 ICMS\_MONOFASICO\_INVALIDO antes de emitir

          **Condição do leiaute:** Tributação monofásica própria (CST 02). Precisa bater com qBCMono × adRemICMS (tolerância de R\$ 0,01); divergente devolve 422 ICMS\_MONOFASICO\_INVALIDO.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS02/vICMSMono (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.qBCMonoRet" type="number">
          **Tamanho:** 11v0-4 · **Tag do leiaute:** `qBCMonoRet` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 61: quantidade tributada do ICMS monofásico retido anteriormente, na unidade do produto (não em R\$). Obrigatória com cst "61" (a SEFAZ rejeita com 769)

          **Condição do leiaute:** Tributação monofásica COBRADA ANTERIORMENTE, a revenda (CST 61). É uma QUANTIDADE na unidade do produto, não um valor em reais.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS61/qBCMonoRet (TDec\_1104v)*
        </ParamField>

        <ParamField path="items[].icms.adRemICMSRet" type="number">
          **Tamanho:** 3v2-4 · **Tag do leiaute:** `adRemICMSRet` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 61: alíquota AD REM do ICMS retido anteriormente, em R\$ por unidade (não é percentual)

          **Condição do leiaute:** Revenda monofásica (CST 61): alíquota AD REM do imposto retido anteriormente, em reais por unidade. Não é percentual.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS61/adRemICMSRet (TDec\_0302a04)*
        </ParamField>

        <ParamField path="items[].icms.vICMSMonoRet" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vICMSMonoRet` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 61: valor do ICMS monofásico retido anteriormente em R$. Precisa bater com qBCMonoRet × adRemICMSRet (tolerância de R$ 0,01)

          **Condição do leiaute:** Revenda monofásica (CST 61). Precisa bater com qBCMonoRet × adRemICMSRet (tolerância de R\$ 0,01); divergente devolve 422 ICMS\_MONOFASICO\_INVALIDO.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS61/vICMSMonoRet (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.ufDestino" type="object">
          **Tag do leiaute:** `ICMSUFDest` (grupo `NA: ICMS para a UF de destino (partilha interestadual)`) · **Obrigatoriedade do leiaute:** condicional no leiaute

          Partilha do ICMS interestadual devida à UF de destino (grupo ICMSUFDest do leiaute, o DIFAL da EC 87/2015). Só vale quando a operação é interestadual (idDest 2), a consumidor final (indFinal 1) e o destinatário não é contribuinte (indicadorIE 9 ou ausente); fora disso a emissão devolve 422 DIFAL\_NAO\_APLICAVEL. Passthrough: o motor valida e transcreve, não calcula a partilha

          **Condição do leiaute:** Grupo opcional na estrutura do leiaute e devido pela norma quando a operação é interestadual, a consumidor final e o destinatário não é contribuinte do ICMS. Informado fora dessa hipótese, a emissão é recusada antes de numerar.

          **Nota do leiaute:** Grupo, não campo: `ICMSUFDest` é o contêiner da partilha e não carrega valor próprio. As tags estão nos campos de dentro.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMSUFDest (minOccurs="0")*

          <Expandable title="9 campo(s)">
            <ParamField path="items[].icms.ufDestino.vBCUFDest" type="number" required>
              **Tamanho:** 13v2 · **Tag do leiaute:** `vBCUFDest` (grupo `NA: ICMS para a UF de destino (partilha interestadual)`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

              Base de cálculo do ICMS na UF do destinatário, em R\$. É apurada pela legislação da UF de DESTINO (a LC 87/1996, art. 13 § 7º, manda usar a alíquota interna de lá para estabelecer a base; o § 3º cuida do valor devido), e pode diferir da base da operação própria: por isso o motor não a deriva, você a informa

              **Condição do leiaute:** Obrigatório dentro do grupo da partilha, que só existe na venda interestadual a consumidor final não contribuinte. A base é apurada pela legislação da UF de DESTINO e pode não coincidir com a base da operação própria: por isso ela é informada, nunca derivada.

              *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMSUFDest/vBCUFDest (TDec\_1302)*
            </ParamField>

            <ParamField path="items[].icms.ufDestino.vBCFCPUFDest" type="number">
              **Tamanho:** 13v2 · **Tag do leiaute:** `vBCFCPUFDest` (grupo `NA: ICMS para a UF de destino (partilha interestadual)`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

              Base de cálculo do FCP na UF do destinatário, em R\$. Bloco indivisível: vai com pFCPUFDest e vFCPUFDest

              **Condição do leiaute:** Bloco do adicional de FCP da UF de destino: informe base, percentual e valor juntos, ou nenhum dos três. Só existe quando a UF de destino cobra o adicional para o produto.

              *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMSUFDest/vBCFCPUFDest (TDec\_1302, minOccurs="0")*
            </ParamField>

            <ParamField path="items[].icms.ufDestino.pFCPUFDest" type="number">
              **Tamanho:** 3v2-4 · **Tag do leiaute:** `pFCPUFDest` (grupo `NA: ICMS para a UF de destino (partilha interestadual)`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

              Percentual do Fundo de Combate à Pobreza (FCP) da UF de destino, em % (adicional à alíquota interna de lá, não incluído em pICMSUFDest). Vai com vBCFCPUFDest e vFCPUFDest

              **Condição do leiaute:** Bloco do adicional de FCP da UF de destino, indivisível: vai com vBCFCPUFDest e vFCPUFDest. É percentual ADICIONAL à alíquota interna do destino, não incluído em pICMSUFDest.

              *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMSUFDest/pFCPUFDest (TDec\_0302a04, minOccurs="0")*
            </ParamField>

            <ParamField path="items[].icms.ufDestino.pICMSUFDest" type="number" required>
              **Tamanho:** 3v2-4 · **Tag do leiaute:** `pICMSUFDest` (grupo `NA: ICMS para a UF de destino (partilha interestadual)`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

              Alíquota interna da UF do destinatário para o produto, em %. É a alíquota de LÁ: a curadoria da engineAPI cobre a alíquota interna da UF de origem, então este número é seu

              **Condição do leiaute:** Obrigatório dentro do grupo da partilha. É a alíquota interna da UF de DESTINO para o produto: a curadoria da engineAPI cobre a alíquota interna da UF de origem, então este número vem do integrador.

              *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMSUFDest/pICMSUFDest (TDec\_0302a04)*
            </ParamField>

            <ParamField path="items[].icms.ufDestino.pICMSInter" type="number" required>
              **Tamanho:** 5 (4.00, 7.00 ou 12.00) · **Tag do leiaute:** `pICMSInter` (grupo `NA: ICMS para a UF de destino (partilha interestadual)`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

              Alíquota interestadual da operação, em %. Domínio fechado no leiaute: 4 (mercadoria importada), 7 (origem no Sul/Sudeste exceto ES com destino ao Norte/Nordeste/Centro-Oeste ou ES) ou 12 (demais casos)

              **Condição do leiaute:** Obrigatório dentro do grupo da partilha. Domínio fechado no leiaute: valor fora dele é recusado antes da emissão.

              *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMSUFDest/pICMSInter*

              | Valor | Significado                                                                             |
              | ----- | --------------------------------------------------------------------------------------- |
              | `4`   | Mercadoria importada                                                                    |
              | `7`   | Origem no Sul ou Sudeste (exceto ES) com destino ao Norte, Nordeste, Centro-Oeste ou ES |
              | `12`  | Demais casos                                                                            |
            </ParamField>

            <ParamField path="items[].icms.ufDestino.pICMSInterPart" type="number" required>
              **Tamanho:** 3v2-4 · **Tag do leiaute:** `pICMSInterPart` (grupo `NA: ICMS para a UF de destino (partilha interestadual)`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

              Percentual de partilha destinado à UF do destinatário, em %. Desde 2019 é 100 (EC 87/2015, art. 99 do ADCT); valor diferente devolve 422 DIFAL\_INVALIDO antes de emitir

              **Condição do leiaute:** Obrigatório dentro do grupo da partilha, e é ele que faz o grupo existir no documento: zerado, o motor fiscal não emite o grupo nenhum. O leiaute publica a tabela de vigência (40% em 2016, 60% em 2017, 80% em 2018, 100% a partir de 2019), então hoje o valor é 100.

              *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMSUFDest/pICMSInterPart (TDec\_0302a04)*
            </ParamField>

            <ParamField path="items[].icms.ufDestino.vFCPUFDest" type="number">
              **Tamanho:** 13v2 · **Tag do leiaute:** `vFCPUFDest` (grupo `NA: ICMS para a UF de destino (partilha interestadual)`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

              Valor do FCP devido à UF de destino, em R$. Precisa bater com vBCFCPUFDest × pFCPUFDest (tolerância de R$ 0,01); soma no total da nota

              **Condição do leiaute:** Bloco do adicional de FCP da UF de destino, indivisível: vai com vBCFCPUFDest e pFCPUFDest, precisa bater com a multiplicação dos dois (tolerância de 1 centavo) e soma no total do documento.

              *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMSUFDest/vFCPUFDest (TDec\_1302, minOccurs="0")*
            </ParamField>

            <ParamField path="items[].icms.ufDestino.vICMSUFDest" type="number" required>
              **Tamanho:** 13v2 · **Tag do leiaute:** `vICMSUFDest` (grupo `NA: ICMS para a UF de destino (partilha interestadual)`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

              Valor do ICMS de partilha devido à UF do destinatário, em R\$. Passthrough: o motor não calcula a partilha, porque a base e a alíquota interna são da UF de destino

              **Condição do leiaute:** Obrigatório dentro do grupo da partilha, e soma no total do documento. Transcrito como informado: a conta depende da legislação da UF de destino, e o motor não a refaz.

              *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMSUFDest/vICMSUFDest (TDec\_1302)*
            </ParamField>

            <ParamField path="items[].icms.ufDestino.vICMSUFRemet" type="number" required>
              **Tamanho:** 13v2 · **Tag do leiaute:** `vICMSUFRemet` (grupo `NA: ICMS para a UF de destino (partilha interestadual)`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

              Valor do ICMS de partilha devido à UF do remetente, em R\$. Desde 2019 é 0.00 (a partilha é integral para o destino), e o campo continua obrigatório no leiaute

              **Condição do leiaute:** Obrigatório dentro do grupo da partilha, e soma no total do documento. O próprio leiaute anota no campo que, a partir de 2019, este valor é zero (a partilha passou a ser integral para o destino).

              *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMSUFDest/vICMSUFRemet (TDec\_1302)*
            </ParamField>
          </Expandable>
        </ParamField>

        <ParamField path="items[].icms.cBenefRBC" type="string">
          **Tamanho:** 8 ou 10 · **Tag do leiaute:** `cBenefRBC` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 51: código do benefício fiscal da UF aplicado ao item quando há redução de base no diferimento, 8 ou 10 caracteres alfanuméricos. Só existe no grupo do CST 51 no leiaute; em outro CST a emissão recusa com 422 ICMS\_BENEFICIO\_INVALIDO. Passthrough: conferimos o formato, não a existência do código na tabela da UF

          **Condição do leiaute:** Código do benefício fiscal na UF aplicado ao item quando o diferimento (CST 51) vem com redução de base. Só existe nesse grupo: em outro CST a emissão recusa antes de consumir número fiscal. A engineAPI confere o FORMATO (8 ou 10 caracteres); conferir se o código existe na tabela da sua UF é responsabilidade do emitente.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS51/cBenefRBC*
        </ParamField>

        <ParamField path="items[].icms.vICMSDeson" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vICMSDeson` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 20/40/41/50/90: valor do ICMS desonerado, em R\$. Bloco indivisível: vai SEMPRE com motDesICMS e indDeduzDeson. Soma no vICMSDeson do total da nota

          **Condição do leiaute:** Desoneração do ICMS, bloco indivisível: obrigatório junto com motDesICMS e indDeduzDeson. Disponível nos CST 20, 40, 41, 50 e 90. Soma no total de ICMS desonerado do documento, que a SEFAZ confere contra a soma dos itens.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS20/vICMSDeson (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.motDesICMS" type="string">
          **Tamanho:** 1-2 · **Tag do leiaute:** `motDesICMS` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 20/40/41/50/90: motivo da desoneração do ICMS. Os códigos válidos DIFEREM por CST (no 20 e no 90 o leiaute só admite 3, 9 e 12; no 40, 41 e 50 admite 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16 e 90): motivo fora do conjunto do CST devolve 422 ICMS\_BENEFICIO\_INVALIDO

          **Condição do leiaute:** Obrigatório sempre que vICMSDeson é informado. Os códigos válidos DIFEREM por CST: nos CST 20 e 90 o leiaute admite apenas 3, 9 e 12; nos CST 40, 41 e 50 admite 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16 e 90. Motivo fora do conjunto do CST devolve 422 antes de consumir número fiscal.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS20/motDesICMS*
        </ParamField>

        <ParamField path="items[].icms.indDeduzDeson" type="string">
          **Tamanho:** 1 · **Tag do leiaute:** `indDeduzDeson` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 20/40/41/50/90: o valor desonerado deduz do total da nota? "1"=deduz (o vNF sai reduzido), "0"=não deduz. Obrigatório sempre que vICMSDeson é informado: o leiaute não define o que significa a ausência do indicador, e o total da nota depende dele

          **Condição do leiaute:** Opcional no leiaute e OBRIGATÓRIO na engineAPI sempre que vICMSDeson é informado: o total da nota depende dele, e o leiaute define o significado de 0 e de 1 sem definir o da ausência. Exigir o indicador é mais estrito que a norma, de propósito: total de nota errado em silêncio é a pior classe de defeito de um motor fiscal.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS20/indDeduzDeson (minOccurs="0")*

          | Valor | Significado                                   |
          | ----- | --------------------------------------------- |
          | `0`   | O valor desonerado NÃO deduz do total da nota |
          | `1`   | O valor desonerado deduz do total da nota     |
        </ParamField>

        <ParamField path="items[].icms.vICMSOp" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vICMSOp` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 51: valor do ICMS da operação (o imposto que seria devido sem o diferimento), em R\$

          **Condição do leiaute:** Diferimento (CST 51): valor do ICMS da operação, o imposto que seria devido sem o benefício. Informado junto com vICMSDif e vICMS, a engineAPI confere a identidade vICMSOp = vICMSDif + vICMS, com tolerância de um centavo.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS51/vICMSOp (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.pDif" type="number">
          **Tamanho:** 3v2-4 (máximo 100) · **Tag do leiaute:** `pDif` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 51: percentual do diferimento, em %

          **Condição do leiaute:** Diferimento (CST 51): percentual do diferimento. A engineAPI NÃO confere o valor diferido contra este percentual: a proporção fica a critério de cada UF, e conferir uma fórmula que a norma não afirma fecharia emissão legítima.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS51/pDif (TDec\_0302a04Max100)*
        </ParamField>

        <ParamField path="items[].icms.vICMSDif" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vICMSDif` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 51: valor do ICMS diferido, em R$. Informado junto com vICMSOp e valor (o ICMS devido), precisa fechar a identidade vICMSOp = vICMSDif + valor (tolerância de R$ 0,01)

          **Condição do leiaute:** Diferimento (CST 51): valor do ICMS diferido, a parcela cujo recolhimento fica adiado. Ver a identidade conferida em vICMSOp.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS51/vICMSDif (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.pFCPDif" type="number">
          **Tamanho:** 3v2-4 (o tipo do leiaute não aceita zero) · **Tag do leiaute:** `pFCPDif` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 51: percentual do FCP diferido, em %. Bloco indivisível: vai com vFCPDif

          **Condição do leiaute:** Fundo de Combate à Pobreza diferido (CST 51), bloco indivisível: obrigatório junto com vFCPDif.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS51/pFCPDif (TDec\_0302a04Opc)*
        </ParamField>

        <ParamField path="items[].icms.vFCPDif" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vFCPDif` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 51: valor do FCP diferido, em R\$. Vai com pFCPDif; vFCPEfet é opcional dentro do mesmo bloco

          **Condição do leiaute:** Fundo de Combate à Pobreza diferido (CST 51), bloco indivisível: obrigatório junto com pFCPDif.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS51/vFCPDif (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].icms.vFCPEfet" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vFCPEfet` (grupo `N: ICMS Normal e ST`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST 51: valor efetivo do FCP, em R\$. Único campo opcional dentro do bloco do FCP diferido: só é aceito acompanhando pFCPDif e vFCPDif

          **Condição do leiaute:** Único campo opcional DENTRO do bloco do Fundo de Combate à Pobreza diferido (CST 51): só é aceito acompanhando pFCPDif e vFCPDif. Sozinho, não chegaria ao documento.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/ICMS/ICMS51/vFCPEfet (TDec\_1302, minOccurs="0")*
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="items[].pis" type="object">
      **Tag do leiaute:** `PIS` (grupo `PIS: Programa de Integração Social`) · **Obrigatoriedade do leiaute:** condicional no leiaute

      Tributação de PIS do item (passthrough: vai como informado para o documento)

      **Condição do leiaute:** O leiaute marca o grupo como opcional na estrutura. A engineAPI o emite SEMPRE: item que não informa o tributo sai com CST 99 e valores zerados, em vez de sair sem o grupo.

      **Nota do leiaute:** Grupo, não campo: o leiaute escolhe o subgrupo pelo CST informado, e é o subgrupo que carrega as tags.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/PIS (choice entre PISAliq, PISQtde, PISNT e PISOutr)*

      <Expandable title="4 campo(s)">
        <ParamField path="items[].pis.cst" type="string">
          **Tamanho:** 2 · **Tag do leiaute:** `CST` (grupo `PIS: Programa de Integração Social`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

          Código de Situação Tributária do PIS. Tributado por alíquota: "01"/"02" (exige baseCalculo, aliquota e valor). Não tributado: "04"-"09" (só o CST vai no documento). Outras operações: "49"-"56", "60"-"67", "70"-"75", "98" e "99". Ausente = "99" com valores zerados (padrão: `^\d{1,3}$`)

          **Condição do leiaute:** Tributado por alíquota: 01 e 02 (exigem base, alíquota e valor). Não tributado: 04 a 09 (só o CST vai no documento). Outras operações: 49 a 56, 60 a 67, 70 a 75, 98 e 99. O CST 03 (por quantidade) não é suportado: o contrato não tem qBCProd/vAliqProd. Ausente = 99 com valores zerados.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/PIS/PISAliq/CST e demais subgrupos*
        </ParamField>

        <ParamField path="items[].pis.baseCalculo" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vBC` (grupo `PIS: Programa de Integração Social`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Base de cálculo do PIS em R\$ (transmitida como vBC)

          **Condição do leiaute:** Obrigatória nos CST que carregam valores (01, 02 e a faixa de outras operações). Nos CST não tributados o subgrupo do leiaute só tem o CST.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/PIS/PISAliq/vBC (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].pis.aliquota" type="number">
          **Tamanho:** 3v2-4 · **Tag do leiaute:** `pPIS` (grupo `PIS: Programa de Integração Social`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Alíquota do PIS em % (transmitida como pPIS)

          **Condição do leiaute:** Obrigatória junto com a base nos CST que carregam valores.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/PIS/PISAliq/pPIS (TDec\_0302a04)*
        </ParamField>

        <ParamField path="items[].pis.valor" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vPIS` (grupo `PIS: Programa de Integração Social`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Valor do PIS em R\$ (transmitido como vPIS e somado no total da nota)

          **Condição do leiaute:** Obrigatório junto com a base nos CST que carregam valores. Soma no total da nota (tag de mesmo nome no grupo de totais), mas não compõe o valor a pagar.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/PIS/PISAliq/vPIS (TDec\_1302)*
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="items[].cofins" type="object">
      **Tag do leiaute:** `COFINS` (grupo `COFINS: Contribuição para Financiamento da Seguridade Social`) · **Obrigatoriedade do leiaute:** condicional no leiaute

      Tributação de COFINS do item (passthrough: vai como informado para o documento)

      **Condição do leiaute:** O leiaute marca o grupo como opcional na estrutura. A engineAPI o emite SEMPRE: item que não informa o tributo sai com CST 99 e valores zerados, em vez de sair sem o grupo.

      **Nota do leiaute:** Grupo, não campo: o leiaute escolhe o subgrupo pelo CST informado, e é o subgrupo que carrega as tags.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/COFINS (choice entre COFINSAliq, COFINSQtde, COFINSNT e COFINSOutr)*

      <Expandable title="4 campo(s)">
        <ParamField path="items[].cofins.cst" type="string">
          **Tamanho:** 2 · **Tag do leiaute:** `CST` (grupo `COFINS: Contribuição para Financiamento da Seguridade Social`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

          Código de Situação Tributária da COFINS. Mesmas faixas do PIS: "01"/"02" por alíquota (exige baseCalculo, aliquota e valor), "04"-"09" não tributado, outras operações: "49"-"56", "60"-"67", "70"-"75", "98" e "99". Ausente = "99" com valores zerados (padrão: `^\d{1,3}$`)

          **Condição do leiaute:** Tributado por alíquota: 01 e 02 (exigem base, alíquota e valor). Não tributado: 04 a 09 (só o CST vai no documento). Outras operações: 49 a 56, 60 a 67, 70 a 75, 98 e 99. O CST 03 (por quantidade) não é suportado: o contrato não tem qBCProd/vAliqProd. Ausente = 99 com valores zerados.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/COFINS/COFINSAliq/CST e demais subgrupos*
        </ParamField>

        <ParamField path="items[].cofins.baseCalculo" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vBC` (grupo `COFINS: Contribuição para Financiamento da Seguridade Social`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Base de cálculo da COFINS em R\$ (transmitida como vBC)

          **Condição do leiaute:** Obrigatória nos CST que carregam valores (01, 02 e a faixa de outras operações). Nos CST não tributados o subgrupo do leiaute só tem o CST.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/COFINS/COFINSAliq/vBC (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].cofins.aliquota" type="number">
          **Tamanho:** 3v2-4 · **Tag do leiaute:** `pCOFINS` (grupo `COFINS: Contribuição para Financiamento da Seguridade Social`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Alíquota da COFINS em % (transmitida como pCOFINS)

          **Condição do leiaute:** Obrigatória junto com a base nos CST que carregam valores.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/COFINS/COFINSAliq/pCOFINS (TDec\_0302a04)*
        </ParamField>

        <ParamField path="items[].cofins.valor" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vCOFINS` (grupo `COFINS: Contribuição para Financiamento da Seguridade Social`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Valor da COFINS em R\$ (transmitido como vCOFINS e somado no total da nota)

          **Condição do leiaute:** Obrigatório junto com a base nos CST que carregam valores. Soma no total da nota (tag de mesmo nome no grupo de totais), mas não compõe o valor a pagar.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/COFINS/COFINSAliq/vCOFINS (TDec\_1302)*
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="items[].ipi" type="object">
      **Tag do leiaute:** `IPI` (grupo `IPI: Imposto sobre Produtos Industrializados`) · **Obrigatoriedade do leiaute:** condicional no leiaute

      Tributação de IPI do item (indústria/importação). Só na NF-e: a NFC-e não tem IPI no leiaute. O valor informado compõe o total da nota

      **Condição do leiaute:** Grupo do leiaute exigido de indústria e de importador equiparado a industrial.

      **Nota do leiaute:** Grupo, não campo: o leiaute escolhe entre IPITrib e IPINT pelo CST, e é o subgrupo que carrega as tags de valor.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/imposto/IPI (TIpi, choice entre IPITrib e IPINT)*

      <Expandable title="5 campo(s)">
        <ParamField path="items[].ipi.cst" type="string">
          **Tamanho:** 2 · **Tag do leiaute:** `CST` (grupo `IPI: Imposto sobre Produtos Industrializados`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

          Código de Situação Tributária do IPI (obrigatório quando o grupo ipi é enviado). Tributados: "00", "49", "50", "99" (exigem baseCalculo, aliquota e valor). Não tributados: "01".."05" e "51".."55" (só o CST vai no documento) (padrão: `^\d{1,3}$`)

          **Condição do leiaute:** Tributados (subgrupo IPITrib, exigem base, alíquota e valor): 00, 49, 50 e 99. Não tributados (subgrupo IPINT, só o CST vai no documento): 01 a 05 e 51 a 55.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TIpi/IPITrib/CST e TIpi/IPINT/CST*
        </ParamField>

        <ParamField path="items[].ipi.baseCalculo" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vBC` (grupo `IPI: Imposto sobre Produtos Industrializados`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Base de cálculo do IPI em R\$ (transmitida como vBC)

          **Condição do leiaute:** Obrigatória nos CST tributados (00, 49, 50, 99).

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TIpi/IPITrib/vBC (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].ipi.aliquota" type="number">
          **Tamanho:** 3v2-4 · **Tag do leiaute:** `pIPI` (grupo `IPI: Imposto sobre Produtos Industrializados`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Alíquota do IPI em % (transmitida como pIPI)

          **Condição do leiaute:** Obrigatória nos CST tributados, junto com a base.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TIpi/IPITrib/pIPI (TDec\_0302a04)*
        </ParamField>

        <ParamField path="items[].ipi.valor" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vIPI` (grupo `IPI: Imposto sobre Produtos Industrializados`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Valor do IPI em R\$ (transmitido como vIPI). Atenção: o IPI COMPÕE o total da nota: vNF = produtos + IPI, e os pagamentos precisam fechar com esse total

          **Condição do leiaute:** Obrigatório nos CST tributados. Atenção: o IPI COMPÕE o total da nota (vNF = produtos - desconto + frete + seguro + outras despesas + IPI), então os pagamentos precisam fechar com esse total.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TIpi/IPITrib/vIPI (TDec\_1302)*
        </ParamField>

        <ParamField path="items[].ipi.cEnq" type="string">
          **Tamanho:** 1-3 · **Tag do leiaute:** `cEnq` (grupo `IPI: Imposto sobre Produtos Industrializados`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

          Código de Enquadramento Legal do IPI, 1 a 3 dígitos (tabela da Receita). Ausente = "999" (demais casos)

          **Condição do leiaute:** Código de Enquadramento Legal do IPI (tabela da Receita Federal). Ausente = 999 (demais casos), escrito explicitamente pela engineAPI.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TIpi/cEnq*
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="items[].ibsCbs" type="object">
      **Tag do leiaute:** `IBSCBS` (grupo `UB: Tributação do IBS e da CBS`) · **Obrigatoriedade do leiaute:** opcional no leiaute

      Grupo IBS/CBS da Reforma Tributária (opcional, NT 2025.002). Aceita o grupo completo (passthrough) ou só \{ cClassTrib }; nesse caso o Cérebro Fiscal resolve os percentuais oficiais da classe (requer resolverTributacao: true)

      **Condição do leiaute:** Grupo da Reforma Tributária (NT 2025.002). Aceita o grupo completo (passthrough) ou só \{ cClassTrib }; nesse segundo formato o Cérebro Fiscal resolve os percentuais oficiais da classe e exige resolverTributacao: true.

      **Nota do leiaute:** Grupo, não campo: IBSCBS é o contêiner do CST, do cClassTrib e dos subgrupos de alíquota.

      *Fonte do leiaute: DFeTiposBasicos\_v1.00.xsd: TNFe/infNFe/det/imposto/IBSCBS (tipo TTribNFe)*

      <Expandable title="7 campo(s)">
        <ParamField path="items[].ibsCbs.cst" type="string">
          **Tamanho:** 3 · **Tag do leiaute:** `CST` (grupo `UB: Tributação do IBS e da CBS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

          Código de Situação Tributária do IBS/CBS (Reforma Tributária). Ausente = "000" (padrão: `^\d{1,3}$`)

          **Condição do leiaute:** Código de Situação Tributária do IBS/CBS, 3 dígitos exatos no leiaute. Ausente = 000 (tributação integral).

          *Fonte do leiaute: DFeTiposBasicos\_v1.00.xsd: TTribNFe/CST (TCST)*
        </ParamField>

        <ParamField path="items[].ibsCbs.cClassTrib" type="string">
          **Tamanho:** 6 · **Tag do leiaute:** `cClassTrib` (grupo `UB: Tributação do IBS e da CBS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

          Código de Classificação Tributária do IBS/CBS. Ausente = "000001" (tributação integral) (padrão: `^\d{1,6}$`)

          **Condição do leiaute:** Código de Classificação Tributária do IBS/CBS, 6 dígitos exatos no leiaute. Ausente = 000001 (tributação integral). Sozinho no grupo, vira a dica de classe que o Cérebro Fiscal resolve.

          *Fonte do leiaute: DFeTiposBasicos\_v1.00.xsd: TTribNFe/cClassTrib (TcClassTrib)*
        </ParamField>

        <ParamField path="items[].ibsCbs.vBC" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vBC` (grupo `UB: Tributação do IBS e da CBS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** derivado de outros campos (calculado)

          Base de cálculo do IBS/CBS em R\$. Ausente = vProd − desconto + valorFrete + valorSeguro + outrasDespesas do item (LC 214/2025 art. 12 § 1º III soma frete/seguro/outras despesas; art. 12 § 2º III: descontos incondicionais não integram a base)

          **Condição do leiaute:** Base de cálculo do IBS/CBS. Ausente = valor do produto menos desconto incondicional, mais frete, seguro e outras despesas do item.

          *Fonte do leiaute: DFeTiposBasicos\_v1.00.xsd: TCIBS/vBC (TDec1302RTC)*
        </ParamField>

        <ParamField path="items[].ibsCbs.ibsUf" type="object" required>
          **Tag do leiaute:** `gIBSUF` (grupo `UB: Tributação do IBS e da CBS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute

          Componente estadual do IBS (Imposto sobre Bens e Serviços)

          **Condição do leiaute:** Subgrupo do componente estadual do IBS. Os três subgrupos são obrigatórios quando o grupo de tributação IBS/CBS existe no item.

          **Nota do leiaute:** Grupo, não campo: o subgrupo é o contêiner da alíquota e do valor do componente.

          *Fonte do leiaute: DFeTiposBasicos\_v1.00.xsd: TCIBS/gIBSUF*

          <Expandable title="4 campo(s)">
            <ParamField path="items[].ibsCbs.ibsUf.p" type="number" required>
              **Tamanho:** 3v2-4 · **Tag do leiaute:** `pAliqEfet` (grupo `UB: Tributação do IBS e da CBS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

              Alíquota EFETIVA do componente, em % (ex.: 0.04). É ela que gera o valor do tributo (v = p × vBC). Em item COM redução, vai no documento dentro de gRed/pAliqEfet

              **Condição do leiaute:** Alíquota EFETIVA do componente estadual do IBS. Em item COM redução ela vai em pAliqEfet, dentro do subgrupo gRed; em item SEM redução ela é a própria pIBSUF (nominal e efetiva coincidem).

              *Fonte do leiaute: DFeTiposBasicos\_v1.00.xsd: TRed/pAliqEfet e TCIBS/gIBSUF/pIBSUF (TDec\_0302\_04RTC)*
            </ParamField>

            <ParamField path="items[].ibsCbs.ibsUf.pNominal" type="number">
              **Tamanho:** 3v2-4 · **Tag do leiaute:** `pIBSUF` (grupo `UB: Tributação do IBS e da CBS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

              Alíquota NOMINAL do componente, em % (ex.: 0.1). É a alíquota cheia, antes da redução do cClassTrib, e a que o documento grava em pIBSUF/pIBSMun/pCBS. Obrigatória junto com pRedAliq; ausente = item sem redução (nominal = efetiva)

              **Condição do leiaute:** Alíquota NOMINAL (cheia, antes da redução do cClassTrib). É o que o documento grava em pIBSUF. Obrigatória junto com pRedAliq; ausente = item sem redução, e a efetiva é gravada como nominal.

              *Fonte do leiaute: DFeTiposBasicos\_v1.00.xsd: TCIBS/gIBSUF/pIBSUF (TDec\_0302\_04RTC)*
            </ParamField>

            <ParamField path="items[].ibsCbs.ibsUf.pRedAliq" type="number">
              **Tamanho:** 3v2-4 · **Tag do leiaute:** `pRedAliq` (grupo `UB: Tributação do IBS e da CBS`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

              Percentual de redução de alíquota do cClassTrib, em % (ex.: 60 para o Anexo VII). Presente e maior que 0 faz o documento emitir o grupo gRed\{pRedAliq, pAliqEfet}. Obrigatória junto com pNominal

              **Condição do leiaute:** Percentual de redução de alíquota do cClassTrib. Presente e maior que zero faz o documento emitir o subgrupo gRed\{pRedAliq, pAliqEfet}. Obrigatória junto com pNominal. A SEFAZ valida a redução contra o cClassTrib do item.

              *Fonte do leiaute: DFeTiposBasicos\_v1.00.xsd: TRed/pRedAliq (TDec\_0302\_04RTC)*
            </ParamField>

            <ParamField path="items[].ibsCbs.ibsUf.v" type="number">
              **Tamanho:** 13v2 · **Tag do leiaute:** `vIBSUF` (grupo `UB: Tributação do IBS e da CBS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** derivado de outros campos (calculado)

              Valor do componente em R\$. Ausente = calculado como p × vBC

              **Condição do leiaute:** Valor do componente estadual do IBS. Ausente = calculado pela engineAPI como alíquota efetiva × base do grupo.

              *Fonte do leiaute: DFeTiposBasicos\_v1.00.xsd: TCIBS/gIBSUF/vIBSUF (TDec1302RTC)*
            </ParamField>
          </Expandable>
        </ParamField>

        <ParamField path="items[].ibsCbs.ibsMun" type="object" required>
          **Tag do leiaute:** `gIBSMun` (grupo `UB: Tributação do IBS e da CBS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute

          Componente municipal do IBS

          **Condição do leiaute:** Subgrupo do componente municipal do IBS. Os três subgrupos são obrigatórios quando o grupo de tributação IBS/CBS existe no item.

          **Nota do leiaute:** Grupo, não campo: o subgrupo é o contêiner da alíquota e do valor do componente.

          *Fonte do leiaute: DFeTiposBasicos\_v1.00.xsd: TCIBS/gIBSMun*

          <Expandable title="4 campo(s)">
            <ParamField path="items[].ibsCbs.ibsMun.p" type="number" required>
              **Tamanho:** 3v2-4 · **Tag do leiaute:** `pAliqEfet` (grupo `UB: Tributação do IBS e da CBS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

              Alíquota EFETIVA do componente, em % (ex.: 0.04). É ela que gera o valor do tributo (v = p × vBC). Em item COM redução, vai no documento dentro de gRed/pAliqEfet

              **Condição do leiaute:** Alíquota EFETIVA do componente municipal do IBS. Em item COM redução ela vai em pAliqEfet, dentro do subgrupo gRed; em item SEM redução ela é a própria pIBSMun (nominal e efetiva coincidem).

              *Fonte do leiaute: DFeTiposBasicos\_v1.00.xsd: TRed/pAliqEfet e TCIBS/gIBSMun/pIBSMun (TDec\_0302\_04RTC)*
            </ParamField>

            <ParamField path="items[].ibsCbs.ibsMun.pNominal" type="number">
              **Tamanho:** 3v2-4 · **Tag do leiaute:** `pIBSMun` (grupo `UB: Tributação do IBS e da CBS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

              Alíquota NOMINAL do componente, em % (ex.: 0.1). É a alíquota cheia, antes da redução do cClassTrib, e a que o documento grava em pIBSUF/pIBSMun/pCBS. Obrigatória junto com pRedAliq; ausente = item sem redução (nominal = efetiva)

              **Condição do leiaute:** Alíquota NOMINAL (cheia, antes da redução do cClassTrib). É o que o documento grava em pIBSMun. Obrigatória junto com pRedAliq; ausente = item sem redução, e a efetiva é gravada como nominal.

              *Fonte do leiaute: DFeTiposBasicos\_v1.00.xsd: TCIBS/gIBSMun/pIBSMun (TDec\_0302\_04RTC)*
            </ParamField>

            <ParamField path="items[].ibsCbs.ibsMun.pRedAliq" type="number">
              **Tamanho:** 3v2-4 · **Tag do leiaute:** `pRedAliq` (grupo `UB: Tributação do IBS e da CBS`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

              Percentual de redução de alíquota do cClassTrib, em % (ex.: 60 para o Anexo VII). Presente e maior que 0 faz o documento emitir o grupo gRed\{pRedAliq, pAliqEfet}. Obrigatória junto com pNominal

              **Condição do leiaute:** Percentual de redução de alíquota do cClassTrib. Presente e maior que zero faz o documento emitir o subgrupo gRed\{pRedAliq, pAliqEfet}. Obrigatória junto com pNominal. A SEFAZ valida a redução contra o cClassTrib do item.

              *Fonte do leiaute: DFeTiposBasicos\_v1.00.xsd: TRed/pRedAliq (TDec\_0302\_04RTC)*
            </ParamField>

            <ParamField path="items[].ibsCbs.ibsMun.v" type="number">
              **Tamanho:** 13v2 · **Tag do leiaute:** `vIBSMun` (grupo `UB: Tributação do IBS e da CBS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** derivado de outros campos (calculado)

              Valor do componente em R\$. Ausente = calculado como p × vBC

              **Condição do leiaute:** Valor do componente municipal do IBS. Ausente = calculado pela engineAPI como alíquota efetiva × base do grupo.

              *Fonte do leiaute: DFeTiposBasicos\_v1.00.xsd: TCIBS/gIBSMun/vIBSMun (TDec1302RTC)*
            </ParamField>
          </Expandable>
        </ParamField>

        <ParamField path="items[].ibsCbs.vIbs" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vIBS` (grupo `UB: Tributação do IBS e da CBS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** derivado de outros campos (calculado)

          Valor total do IBS em R\$ (UF + Município). Ausente = vIbsUf + vIbsMun

          **Condição do leiaute:** Valor total do IBS do item (estadual + municipal). Ausente = soma dos dois componentes.

          *Fonte do leiaute: DFeTiposBasicos\_v1.00.xsd: TCIBS/vIBS (TDec1302RTC)*
        </ParamField>

        <ParamField path="items[].ibsCbs.cbs" type="object" required>
          **Tag do leiaute:** `gCBS` (grupo `UB: Tributação do IBS e da CBS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute

          CBS (Contribuição sobre Bens e Serviços, componente federal)

          **Condição do leiaute:** Subgrupo do CBS, o componente federal. Os três subgrupos são obrigatórios quando o grupo de tributação IBS/CBS existe no item.

          **Nota do leiaute:** Grupo, não campo: o subgrupo é o contêiner da alíquota e do valor do componente.

          *Fonte do leiaute: DFeTiposBasicos\_v1.00.xsd: TCIBS/gCBS*

          <Expandable title="4 campo(s)">
            <ParamField path="items[].ibsCbs.cbs.p" type="number" required>
              **Tamanho:** 3v2-4 · **Tag do leiaute:** `pAliqEfet` (grupo `UB: Tributação do IBS e da CBS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

              Alíquota EFETIVA do componente, em % (ex.: 0.04). É ela que gera o valor do tributo (v = p × vBC). Em item COM redução, vai no documento dentro de gRed/pAliqEfet

              **Condição do leiaute:** Alíquota EFETIVA do CBS, o componente federal. Em item COM redução ela vai em pAliqEfet, dentro do subgrupo gRed; em item SEM redução ela é a própria pCBS (nominal e efetiva coincidem).

              *Fonte do leiaute: DFeTiposBasicos\_v1.00.xsd: TRed/pAliqEfet e TCIBS/gCBS/pCBS (TDec\_0302\_04RTC)*
            </ParamField>

            <ParamField path="items[].ibsCbs.cbs.pNominal" type="number">
              **Tamanho:** 3v2-4 · **Tag do leiaute:** `pCBS` (grupo `UB: Tributação do IBS e da CBS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

              Alíquota NOMINAL do componente, em % (ex.: 0.1). É a alíquota cheia, antes da redução do cClassTrib, e a que o documento grava em pIBSUF/pIBSMun/pCBS. Obrigatória junto com pRedAliq; ausente = item sem redução (nominal = efetiva)

              **Condição do leiaute:** Alíquota NOMINAL (cheia, antes da redução do cClassTrib). É o que o documento grava em pCBS. Obrigatória junto com pRedAliq; ausente = item sem redução, e a efetiva é gravada como nominal.

              *Fonte do leiaute: DFeTiposBasicos\_v1.00.xsd: TCIBS/gCBS/pCBS (TDec\_0302\_04RTC)*
            </ParamField>

            <ParamField path="items[].ibsCbs.cbs.pRedAliq" type="number">
              **Tamanho:** 3v2-4 · **Tag do leiaute:** `pRedAliq` (grupo `UB: Tributação do IBS e da CBS`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

              Percentual de redução de alíquota do cClassTrib, em % (ex.: 60 para o Anexo VII). Presente e maior que 0 faz o documento emitir o grupo gRed\{pRedAliq, pAliqEfet}. Obrigatória junto com pNominal

              **Condição do leiaute:** Percentual de redução de alíquota do cClassTrib. Presente e maior que zero faz o documento emitir o subgrupo gRed\{pRedAliq, pAliqEfet}. Obrigatória junto com pNominal. A SEFAZ valida a redução contra o cClassTrib do item.

              *Fonte do leiaute: DFeTiposBasicos\_v1.00.xsd: TRed/pRedAliq (TDec\_0302\_04RTC)*
            </ParamField>

            <ParamField path="items[].ibsCbs.cbs.v" type="number">
              **Tamanho:** 13v2 · **Tag do leiaute:** `vCBS` (grupo `UB: Tributação do IBS e da CBS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** derivado de outros campos (calculado)

              Valor do componente em R\$. Ausente = calculado como p × vBC

              **Condição do leiaute:** Valor do CBS, o componente federal. Ausente = calculado pela engineAPI como alíquota efetiva × base do grupo.

              *Fonte do leiaute: DFeTiposBasicos\_v1.00.xsd: TCIBS/gCBS/vCBS (TDec1302RTC)*
            </ParamField>
          </Expandable>
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="items[].combustivel" type="object">
      **Tag do leiaute:** `comb` (grupo `LA: Combustível`) · **Obrigatoriedade do leiaute:** condicional no leiaute

      Grupo de combustíveis do leiaute (comb/LA). Obrigatório quando o CFOP do item é de operação com combustível (rejeição 660 da SEFAZ): sem ele a emissão é recusada com 422 COMBUSTIVEL\_GRUPO\_OBRIGATORIO. Passthrough: o motor não calcula nada aqui

      **Condição do leiaute:** Obrigatório quando o CFOP do item é de operação com combustível (a Tabela CFOP marca esses códigos com indComb 1 ou 2). Sem o grupo a emissão é recusada com 422 COMBUSTIVEL\_GRUPO\_OBRIGATORIO, antes de a SEFAZ rejeitar com cStat 660.

      **Nota do leiaute:** Grupo, não campo: comb é o contêiner do detalhamento específico de combustíveis.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/comb*

      <Expandable title="7 campo(s)">
        <ParamField path="items[].combustivel.cProdANP" type="string" required>
          **Tamanho:** 9 · **Tag do leiaute:** `cProdANP` (grupo `LA: Combustível`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

          Código do produto na tabela SIMP da ANP, 9 dígitos (ex.: "210203001" para GLP). Código inexistente na tabela da ANP é rejeitado pela SEFAZ (cStat 761) (padrão: `^\d{9}$`)

          **Condição do leiaute:** Código do produto na tabela SIMP da ANP. Código inexistente na tabela é rejeitado pela SEFAZ (cStat 761).

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/comb/cProdANP*
        </ParamField>

        <ParamField path="items[].combustivel.descANP" type="string" required>
          **Tamanho:** 2-95 · **Tag do leiaute:** `descANP` (grupo `LA: Combustível`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

          Descrição do produto conforme a ANP (tabela SIMP), 2 a 95 caracteres (ex.: "GLP")

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/comb/descANP*
        </ParamField>

        <ParamField path="items[].combustivel.ufConsumo" type="string" required>
          **Tamanho:** 2 · **Tag do leiaute:** `UFCons` (grupo `LA: Combustível`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

          Sigla da UF de consumo do combustível (campo UFCons do leiaute, obrigatório). Use "EX" para exterior

          **Condição do leiaute:** Sigla da UF de consumo do combustível. Use EX para exterior.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/comb/UFCons (TUf)*
        </ParamField>

        <ParamField path="items[].combustivel.pGLP" type="number">
          **Tamanho:** 3v2-4 (0 a 100) · **Tag do leiaute:** `pGLP` (grupo `LA: Combustível`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Percentual do GLP derivado de petróleo no produto, 0 a 100. SÓ para cProdANP "210203001" (GLP); em outro produto a emissão é recusada com 422 COMBUSTIVEL\_INVALIDO (a SEFAZ rejeitaria com cStat 461)

          **Condição do leiaute:** Só existe para GLP (cProdANP 210203001). Em outro produto a emissão é recusada com 422 COMBUSTIVEL\_INVALIDO (a SEFAZ rejeitaria com cStat 461). A soma pGLP + pGNn + pGNi tem que dar 100 (cStat 855).

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/comb/pGLP (TDec\_0302a04Max100)*
        </ParamField>

        <ParamField path="items[].combustivel.pGNn" type="number">
          **Tamanho:** 3v2-4 (0 a 100) · **Tag do leiaute:** `pGNn` (grupo `LA: Combustível`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Percentual de gás natural NACIONAL (GLGNn) no produto GLP, 0 a 100. Mesma restrição de pGLP

          **Condição do leiaute:** Percentual de gás natural NACIONAL no GLP. Mesma restrição de pGLP: só para cProdANP 210203001, e a soma dos três percentuais tem que dar 100.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/comb/pGNn (TDec\_0302a04Max100)*
        </ParamField>

        <ParamField path="items[].combustivel.pGNi" type="number">
          **Tamanho:** 3v2-4 (0 a 100) · **Tag do leiaute:** `pGNi` (grupo `LA: Combustível`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Percentual de gás natural IMPORTADO (GLGNi) no produto GLP, 0 a 100. Mesma restrição de pGLP. Regra da SEFAZ: pGLP + pGNn + pGNi = 100 (cStat 855)

          **Condição do leiaute:** Percentual de gás natural IMPORTADO no GLP. Mesma restrição de pGLP: só para cProdANP 210203001, e a soma dos três percentuais tem que dar 100.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/comb/pGNi (TDec\_0302a04Max100)*
        </ParamField>

        <ParamField path="items[].combustivel.vPart" type="number">
          **Tamanho:** 13v2 · **Tag do leiaute:** `vPart` (grupo `LA: Combustível`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Valor de partida em R\$ por quilograma, SEM ICMS. Obrigatório para GLP (cStat 856) e aceito apenas nele

          **Condição do leiaute:** Valor de partida por quilograma, sem ICMS. Obrigatório para GLP (cStat 856) e aceito apenas nele.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/comb/vPart (TDec\_1302)*
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="items[].gCred" type="object[]">
      **Tag do leiaute:** `gCred` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** opcional no leiaute

      Créditos presumidos concedidos pela UF ao item (grupo gCred do leiaute), até 4. Passthrough: o código vem da tabela de benefícios da própria UF

      **Condição do leiaute:** Créditos presumidos concedidos pela UF ao item, até 4 por item no leiaute. Uma entrada do array vira um grupo gCred do documento.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/gCred (minOccurs="0" maxOccurs="4")*

      <Expandable title="cada item tem 3 campo(s)">
        <ParamField path="items[].gCred[].cCredPresumido" type="string" required>
          **Tamanho:** 8 ou 10 · **Tag do leiaute:** `cCredPresumido` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Código do benefício fiscal de crédito presumido na UF aplicado ao item, 8 ou 10 caracteres alfanuméricos (ex.: "GO810003")

          **Condição do leiaute:** Obrigatório dentro do grupo de crédito presumido. É o código do crédito na tabela da sua UF. A engineAPI confere o FORMATO; conferir se o código existe na tabela é responsabilidade do emitente.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/gCred/cCredPresumido*
        </ParamField>

        <ParamField path="items[].gCred[].pCredPresumido" type="number" required>
          **Tamanho:** 3v2-4 · **Tag do leiaute:** `pCredPresumido` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Percentual do crédito presumido, em %

          **Condição do leiaute:** Obrigatório dentro do grupo de crédito presumido: percentual do crédito.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/gCred/pCredPresumido (TDec\_0302a04)*
        </ParamField>

        <ParamField path="items[].gCred[].vCredPresumido" type="number" required>
          **Tamanho:** 13v2 · **Tag do leiaute:** `vCredPresumido` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Valor do crédito presumido, em R\$

          **Condição do leiaute:** Obrigatório dentro do grupo de crédito presumido: valor do crédito.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/prod/gCred/vCredPresumido (TDec\_1302)*
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="items[].documentoReferenciado" type="object">
      **Tag do leiaute:** `DFeReferenciado` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** opcional no leiaute

      Referência por item na devolução (grupo DFeReferenciado, NT 2025.002-RTC VC). Obrigatório na prática em finNFe 4: informe nItem da nota original; chaveAcesso pode vir do cabeçalho referenciadas\[]

      **Condição do leiaute:** Referência por item na devolução (finNFe 4). Obrigatório na prática: NT 2025.002-RTC VC03-20 (Msg 1048). Só se aplica à devolução.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/DFeReferenciado (grupo VC, Pai=H01)*

      <Expandable title="2 campo(s)">
        <ParamField path="items[].documentoReferenciado.chaveAcesso" type="string">
          **Tamanho:** 44 · **Tag do leiaute:** `chaveAcesso` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Chave de acesso da nota original (44 dígitos). Ausente: usa "referenciadas\[0].chaveAcesso" do cabeçalho quando informado (padrão: `^\d{44}$`)

          **Condição do leiaute:** Chave da nota original referenciada. Ausente no item: usa referenciadas\[0].chaveAcesso do cabeçalho.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/DFeReferenciado/chaveAcesso (TChNFe)*
        </ParamField>

        <ParamField path="items[].documentoReferenciado.nItem" type="integer" required>
          **Tamanho:** 1-3 · **Tag do leiaute:** `nItem` (grupo `I: Produtos e Serviços`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

          Número do item (nItem) na nota ORIGINAL referenciada, 1 a 999; corresponde ao atributo nItem do det da nota de origem (NT 2025.002-RTC VC03)

          **Condição do leiaute:** Número do item (nItem) na nota ORIGINAL, 1 a 999; corresponde ao atributo nItem do det da nota referenciada (NT 2025.002-RTC VC03).

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/det/DFeReferenciado/nItem*
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

***

<h2 id="grupo-totais">
  Totais
</h2>

O grupo de totais do leiaute não é enviado no payload: a engineAPI soma os itens e calcula o total automaticamente.

***

<h2 id="grupo-transporte">
  Transporte
</h2>

<ParamField path="transporte" type="object">
  **Tag do leiaute:** `transp` (grupo `X: Informações do Transporte`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute

  Dados de transporte. Se enviado, modFrete é obrigatório

  **Condição do leiaute:** O grupo é SEMPRE emitido: sem transporte no payload, a engineAPI declara modalidade 9 (sem ocorrência de transporte) explicitamente, em vez de deixar o motor fiscal assumir o default 0 (frete por conta do emitente).

  **Nota do leiaute:** Grupo, não campo: transp é o contêiner da modalidade do frete, do transportador e dos volumes.

  *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/transp*

  <Expandable title="3 campo(s)">
    <ParamField path="transporte.modFrete" type="number" required>
      **Tamanho:** 1 · **Tag do leiaute:** `modFrete` (grupo `X: Informações do Transporte`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      Modalidade do frete: 0=por conta do remetente/emitente (CIF), 1=por conta do destinatário (FOB), 2=por conta de terceiros, 3=transporte próprio por conta do remetente, 4=transporte próprio por conta do destinatário, 9=sem ocorrência de transporte

      **Condição do leiaute:** Sem o grupo transporte no payload, a engineAPI escreve 9.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/transp/modFrete*

      | Valor | Significado                                      |
      | ----- | ------------------------------------------------ |
      | `0`   | Frete contratado por conta do remetente (CIF)    |
      | `1`   | Frete contratado por conta do destinatário (FOB) |
      | `2`   | Frete contratado por conta de terceiros          |
      | `3`   | Transporte próprio por conta do remetente        |
      | `4`   | Transporte próprio por conta do destinatário     |
      | `9`   | Sem ocorrência de transporte                     |
    </ParamField>

    <ParamField path="transporte.transportadora" type="object">
      **Tag do leiaute:** `transporta` (grupo `X: Informações do Transporte`) · **Obrigatoriedade do leiaute:** opcional no leiaute

      **Condição do leiaute:** Subgrupo do transportador. Operação com CFOP de combustível que a Tabela CFOP marca com indComb 2 exige a identificação do transportador (cStat 362); a engineAPI não recusa por isso, então a regra fica com o integrador.

      **Nota do leiaute:** Grupo, não campo: transporta é o contêiner dos dados do transportador.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/transp/transporta*

      <Expandable title="6 campo(s)">
        <ParamField path="transporte.transportadora.cnpjCpf" type="string">
          **Tamanho:** 14 (CNPJ) ou 11 (CPF) · **Tag do leiaute:** `CNPJ` (grupo `X: Informações do Transporte`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CNPJ ou CPF da transportadora

          **Condição do leiaute:** Escolha exclusiva no leiaute, como no destinatário: CNPJ para pessoa jurídica, CPF para pessoa física. Obrigatório sempre que o subgrupo do transportador é emitido (é o subgrupo inteiro que é opcional, não o documento dentro dele).

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/transp/transporta/CNPJ (TCnpj) e /CPF (TCpf)*
        </ParamField>

        <ParamField path="transporte.transportadora.nome" type="string">
          **Tamanho:** 2-60 · **Tag do leiaute:** `xNome` (grupo `X: Informações do Transporte`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

          Razão social ou nome da transportadora

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/transp/transporta/xNome*
        </ParamField>

        <ParamField path="transporte.transportadora.ie" type="string">
          **Tamanho:** 2-14 (ou o literal ISENTO) · **Tag do leiaute:** `IE` (grupo `X: Informações do Transporte`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

          Inscrição Estadual da transportadora

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/transp/transporta/IE (TIeDest)*
        </ParamField>

        <ParamField path="transporte.transportadora.endereco" type="string">
          **Tamanho:** 1-60 · **Tag do leiaute:** `xEnder` (grupo `X: Informações do Transporte`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

          Endereço da transportadora

          **Condição do leiaute:** Endereço COMPLETO do transportador numa linha só (o leiaute não fatia logradouro, número e bairro aqui, ao contrário do endereço do destinatário).

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/transp/transporta/xEnder*
        </ParamField>

        <ParamField path="transporte.transportadora.municipio" type="string">
          **Tamanho:** 1-60 · **Tag do leiaute:** `xMun` (grupo `X: Informações do Transporte`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

          Município da transportadora

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/transp/transporta/xMun*
        </ParamField>

        <ParamField path="transporte.transportadora.uf" type="string">
          **Tamanho:** 2 · **Tag do leiaute:** `UF` (grupo `X: Informações do Transporte`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

          UF da transportadora

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/transp/transporta/UF (TUf)*
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="transporte.volumes" type="object[]">
      **Tag do leiaute:** `vol` (grupo `X: Informações do Transporte`) · **Obrigatoriedade do leiaute:** opcional no leiaute

      **Condição do leiaute:** Uma entrada do array vira um subgrupo vol do leiaute. Volume sem nenhum campo preenchido não gera subgrupo.

      **Nota do leiaute:** Grupo, não campo: vol é o contêiner de um volume transportado.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/transp/vol*

      <Expandable title="cada item tem 4 campo(s)">
        <ParamField path="transporte.volumes[].quantidade" type="integer">
          **Tamanho:** 1-15 · **Tag do leiaute:** `qVol` (grupo `X: Informações do Transporte`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

          Quantidade de volumes transportados

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/transp/vol/qVol*
        </ParamField>

        <ParamField path="transporte.volumes[].especie" type="string">
          **Tamanho:** 1-60 · **Tag do leiaute:** `esp` (grupo `X: Informações do Transporte`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

          Espécie dos volumes (ex.: "Caixa", "Pallet")

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/transp/vol/esp*
        </ParamField>

        <ParamField path="transporte.volumes[].pesoBruto" type="number">
          **Tamanho:** 12v3 · **Tag do leiaute:** `pesoB` (grupo `X: Informações do Transporte`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

          Peso bruto total em kg, com até 12 dígitos inteiros e 3 casas decimais

          **Condição do leiaute:** Peso em quilogramas.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/transp/vol/pesoB (TDec\_1203)*
        </ParamField>

        <ParamField path="transporte.volumes[].pesoLiquido" type="number">
          **Tamanho:** 12v3 · **Tag do leiaute:** `pesoL` (grupo `X: Informações do Transporte`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

          Peso líquido total em kg, com até 12 dígitos inteiros e 3 casas decimais

          **Condição do leiaute:** Peso em quilogramas.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/transp/vol/pesoL (TDec\_1203)*
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

***

<h2 id="grupo-cobranca">
  Cobrança
</h2>

<ParamField path="cobranca" type="object">
  **Tag do leiaute:** `cobr` (grupo `Y: Cobrança`) · **Obrigatoriedade do leiaute:** opcional no leiaute

  Cobrança a prazo: fatura (numero, valorOriginal, valorDesconto, valorLiquido) sozinha, ou fatura + duplicatas\[] (numero, vencimento, valor) juntas. O XSD aceita duplicatas sem fatura (irmãos, minOccurs=0); a API recusa essa combinação antes de numerar, pelas regras nacionais Y01-20 e Y10-10 (422 COBRANCA\_INVALIDA). Informativo/financeiro: NÃO altera vNF nem `pagamentos` (quem fecha o total transmitido continua sendo `pagamentos`)

  **Condição do leiaute:** Grupo informativo/financeiro: não altera o total do documento nem substitui pagamentos. fat e dup são IRMÃOS no XSD, mas as regras nacionais Y01-20/Y10-10 do MOC exigem fat quando há dup: duplicata sem fatura é recusada com 422 (COBRANCA\_INVALIDA) antes de numerar. Na emissão medida em GO o retorno observado foi 851.

  **Nota do leiaute:** Grupo, não campo: cobr é o contêiner da fatura e das duplicatas.

  *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/cobr*

  <Expandable title="2 campo(s)">
    <ParamField path="cobranca.fatura" type="object">
      **Tag do leiaute:** `fat` (grupo `Y: Cobrança`) · **Obrigatoriedade do leiaute:** opcional no leiaute

      Dados da fatura (grupo fat). Se enviado, os 4 campos são obrigatórios

      **Condição do leiaute:** Se a fatura for enviada, os quatro campos são obrigatórios: o motor fiscal gera as quatro tags sempre que o bloco existe, e uma fatura parcial produziria tag vazia que o leiaute rejeita.

      **Nota do leiaute:** Grupo, não campo: fat é o contêiner dos dados da fatura.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/cobr/fat*

      <Expandable title="4 campo(s)">
        <ParamField path="cobranca.fatura.numero" type="string" required>
          **Tamanho:** 1-60 · **Tag do leiaute:** `nFat` (grupo `Y: Cobrança`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Número da fatura (nFat do leiaute), 1 a 60 caracteres

          **Condição do leiaute:** Obrigatório quando a fatura é enviada (ver o grupo fat).

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/cobr/fat/nFat*
        </ParamField>

        <ParamField path="cobranca.fatura.valorOriginal" type="number" required>
          **Tamanho:** 13v2 · **Tag do leiaute:** `vOrig` (grupo `Y: Cobrança`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Valor original da fatura em R\$ (vOrig)

          **Condição do leiaute:** Obrigatório quando a fatura é enviada.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/cobr/fat/vOrig (TDec\_1302)*
        </ParamField>

        <ParamField path="cobranca.fatura.valorDesconto" type="number" required>
          **Tamanho:** 13v2 · **Tag do leiaute:** `vDesc` (grupo `Y: Cobrança`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Valor do desconto da fatura em R\$ (vDesc). Não pode ser maior que valorOriginal

          **Condição do leiaute:** Obrigatório quando a fatura é enviada. Não pode ser maior que o valor original (regra do grupo de cobrança).

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/cobr/fat/vDesc (TDec\_1302)*
        </ParamField>

        <ParamField path="cobranca.fatura.valorLiquido" type="number" required>
          **Tamanho:** 13v2 · **Tag do leiaute:** `vLiq` (grupo `Y: Cobrança`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Valor líquido da fatura em R\$ (vLiq). Precisa ser igual a valorOriginal − valorDesconto, e igual à soma de duplicatas\[].valor quando houver duplicatas (regras do grupo Y do leiaute, MOC Anexo I)

          **Condição do leiaute:** Obrigatório quando a fatura é enviada. Precisa ser igual a valorOriginal menos valorDesconto e igual à soma das duplicatas, quando houver duplicatas.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/cobr/fat/vLiq (TDec\_1302)*
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="cobranca.duplicatas" type="object[]">
      **Tag do leiaute:** `dup` (grupo `Y: Cobrança`) · **Obrigatoriedade do leiaute:** opcional no leiaute

      Duplicatas do parcelamento (grupo dup, até 120). No XSD é irmã de `fatura` (ambas minOccurs=0). Este campo é compartilhado entre NF-e e NFC-e (mesmo `CobrancaSchema`), e o desfecho difere por modelo: na NF-e, as regras nacionais Y01-20/Y10-10 do MOC exigem `fatura` junto, duplicatas sem fatura é recusada com 422 (COBRANCA\_INVALIDA) antes de numerar (na emissão medida em GO o retorno observado foi 851); na NFC-e essa distinção não chega a rodar, qualquer cobranca com conteúdo, com ou sem fatura, é recusada antes com 422 COBRANCA\_NAO\_SUPORTADA\_NFCE. numero é tudo-ou-nada: se UMA duplicata tem numero, todas precisam ter

      **Condição do leiaute:** Uma entrada do array vira um subgrupo dup do leiaute (até 120). Estruturalmente o XSD permite vir sem fatura, mas as regras nacionais Y01-20/Y10-10 recusam essa combinação antes de numerar (422 COBRANCA\_INVALIDA). Na emissão medida em GO o retorno observado foi 851.

      **Nota do leiaute:** Grupo, não campo: dup é o contêiner de uma parcela.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/cobr/dup (maxOccurs="120")*

      <Expandable title="cada item tem 3 campo(s)">
        <ParamField path="cobranca.duplicatas[].numero" type="string">
          **Tamanho:** 1-60 · **Tag do leiaute:** `nDup` (grupo `Y: Cobrança`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** preenchido automaticamente pela engineAPI

          Número da duplicata (nDup do leiaute), 1 a 60 caracteres. Ausente = a engineAPI preenche sequencial (001, 002...): o documento sempre leva um nDup, nunca vazio

          **Condição do leiaute:** Opcional no contrato, mas o documento SEMPRE leva um nDup: ausente, a engineAPI preenche sequencial (001, 002...). É tudo-ou-nada: se uma duplicata informa numero, todas precisam informar.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/cobr/dup/nDup*
        </ParamField>

        <ParamField path="cobranca.duplicatas[].vencimento" type="string" required>
          **Tamanho:** 10 (AAAA-MM-DD) · **Tag do leiaute:** `dVenc` (grupo `Y: Cobrança`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Data de vencimento da duplicata, formato AAAA-MM-DD (dVenc do leiaute). Precisa ser >= à data de emissão e não-decrescente entre as parcelas (regras do grupo Y do leiaute, MOC Anexo I) (padrão: `^\d{4}-\d{2}-\d{2}$`)

          **Condição do leiaute:** Obrigatório no contrato: o leiaute rejeita duplicata sem vencimento ou com vencimento anterior à data de emissão. As parcelas precisam estar em ordem não decrescente.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/cobr/dup/dVenc (TData)*
        </ParamField>

        <ParamField path="cobranca.duplicatas[].valor" type="number" required>
          **Tamanho:** 13v2 · **Tag do leiaute:** `vDup` (grupo `Y: Cobrança`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

          Valor da duplicata em R\$ (vDup do leiaute)

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/cobr/dup/vDup (TDec\_1302Opc)*
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

***

<h2 id="grupo-pagamento">
  Pagamento
</h2>

<ParamField path="pagamentos" type="object[]" required>
  **Tag do leiaute:** `pag` (grupo `pag: Informações de Pagamento`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute

  Formas de pagamento (mínimo 1, máximo 100). Atenção: o campo é "pagamentos" (array), não "pagamento"

  **Condição do leiaute:** Uma entrada do array vira um subgrupo detPag do leiaute (máximo 100). A soma dos valores tem que fechar com o total do documento.

  **Nota do leiaute:** Grupo, não campo: pag é o contêiner das formas de pagamento e do troco.

  *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/pag e /pag/detPag (maxOccurs="100")*

  <Expandable title="cada item tem 4 campo(s)">
    <ParamField path="pagamentos[].forma" type="string" required>
      **Tamanho:** 2 · **Tag do leiaute:** `tPag` (grupo `pag: Informações de Pagamento`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      Código da forma de pagamento SEFAZ (ex.: "01" dinheiro, "03" cartão de crédito, "15" boleto)

      **Condição do leiaute:** O leiaute só restringe o formato a 2 dígitos; a lista fechada acima é a que a engineAPI valida, porque o motor fiscal converte código desconhecido em 01 (dinheiro) sem avisar.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/pag/detPag/tPag (o XSD só restringe o formato; a lista de códigos é a do MOC)*

      | Valor | Significado                                         |
      | ----- | --------------------------------------------------- |
      | `10`  | Vale alimentação                                    |
      | `11`  | Vale refeição                                       |
      | `12`  | Vale presente                                       |
      | `13`  | Vale combustível                                    |
      | `14`  | Duplicata mercantil                                 |
      | `15`  | Boleto bancário                                     |
      | `16`  | Depósito bancário                                   |
      | `17`  | PIX dinâmico                                        |
      | `18`  | Transferência bancária ou carteira digital          |
      | `19`  | Programa de fidelidade, cashback ou crédito virtual |
      | `20`  | PIX estático                                        |
      | `21`  | Crédito em loja                                     |
      | `22`  | Falha de hardware do sistema emissor                |
      | `90`  | Sem pagamento                                       |
      | `98`  | Regime especial NFF                                 |
      | `99`  | Outro                                               |
      | `01`  | Dinheiro                                            |
      | `02`  | Cheque                                              |
      | `03`  | Cartão de crédito                                   |
      | `04`  | Cartão de débito                                    |
      | `05`  | Cartão da loja (private label)                      |
    </ParamField>

    <ParamField path="pagamentos[].indicador" type="number">
      **Tamanho:** 1 · **Tag do leiaute:** `indPag` (grupo `pag: Informações de Pagamento`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

      Indicador da forma de pagamento (tag indPag do leiaute): 0 = pagamento à vista; 1 = pagamento a prazo. Ausente mantém a tag omitida, exceto na venda a prazo com cobranca, em que o serviço assume 1.

      **Condição do leiaute:** Opcional. Na NF-e com cobranca contendo fatura ou duplicatas, ausente = 1 (a prazo), preenchido pelo serviço; fora desse cenário, ausente mantém a tag omitida. Valor explícito do integrador sempre vence o default.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/pag/detPag/indPag (minOccurs="0")*

      | Valor | Significado       |
      | ----- | ----------------- |
      | `0`   | Pagamento à vista |
      | `1`   | Pagamento a prazo |
    </ParamField>

    <ParamField path="pagamentos[].cartao" type="object">
      **Tag do leiaute:** `card` (grupo `pag: Informações de Pagamento`) · **Obrigatoriedade do leiaute:** condicional no leiaute

      Grupo cartao do leiaute (tag card): dados do meio de pagamento eletrônico. Obrigatório para forma "03" (crédito), "04" (débito) e "17" (PIX), com ao menos tpIntegra; os demais campos são opcionais e validados quando informados. Aceito também para "10"/"11"/"12"/"13"/"15"/"18".

      **Condição do leiaute:** Obrigatório quando a forma é 03 (crédito), 04 (débito) ou 17 (PIX): NT 2023.004 v1.11 RV YA04-10, rejeição 391. Dentro do grupo só tpIntegra é minOccurs=1 no XSD; os demais campos são opcionais. Aceito também para 10, 11, 12, 13, 15 e 18 (RV YA04-20). Fora dessas formas o builder ignora o grupo.

      **Nota do leiaute:** Grupo, não campo: card é o contêiner dos dados do meio de pagamento eletrônico.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/pag/detPag/card (minOccurs="0")*

      <Expandable title="6 campo(s)">
        <ParamField path="pagamentos[].cartao.tpIntegra" type="number" required>
          **Tamanho:** 1 · **Tag do leiaute:** `tpIntegra` (grupo `pag: Informações de Pagamento`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

          Tipo de integração do pagamento (tag tpIntegra do leiaute): 1 = integrado (TEF, e-commerce, POS integrado); 2 = não integrado (POS simples). Único campo obrigatório do grupo cartao.

          **Condição do leiaute:** Obrigatório sempre que o grupo card existe. 1 = integrado; 2 = não integrado.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/pag/detPag/card/tpIntegra*

          | Valor | Significado                                                                     |
          | ----- | ------------------------------------------------------------------------------- |
          | `1`   | Pagamento integrado com o sistema de automação (TEF, e-commerce, POS integrado) |
          | `2`   | Pagamento não integrado (POS simples)                                           |
        </ParamField>

        <ParamField path="pagamentos[].cartao.cnpjInstituicao" type="string">
          **Tamanho:** 14 · **Tag do leiaute:** `CNPJ` (grupo `pag: Informações de Pagamento`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

          CNPJ da instituição de pagamento (tag CNPJ do leiaute, 14 dígitos). Opcional; obrigatório na recusa de negócio quando tpIntegra=1. (padrão: `^\d{14}$`)

          **Condição do leiaute:** CNPJ da instituição de pagamento (adquirente ou subadquirente). Opcional no contrato e no XSD (minOccurs=0). Recusa de negócio quando tpIntegra=1 sem este campo (grupo inconsistente).

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/pag/detPag/card/CNPJ (TCnpj, minOccurs="0")*
        </ParamField>

        <ParamField path="pagamentos[].cartao.bandeira" type="string">
          **Tamanho:** 2 · **Tag do leiaute:** `tBand` (grupo `pag: Informações de Pagamento`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

          Bandeira da operadora de cartão (tag tBand). Gate: 2 dígitos \[0-9]\{2} (XSD v4.00). Tabela YA06 do Portal Nacional (aviso, não recusa 400): 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 99. PIX sem operadora: "99". (padrão: `^[0-9]{2}$`)

          **Condição do leiaute:** Código da Tabela de Operadoras do Portal Nacional (YA06). Gate do contrato = XSD v4.00 pattern \[0-9]\{2}; a tabela 01–27+99 é aviso/documentação, nunca 400 para código fora da lista (a tabela muda sem mudar leiaute). Opcional (minOccurs=0).

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/pag/detPag/card/tBand (pattern \[0-9]\{2}, minOccurs="0")*
        </ParamField>

        <ParamField path="pagamentos[].cartao.autorizacao" type="string">
          **Tamanho:** 1-128 · **Tag do leiaute:** `cAut` (grupo `pag: Informações de Pagamento`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

          Número de autorização da operação com cartão/PIX (tag cAut do leiaute, 1 a 128 caracteres). Opcional.

          **Condição do leiaute:** Número de autorização da operação com cartão, PIX, boleto ou outro pagamento eletrônico. Opcional no contrato e no XSD (minOccurs=0). PIX estático (chave copia-e-cola) não tem cAut.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/pag/detPag/card/cAut (minOccurs="0")*
        </ParamField>

        <ParamField path="pagamentos[].cartao.cnpjRecebedor" type="string">
          **Tamanho:** 14 · **Tag do leiaute:** `CNPJReceb` (grupo `pag: Informações de Pagamento`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

          CNPJ do beneficiário do pagamento (tag CNPJReceb do leiaute, opcional, 14 dígitos) (padrão: `^\d{14}$`)

          **Condição do leiaute:** CNPJ do estabelecimento beneficiário do pagamento. Opcional.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/pag/detPag/card/CNPJReceb (TCnpj, minOccurs="0")*
        </ParamField>

        <ParamField path="pagamentos[].cartao.idTerminal" type="string">
          **Tamanho:** 1-40 · **Tag do leiaute:** `idTermPag` (grupo `pag: Informações de Pagamento`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

          Identificador do terminal de pagamento (tag idTermPag do leiaute, opcional, 1 a 40 caracteres)

          **Condição do leiaute:** Identificador do terminal em que o pagamento foi realizado. Opcional.

          *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/pag/detPag/card/idTermPag (minOccurs="0")*
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="pagamentos[].valor" type="number" required>
      **Tamanho:** 13v2 · **Tag do leiaute:** `vPag` (grupo `pag: Informações de Pagamento`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      Valor pago nesta forma, em R\$ (máximo 2 casas decimais)

      **Condição do leiaute:** Cada entrada vira uma tag vPag própria, com 2 casas decimais. O leiaute permite omitir só quando a forma é 90 (sem pagamento).

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/pag/detPag/vPag (TDec\_1302)*
    </ParamField>
  </Expandable>
</ParamField>

<ParamField path="troco" type="number">
  **Tamanho:** 13v2 · **Tag do leiaute:** `vTroco` (grupo `pag: Informações de Pagamento`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

  Valor do troco em R\$, para venda com pagamento em dinheiro (máximo 2 casas decimais)

  **Condição do leiaute:** Só é escrito quando maior que zero. No documento a tag é irmã de detPag (pertence ao grupo de pagamento inteiro, não a uma forma). O pré-voo confere soma dos pagamentos menos troco contra o total.

  *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/pag/vTroco (TDec\_1302)*
</ParamField>

***

<h2 id="grupo-informacoes-adicionais">
  Informações adicionais
</h2>

<ParamField path="informacoesComplementares" type="string">
  **Tamanho:** 1-5000 · **Tag do leiaute:** `infCpl` (grupo `infAdic: Informações Adicionais`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

  Informações complementares de interesse do contribuinte, impressas no DANFE

  **Condição do leiaute:** Texto livre de interesse do contribuinte, IMPRESSO no documento auxiliar. Ausente, a engineAPI escreve o texto padrão "Nota Fiscal emitida via NFe Engine", que sai impresso na nota; informe o campo para substituí-lo. Observação ESTRUTURADA (blocos nomeados obsCont) ainda não é suportada.

  *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/infAdic/infCpl*
</ParamField>

<ParamField path="informacoesFisco" type="string">
  **Tamanho:** 1-2000 · **Tag do leiaute:** `infAdFisco` (grupo `infAdic: Informações Adicionais`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

  Informações adicionais de interesse do fisco

  **Condição do leiaute:** Texto livre de interesse do fisco. Observação ESTRUTURADA (blocos nomeados obsFisco) ainda não é suportada.

  *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/infAdic/infAdFisco*
</ParamField>

<ParamField path="procRef" type="object[]">
  **Tag do leiaute:** `procRef` (grupo `infAdic: Informações Adicionais`) · **Obrigatoriedade do leiaute:** opcional no leiaute

  Processos ou atos concessórios referenciados (grupo procRef das informações adicionais do leiaute, máximo 100). É onde se declara o regime especial, o termo de acordo ou o convênio que ampara o benefício fiscal informado nos itens

  **Condição do leiaute:** Processos ou atos concessórios referenciados, até 100 no leiaute. É onde se declara o regime especial, o termo de acordo ou o convênio que ampara o benefício fiscal informado nos itens. Uma entrada do array vira um grupo procRef do documento.

  *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/infAdic/procRef (minOccurs="0" maxOccurs="100")*

  <Expandable title="cada item tem 3 campo(s)">
    <ParamField path="procRef[].nProc" type="string" required>
      **Tamanho:** 1-60 · **Tag do leiaute:** `nProc` (grupo `infAdic: Informações Adicionais`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

      Identificador do processo ou ato concessório

      **Condição do leiaute:** Obrigatório dentro do grupo: identificador do processo ou do ato concessório.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/infAdic/procRef/nProc*
    </ParamField>

    <ParamField path="procRef[].indProc" type="string" required>
      **Tamanho:** 1 · **Tag do leiaute:** `indProc` (grupo `infAdic: Informações Adicionais`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

      Origem do processo: "0"=SEFAZ, "1"=Justiça Federal, "2"=Justiça Estadual, "3"=Secex/RFB, "4"=CONFAZ, "9"=outros

      **Condição do leiaute:** Obrigatório dentro do grupo: origem do processo.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/infAdic/procRef/indProc*

      | Valor | Significado              |
      | ----- | ------------------------ |
      | `0`   | SEFAZ                    |
      | `1`   | Justiça Federal          |
      | `2`   | Justiça Estadual         |
      | `3`   | Secex ou Receita Federal |
      | `4`   | CONFAZ                   |
      | `9`   | Outros                   |
    </ParamField>

    <ParamField path="procRef[].tpAto" type="string">
      **Tamanho:** 2 · **Tag do leiaute:** `tpAto` (grupo `infAdic: Informações Adicionais`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

      Tipo do ato concessório: "08"=termo de acordo, "10"=regime especial, "12"=autorização específica, "14"=ajuste SINIEF, "15"=convênio ICMS. O leiaute o prevê para processo de origem na SEFAZ (indProc "0"); com outra origem a emissão recusa com 422 ICMS\_BENEFICIO\_INVALIDO

      **Condição do leiaute:** O leiaute prevê o tipo do ato concessório para processo de origem na SEFAZ (indProc "0"). Com outra origem o campo seria descartado, e a emissão recusa antes de consumir número fiscal.

      *Fonte do leiaute: leiauteNFe\_v4.00.xsd (PL\_009p\_NT2024\_003\_v103): TNFe/infNFe/infAdic/procRef/tpAto (minOccurs="0")*

      | Valor | Significado            |
      | ----- | ---------------------- |
      | `10`  | Regime especial        |
      | `12`  | Autorização específica |
      | `14`  | Ajuste SINIEF          |
      | `15`  | Convênio ICMS          |
      | `08`  | Termo de acordo        |
    </ParamField>
  </Expandable>
</ParamField>

***

<h2 id="grupo-cerebro-fiscal">
  Tributação assistida (Cérebro Fiscal)
</h2>

Fora da taxonomia clássica do leiaute: `resolverTributacao` ativa a emissão assistida (com `resolverTributacao: true`, a engineAPI resolve o CSOSN e o grupo IBS/CBS de itens sem tributação manual; ver [guia do Cérebro Fiscal](/guides/cerebro-fiscal)). O grupo IBS/CBS por item (`items[].ibsCbs`) já aparece em contexto, dentro de **Itens**, acima.

<ParamField path="resolverTributacao" type="boolean">
  **Tag do leiaute:** sem tag própria no XML (grupo `engineAPI: plataforma`) · **Obrigatoriedade do leiaute:** não é campo do leiaute (informativo/de compatibilidade) · **Preenche:** você, na requisição

  Ativa a emissão assistida (Cérebro Fiscal): resolve CSOSN e o grupo IBS/CBS de itens sem tributação manual. Requer plano com fiscalBrain + Issuer.fiscalBrainEnabled

  **Nota do leiaute:** Chave de comportamento, não campo fiscal: liga a emissão assistida, em que a engineAPI resolve CSOSN e o grupo IBS/CBS dos itens sem tributação manual. Não vira tag nenhuma no documento.

  *Fonte do leiaute: contrato da engineAPI (Cérebro Fiscal)*
</ParamField>

***

<h2 id="indice-reverso">
  Índice reverso: tag do leiaute → nosso campo
</h2>

Procure pelo nome que o leiaute usa (ex.: `natOp`, `vFrete`) e encontre o campo correspondente no contrato da engineAPI.

| Tag do leiaute    | Nosso campo                                                                                     |
| ----------------- | ----------------------------------------------------------------------------------------------- |
| `adRemICMS`       | [`items[].icms.adRemICMS`](#param-items-icms-ad-rem-icms)                                       |
| `adRemICMSRet`    | [`items[].icms.adRemICMSRet`](#param-items-icms-ad-rem-icms-ret)                                |
| `card`            | [`pagamentos[].cartao`](#param-pagamentos-cartao)                                               |
| `cAut`            | [`pagamentos[].cartao.autorizacao`](#param-pagamentos-cartao-autorizacao)                       |
| `cBenef`          | [`items[].cBenef`](#param-items-c-benef)                                                        |
| `cBenefRBC`       | [`items[].icms.cBenefRBC`](#param-items-icms-c-benef-rbc)                                       |
| `cClassTrib`      | [`items[].ibsCbs.cClassTrib`](#param-items-ibs-cbs-c-class-trib)                                |
| `cCredPresumido`  | [`items[].gCred[].cCredPresumido`](#param-items-g-cred-c-cred-presumido)                        |
| `cEAN`            | [`items[].ean`](#param-items-ean)                                                               |
| `cEnq`            | [`items[].ipi.cEnq`](#param-items-ipi-c-enq)                                                    |
| `CEP`             | [`destinatario.endereco.cep`](#param-destinatario-endereco-cep)                                 |
| `CEST`            | [`items[].cest`](#param-items-cest)                                                             |
| `CFOP`            | [`items[].cfop`](#param-items-cfop)                                                             |
| `chaveAcesso`     | [`items[].documentoReferenciado.chaveAcesso`](#param-items-documento-referenciado-chave-acesso) |
| `cMun`            | [`destinatario.endereco.codigoMunicipio`](#param-destinatario-endereco-codigo-municipio)        |
| `CNPJ`            | [`destinatario.cnpjCpf`](#param-destinatario-cnpj-cpf)                                          |
| `CNPJ`            | [`transporte.transportadora.cnpjCpf`](#param-transporte-transportadora-cnpj-cpf)                |
| `CNPJ`            | [`pagamentos[].cartao.cnpjInstituicao`](#param-pagamentos-cartao-cnpj-instituicao)              |
| `CNPJReceb`       | [`pagamentos[].cartao.cnpjRecebedor`](#param-pagamentos-cartao-cnpj-recebedor)                  |
| `cobr`            | [`cobranca`](#param-cobranca)                                                                   |
| `cobr`            | [`cobranca`](#param-cobranca)                                                                   |
| `COFINS`          | [`items[].cofins`](#param-items-cofins)                                                         |
| `comb`            | [`items[].combustivel`](#param-items-combustivel)                                               |
| `comb`            | [`items[].combustivel`](#param-items-combustivel)                                               |
| `cProd`           | [`items[].codigo`](#param-items-codigo)                                                         |
| `cProdANP`        | [`items[].combustivel.cProdANP`](#param-items-combustivel-c-prod-anp)                           |
| `cProdANP`        | [`items[].combustivel.cProdANP`](#param-items-combustivel-c-prod-anp)                           |
| `CSOSN`           | [`items[].icms.csosn`](#param-items-icms-csosn)                                                 |
| `CST`             | [`items[].icms.cst`](#param-items-icms-cst)                                                     |
| `CST`             | [`items[].pis.cst`](#param-items-pis-cst)                                                       |
| `CST`             | [`items[].cofins.cst`](#param-items-cofins-cst)                                                 |
| `CST`             | [`items[].ipi.cst`](#param-items-ipi-cst)                                                       |
| `CST`             | [`items[].ibsCbs.cst`](#param-items-ibs-cbs-cst)                                                |
| `descANP`         | [`items[].combustivel.descANP`](#param-items-combustivel-desc-anp)                              |
| `descANP`         | [`items[].combustivel.descANP`](#param-items-combustivel-desc-anp)                              |
| `dest`            | [`destinatario`](#param-destinatario)                                                           |
| `det`             | [`items`](#param-items)                                                                         |
| `DFeReferenciado` | [`items[].documentoReferenciado`](#param-items-documento-referenciado)                          |
| `dup`             | [`cobranca.duplicatas`](#param-cobranca-duplicatas)                                             |
| `dup`             | [`cobranca.duplicatas`](#param-cobranca-duplicatas)                                             |
| `dVenc`           | [`cobranca.duplicatas[].vencimento`](#param-cobranca-duplicatas-vencimento)                     |
| `dVenc`           | [`cobranca.duplicatas[].vencimento`](#param-cobranca-duplicatas-vencimento)                     |
| `email`           | [`destinatario.email`](#param-destinatario-email)                                               |
| `enderDest`       | [`destinatario.endereco`](#param-destinatario-endereco)                                         |
| `esp`             | [`transporte.volumes[].especie`](#param-transporte-volumes-especie)                             |
| `fat`             | [`cobranca.fatura`](#param-cobranca-fatura)                                                     |
| `fat`             | [`cobranca.fatura`](#param-cobranca-fatura)                                                     |
| `finNFe`          | [`finNFe`](#param-fin-n-fe)                                                                     |
| `gCBS`            | [`items[].ibsCbs.cbs`](#param-items-ibs-cbs-cbs)                                                |
| `gCred`           | [`items[].gCred`](#param-items-g-cred)                                                          |
| `gIBSMun`         | [`items[].ibsCbs.ibsMun`](#param-items-ibs-cbs-ibs-mun)                                         |
| `gIBSUF`          | [`items[].ibsCbs.ibsUf`](#param-items-ibs-cbs-ibs-uf)                                           |
| `IBSCBS`          | [`items[].ibsCbs`](#param-items-ibs-cbs)                                                        |
| `ICMS`            | [`items[].icms`](#param-items-icms)                                                             |
| `ICMSUFDest`      | [`items[].icms.ufDestino`](#param-items-icms-uf-destino)                                        |
| `idDest`          | [`idDest`](#param-id-dest)                                                                      |
| `idTermPag`       | [`pagamentos[].cartao.idTerminal`](#param-pagamentos-cartao-id-terminal)                        |
| `IE`              | [`destinatario.ie`](#param-destinatario-ie)                                                     |
| `IE`              | [`transporte.transportadora.ie`](#param-transporte-transportadora-ie)                           |
| `indDeduzDeson`   | [`items[].icms.indDeduzDeson`](#param-items-icms-ind-deduz-deson)                               |
| `indFinal`        | [`indFinal`](#param-ind-final)                                                                  |
| `indIEDest`       | [`destinatario.indicadorIE`](#param-destinatario-indicador-ie)                                  |
| `indPag`          | [`pagamentos[].indicador`](#param-pagamentos-indicador)                                         |
| `indPres`         | [`indPres`](#param-ind-pres)                                                                    |
| `indProc`         | [`procRef[].indProc`](#param-proc-ref-ind-proc)                                                 |
| `indTot`          | [`items[].indTot`](#param-items-ind-tot)                                                        |
| `infAdFisco`      | [`informacoesFisco`](#param-informacoes-fisco)                                                  |
| `infCpl`          | [`informacoesComplementares`](#param-informacoes-complementares)                                |
| `IPI`             | [`items[].ipi`](#param-items-ipi)                                                               |
| `modBC`           | [`items[].icms.modBC`](#param-items-icms-mod-bc)                                                |
| `modBCST`         | [`items[].icms.modBCST`](#param-items-icms-mod-bcst)                                            |
| `modFrete`        | [`transporte.modFrete`](#param-transporte-mod-frete)                                            |
| `motDesICMS`      | [`items[].icms.motDesICMS`](#param-items-icms-mot-des-icms)                                     |
| `natOp`           | [`naturezaOperacao`](#param-natureza-operacao)                                                  |
| `NCM`             | [`items[].ncm`](#param-items-ncm)                                                               |
| `nDup`            | [`cobranca.duplicatas[].numero`](#param-cobranca-duplicatas-numero)                             |
| `nDup`            | [`cobranca.duplicatas[].numero`](#param-cobranca-duplicatas-numero)                             |
| `nFat`            | [`cobranca.fatura.numero`](#param-cobranca-fatura-numero)                                       |
| `NFref`           | [`referenciadas`](#param-referenciadas)                                                         |
| `nItem`           | [`items[].documentoReferenciado.nItem`](#param-items-documento-referenciado-n-item)             |
| `nNF`             | [`numero`](#param-numero)                                                                       |
| `nProc`           | [`procRef[].nProc`](#param-proc-ref-n-proc)                                                     |
| `nro`             | [`destinatario.endereco.numero`](#param-destinatario-endereco-numero)                           |
| `orig`            | [`items[].icms.origem`](#param-items-icms-origem)                                               |
| `pag`             | [`pagamentos`](#param-pagamentos)                                                               |
| `pAliqEfet`       | [`items[].ibsCbs.ibsUf.p`](#param-items-ibs-cbs-ibs-uf-p)                                       |
| `pAliqEfet`       | [`items[].ibsCbs.ibsMun.p`](#param-items-ibs-cbs-ibs-mun-p)                                     |
| `pAliqEfet`       | [`items[].ibsCbs.cbs.p`](#param-items-ibs-cbs-cbs-p)                                            |
| `pCBS`            | [`items[].ibsCbs.cbs.pNominal`](#param-items-ibs-cbs-cbs-p-nominal)                             |
| `pCOFINS`         | [`items[].cofins.aliquota`](#param-items-cofins-aliquota)                                       |
| `pCredPresumido`  | [`items[].gCred[].pCredPresumido`](#param-items-g-cred-p-cred-presumido)                        |
| `pCredSN`         | [`items[].icms.pCredSN`](#param-items-icms-p-cred-sn)                                           |
| `pDif`            | [`items[].icms.pDif`](#param-items-icms-p-dif)                                                  |
| `pesoB`           | [`transporte.volumes[].pesoBruto`](#param-transporte-volumes-peso-bruto)                        |
| `pesoL`           | [`transporte.volumes[].pesoLiquido`](#param-transporte-volumes-peso-liquido)                    |
| `pFCP`            | [`items[].icms.pFCP`](#param-items-icms-p-fcp)                                                  |
| `pFCPDif`         | [`items[].icms.pFCPDif`](#param-items-icms-p-fcp-dif)                                           |
| `pFCPST`          | [`items[].icms.pFCPST`](#param-items-icms-p-fcpst)                                              |
| `pFCPSTRet`       | [`items[].icms.pFCPSTRet`](#param-items-icms-p-fcpst-ret)                                       |
| `pFCPUFDest`      | [`items[].icms.ufDestino.pFCPUFDest`](#param-items-icms-uf-destino-p-fcpuf-dest)                |
| `pGLP`            | [`items[].combustivel.pGLP`](#param-items-combustivel-p-glp)                                    |
| `pGLP`            | [`items[].combustivel.pGLP`](#param-items-combustivel-p-glp)                                    |
| `pGNi`            | [`items[].combustivel.pGNi`](#param-items-combustivel-p-g-ni)                                   |
| `pGNn`            | [`items[].combustivel.pGNn`](#param-items-combustivel-p-g-nn)                                   |
| `pIBSMun`         | [`items[].ibsCbs.ibsMun.pNominal`](#param-items-ibs-cbs-ibs-mun-p-nominal)                      |
| `pIBSUF`          | [`items[].ibsCbs.ibsUf.pNominal`](#param-items-ibs-cbs-ibs-uf-p-nominal)                        |
| `pICMS`           | [`items[].icms.aliquota`](#param-items-icms-aliquota)                                           |
| `pICMS`           | [`items[].icms.pICMS`](#param-items-icms-p-icms)                                                |
| `pICMSEfet`       | [`items[].icms.pICMSEfet`](#param-items-icms-p-icms-efet)                                       |
| `pICMSInter`      | [`items[].icms.ufDestino.pICMSInter`](#param-items-icms-uf-destino-p-icms-inter)                |
| `pICMSInterPart`  | [`items[].icms.ufDestino.pICMSInterPart`](#param-items-icms-uf-destino-p-icms-inter-part)       |
| `pICMSST`         | [`items[].icms.aliquotaST`](#param-items-icms-aliquota-st)                                      |
| `pICMSST`         | [`items[].icms.pICMSST`](#param-items-icms-p-icmsst)                                            |
| `pICMSUFDest`     | [`items[].icms.ufDestino.pICMSUFDest`](#param-items-icms-uf-destino-p-icmsuf-dest)              |
| `pIPI`            | [`items[].ipi.aliquota`](#param-items-ipi-aliquota)                                             |
| `PIS`             | [`items[].pis`](#param-items-pis)                                                               |
| `pMVAST`          | [`items[].icms.pMVAST`](#param-items-icms-p-mvast)                                              |
| `pPIS`            | [`items[].pis.aliquota`](#param-items-pis-aliquota)                                             |
| `pRedAliq`        | [`items[].ibsCbs.ibsUf.pRedAliq`](#param-items-ibs-cbs-ibs-uf-p-red-aliq)                       |
| `pRedAliq`        | [`items[].ibsCbs.ibsMun.pRedAliq`](#param-items-ibs-cbs-ibs-mun-p-red-aliq)                     |
| `pRedAliq`        | [`items[].ibsCbs.cbs.pRedAliq`](#param-items-ibs-cbs-cbs-p-red-aliq)                            |
| `pRedBC`          | [`items[].icms.pRedBC`](#param-items-icms-p-red-bc)                                             |
| `pRedBCEfet`      | [`items[].icms.pRedBCEfet`](#param-items-icms-p-red-bc-efet)                                    |
| `pRedBCST`        | [`items[].icms.pRedBCST`](#param-items-icms-p-red-bcst)                                         |
| `procRef`         | [`procRef`](#param-proc-ref)                                                                    |
| `pST`             | [`items[].icms.pST`](#param-items-icms-p-st)                                                    |
| `qBCMono`         | [`items[].icms.qBCMono`](#param-items-icms-q-bc-mono)                                           |
| `qBCMonoRet`      | [`items[].icms.qBCMonoRet`](#param-items-icms-q-bc-mono-ret)                                    |
| `qCom`            | [`items[].quantidade`](#param-items-quantidade)                                                 |
| `qTrib`           | [`items[].quantidadeTributavel`](#param-items-quantidade-tributavel)                            |
| `qVol`            | [`transporte.volumes[].quantidade`](#param-transporte-volumes-quantidade)                       |
| `refNFe`          | [`referenciadas[].chaveAcesso`](#param-referenciadas-chave-acesso)                              |
| `serie`           | [`serie`](#param-serie)                                                                         |
| `tBand`           | [`pagamentos[].cartao.bandeira`](#param-pagamentos-cartao-bandeira)                             |
| `tPag`            | [`pagamentos[].forma`](#param-pagamentos-forma)                                                 |
| `tpAto`           | [`procRef[].tpAto`](#param-proc-ref-tp-ato)                                                     |
| `tpIntegra`       | [`pagamentos[].cartao.tpIntegra`](#param-pagamentos-cartao-tp-integra)                          |
| `tpNF`            | [`tpNF`](#param-tp-nf)                                                                          |
| `transp`          | [`transporte`](#param-transporte)                                                               |
| `transporta`      | [`transporte.transportadora`](#param-transporte-transportadora)                                 |
| `uCom`            | [`items[].unidade`](#param-items-unidade)                                                       |
| `UF`              | [`destinatario.endereco.uf`](#param-destinatario-endereco-uf)                                   |
| `UF`              | [`transporte.transportadora.uf`](#param-transporte-transportadora-uf)                           |
| `UFCons`          | [`items[].combustivel.ufConsumo`](#param-items-combustivel-uf-consumo)                          |
| `uTrib`           | [`items[].unidadeTributavel`](#param-items-unidade-tributavel)                                  |
| `vBC`             | [`items[].icms.baseCalculo`](#param-items-icms-base-calculo)                                    |
| `vBC`             | [`items[].icms.vBC`](#param-items-icms-v-bc)                                                    |
| `vBC`             | [`items[].pis.baseCalculo`](#param-items-pis-base-calculo)                                      |
| `vBC`             | [`items[].cofins.baseCalculo`](#param-items-cofins-base-calculo)                                |
| `vBC`             | [`items[].ipi.baseCalculo`](#param-items-ipi-base-calculo)                                      |
| `vBC`             | [`items[].ibsCbs.vBC`](#param-items-ibs-cbs-v-bc)                                               |
| `vBCEfet`         | [`items[].icms.vBCEfet`](#param-items-icms-v-bc-efet)                                           |
| `vBCFCP`          | [`items[].icms.vBCFCP`](#param-items-icms-v-bcfcp)                                              |
| `vBCFCPST`        | [`items[].icms.vBCFCPST`](#param-items-icms-v-bcfcpst)                                          |
| `vBCFCPSTRet`     | [`items[].icms.vBCFCPSTRet`](#param-items-icms-v-bcfcpst-ret)                                   |
| `vBCFCPUFDest`    | [`items[].icms.ufDestino.vBCFCPUFDest`](#param-items-icms-uf-destino-v-bcfcpuf-dest)            |
| `vBCST`           | [`items[].icms.baseCalculoST`](#param-items-icms-base-calculo-st)                               |
| `vBCST`           | [`items[].icms.vBCST`](#param-items-icms-v-bcst)                                                |
| `vBCSTRet`        | [`items[].icms.vBCSTRet`](#param-items-icms-v-bcst-ret)                                         |
| `vBCUFDest`       | [`items[].icms.ufDestino.vBCUFDest`](#param-items-icms-uf-destino-v-bcuf-dest)                  |
| `vCBS`            | [`items[].ibsCbs.cbs.v`](#param-items-ibs-cbs-cbs-v)                                            |
| `vCOFINS`         | [`items[].cofins.valor`](#param-items-cofins-valor)                                             |
| `vCredICMSSN`     | [`items[].icms.vCredICMSSN`](#param-items-icms-v-cred-icmssn)                                   |
| `vCredPresumido`  | [`items[].gCred[].vCredPresumido`](#param-items-g-cred-v-cred-presumido)                        |
| `vDesc`           | [`items[].desconto`](#param-items-desconto)                                                     |
| `vDesc`           | [`cobranca.fatura.valorDesconto`](#param-cobranca-fatura-valor-desconto)                        |
| `vDup`            | [`cobranca.duplicatas[].valor`](#param-cobranca-duplicatas-valor)                               |
| `vDup`            | [`cobranca.duplicatas[].valor`](#param-cobranca-duplicatas-valor)                               |
| `vFCP`            | [`items[].icms.vFCP`](#param-items-icms-v-fcp)                                                  |
| `vFCPDif`         | [`items[].icms.vFCPDif`](#param-items-icms-v-fcp-dif)                                           |
| `vFCPEfet`        | [`items[].icms.vFCPEfet`](#param-items-icms-v-fcp-efet)                                         |
| `vFCPST`          | [`items[].icms.vFCPST`](#param-items-icms-v-fcpst)                                              |
| `vFCPSTRet`       | [`items[].icms.vFCPSTRet`](#param-items-icms-v-fcpst-ret)                                       |
| `vFCPUFDest`      | [`items[].icms.ufDestino.vFCPUFDest`](#param-items-icms-uf-destino-v-fcpuf-dest)                |
| `vFrete`          | [`items[].valorFrete`](#param-items-valor-frete)                                                |
| `vFrete`          | [`items[].valorFrete`](#param-items-valor-frete)                                                |
| `vIBS`            | [`items[].ibsCbs.vIbs`](#param-items-ibs-cbs-v-ibs)                                             |
| `vIBSMun`         | [`items[].ibsCbs.ibsMun.v`](#param-items-ibs-cbs-ibs-mun-v)                                     |
| `vIBSUF`          | [`items[].ibsCbs.ibsUf.v`](#param-items-ibs-cbs-ibs-uf-v)                                       |
| `vICMS`           | [`items[].icms.valor`](#param-items-icms-valor)                                                 |
| `vICMS`           | [`items[].icms.vICMS`](#param-items-icms-v-icms)                                                |
| `vICMSDeson`      | [`items[].icms.vICMSDeson`](#param-items-icms-v-icms-deson)                                     |
| `vICMSDif`        | [`items[].icms.vICMSDif`](#param-items-icms-v-icms-dif)                                         |
| `vICMSEfet`       | [`items[].icms.vICMSEfet`](#param-items-icms-v-icms-efet)                                       |
| `vICMSMono`       | [`items[].icms.vICMSMono`](#param-items-icms-v-icms-mono)                                       |
| `vICMSMonoRet`    | [`items[].icms.vICMSMonoRet`](#param-items-icms-v-icms-mono-ret)                                |
| `vICMSOp`         | [`items[].icms.vICMSOp`](#param-items-icms-v-icms-op)                                           |
| `vICMSST`         | [`items[].icms.valorST`](#param-items-icms-valor-st)                                            |
| `vICMSST`         | [`items[].icms.vICMSST`](#param-items-icms-v-icmsst)                                            |
| `vICMSSTRet`      | [`items[].icms.vICMSSTRet`](#param-items-icms-v-icmsst-ret)                                     |
| `vICMSSubstituto` | [`items[].icms.vICMSSubstituto`](#param-items-icms-v-icms-substituto)                           |
| `vICMSUFDest`     | [`items[].icms.ufDestino.vICMSUFDest`](#param-items-icms-uf-destino-v-icmsuf-dest)              |
| `vICMSUFRemet`    | [`items[].icms.ufDestino.vICMSUFRemet`](#param-items-icms-uf-destino-v-icmsuf-remet)            |
| `vIPI`            | [`items[].ipi.valor`](#param-items-ipi-valor)                                                   |
| `vLiq`            | [`cobranca.fatura.valorLiquido`](#param-cobranca-fatura-valor-liquido)                          |
| `vol`             | [`transporte.volumes`](#param-transporte-volumes)                                               |
| `vOrig`           | [`cobranca.fatura.valorOriginal`](#param-cobranca-fatura-valor-original)                        |
| `vOutro`          | [`items[].outrasDespesas`](#param-items-outras-despesas)                                        |
| `vOutro`          | [`items[].outrasDespesas`](#param-items-outras-despesas)                                        |
| `vPag`            | [`pagamentos[].valor`](#param-pagamentos-valor)                                                 |
| `vPart`           | [`items[].combustivel.vPart`](#param-items-combustivel-v-part)                                  |
| `vPIS`            | [`items[].pis.valor`](#param-items-pis-valor)                                                   |
| `vProd`           | [`items[].valorTotal`](#param-items-valor-total)                                                |
| `vSeg`            | [`items[].valorSeguro`](#param-items-valor-seguro)                                              |
| `vSeg`            | [`items[].valorSeguro`](#param-items-valor-seguro)                                              |
| `vTroco`          | [`troco`](#param-troco)                                                                         |
| `vUnCom`          | [`items[].valorUnitario`](#param-items-valor-unitario)                                          |
| `vUnTrib`         | [`items[].valorUnitarioTributavel`](#param-items-valor-unitario-tributavel)                     |
| `xBairro`         | [`destinatario.endereco.bairro`](#param-destinatario-endereco-bairro)                           |
| `xCpl`            | [`destinatario.endereco.complemento`](#param-destinatario-endereco-complemento)                 |
| `xEnder`          | [`transporte.transportadora.endereco`](#param-transporte-transportadora-endereco)               |
| `xLgr`            | [`destinatario.endereco.logradouro`](#param-destinatario-endereco-logradouro)                   |
| `xMun`            | [`destinatario.endereco.municipio`](#param-destinatario-endereco-municipio)                     |
| `xMun`            | [`transporte.transportadora.municipio`](#param-transporte-transportadora-municipio)             |
| `xNome`           | [`destinatario.nome`](#param-destinatario-nome)                                                 |
| `xNome`           | [`transporte.transportadora.nome`](#param-transporte-transportadora-nome)                       |
| `xProd`           | [`items[].descricao`](#param-items-descricao)                                                   |

***

<h2 id="estado-dos-campos">
  Estado dos campos do leiaute
</h2>

Todo campo listado acima é **suportado**: está no contrato e a engineAPI o usa. Esta seção cobre o resto do leiaute: o que a API aceita com outro nome, o que ela recusa hoje e as ressalvas de campos que estão no contrato mas o leiaute trata de um jeito específico.

### Preenchidos automaticamente ou derivados

| Campo                                                               | Como                                      |
| ------------------------------------------------------------------- | ----------------------------------------- |
| [`serie`](#param-serie)                                             | preenchido automaticamente pela engineAPI |
| [`numero`](#param-numero)                                           | preenchido automaticamente pela engineAPI |
| [`idDest`](#param-id-dest)                                          | derivado de outros campos (calculado)     |
| [`items[].valorTotal`](#param-items-valor-total)                    | derivado de outros campos (calculado)     |
| [`items[].ibsCbs.vBC`](#param-items-ibs-cbs-v-bc)                   | derivado de outros campos (calculado)     |
| [`items[].ibsCbs.ibsUf.v`](#param-items-ibs-cbs-ibs-uf-v)           | derivado de outros campos (calculado)     |
| [`items[].ibsCbs.ibsMun.v`](#param-items-ibs-cbs-ibs-mun-v)         | derivado de outros campos (calculado)     |
| [`items[].ibsCbs.vIbs`](#param-items-ibs-cbs-v-ibs)                 | derivado de outros campos (calculado)     |
| [`items[].ibsCbs.cbs.v`](#param-items-ibs-cbs-cbs-v)                | derivado de outros campos (calculado)     |
| [`cobranca.duplicatas[].numero`](#param-cobranca-duplicatas-numero) | preenchido automaticamente pela engineAPI |

### Aceitos, mas com outro nome

| Termo do leiaute | Nosso campo                                                                 |
| ---------------- | --------------------------------------------------------------------------- |
| `comb`           | [`items[].combustivel`](#param-items-combustivel)                           |
| `cProdANP`       | [`items[].combustivel.cProdANP`](#param-items-combustivel-c-prod-anp)       |
| `descANP`        | [`items[].combustivel.descANP`](#param-items-combustivel-desc-anp)          |
| `pGLP`           | [`items[].combustivel.pGLP`](#param-items-combustivel-p-glp)                |
| `vFrete`         | [`items[].valorFrete`](#param-items-valor-frete)                            |
| `vSeg`           | [`items[].valorSeguro`](#param-items-valor-seguro)                          |
| `vOutro`         | [`items[].outrasDespesas`](#param-items-outras-despesas)                    |
| `cobr`           | [`cobranca`](#param-cobranca)                                               |
| `fat`            | [`cobranca.fatura`](#param-cobranca-fatura)                                 |
| `dup`            | [`cobranca.duplicatas`](#param-cobranca-duplicatas)                         |
| `nDup`           | [`cobranca.duplicatas[].numero`](#param-cobranca-duplicatas-numero)         |
| `dVenc`          | [`cobranca.duplicatas[].vencimento`](#param-cobranca-duplicatas-vencimento) |
| `vDup`           | [`cobranca.duplicatas[].valor`](#param-cobranca-duplicatas-valor)           |

### Aceitos no contrato, com ressalva do leiaute

* [`referenciadas`](#param-referenciadas): Grupo, não campo: NFref é o contêiner de um documento referenciado.
* [`issuerId`](#param-issuer-id): Campo de plataforma: identifica qual emissor cadastrado assina o documento. Não existe no leiaute fiscal, onde o emitente é identificado pelo CNPJ no grupo emit.
* [`destinatario.endereco`](#param-destinatario-endereco): Grupo, não campo: enderDest é o contêiner do endereço.
* [`destinatario`](#param-destinatario): Grupo, não campo: dest é o contêiner dos dados de identificação do destinatário.
* [`items[].icms.ufDestino`](#param-items-icms-uf-destino): Grupo, não campo: `ICMSUFDest` é o contêiner da partilha e não carrega valor próprio. As tags estão nos campos de dentro.
* [`items[].icms`](#param-items-icms): Grupo, não campo: o leiaute escolhe o subgrupo (ICMS00, ICMS61, ICMSSN102...) pelo CST/CSOSN informado, e é o subgrupo que carrega as tags.
* [`items[].pis`](#param-items-pis): Grupo, não campo: o leiaute escolhe o subgrupo pelo CST informado, e é o subgrupo que carrega as tags.
* [`items[].cofins`](#param-items-cofins): Grupo, não campo: o leiaute escolhe o subgrupo pelo CST informado, e é o subgrupo que carrega as tags.
* [`items[].ipi`](#param-items-ipi): Grupo, não campo: o leiaute escolhe entre IPITrib e IPINT pelo CST, e é o subgrupo que carrega as tags de valor.
* [`items[].ibsCbs.ibsUf`](#param-items-ibs-cbs-ibs-uf): Grupo, não campo: o subgrupo é o contêiner da alíquota e do valor do componente.
* [`items[].ibsCbs.ibsMun`](#param-items-ibs-cbs-ibs-mun): Grupo, não campo: o subgrupo é o contêiner da alíquota e do valor do componente.
* [`items[].ibsCbs.cbs`](#param-items-ibs-cbs-cbs): Grupo, não campo: o subgrupo é o contêiner da alíquota e do valor do componente.
* [`items[].ibsCbs`](#param-items-ibs-cbs): Grupo, não campo: IBSCBS é o contêiner do CST, do cClassTrib e dos subgrupos de alíquota.
* [`items[].combustivel`](#param-items-combustivel): Grupo, não campo: comb é o contêiner do detalhamento específico de combustíveis.
* [`items`](#param-items): Grupo, não campo: `det` é o contêiner do item e não carrega valor próprio (só o atributo nItem, gerado pela ordem do array).
* [`transporte.transportadora`](#param-transporte-transportadora): Grupo, não campo: transporta é o contêiner dos dados do transportador.
* [`transporte.volumes`](#param-transporte-volumes): Grupo, não campo: vol é o contêiner de um volume transportado.
* [`transporte`](#param-transporte): Grupo, não campo: transp é o contêiner da modalidade do frete, do transportador e dos volumes.
* [`cobranca.fatura`](#param-cobranca-fatura): Grupo, não campo: fat é o contêiner dos dados da fatura.
* [`cobranca.duplicatas`](#param-cobranca-duplicatas): Grupo, não campo: dup é o contêiner de uma parcela.
* [`cobranca`](#param-cobranca): Grupo, não campo: cobr é o contêiner da fatura e das duplicatas.
* [`pagamentos[].cartao`](#param-pagamentos-cartao): Grupo, não campo: card é o contêiner dos dados do meio de pagamento eletrônico.
* [`pagamentos`](#param-pagamentos): Grupo, não campo: pag é o contêiner das formas de pagamento e do troco.
* [`resolverTributacao`](#param-resolver-tributacao): Chave de comportamento, não campo fiscal: liga a emissão assistida, em que a engineAPI resolve CSOSN e o grupo IBS/CBS dos itens sem tributação manual. Não vira tag nenhuma no documento.

### Não suportados hoje (fora do contrato)

| Termo(s) do leiaute                                                                                                                                                                               | Motivo                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `NFref`, `refNFe`, `notareferenciada`, `referenciada`                                                                                                                                             | O documento fiscal referenciado é suportado, mas com outro nome: o grupo é `referenciadas`, um array na raiz do corpo, com o campo `chaveAcesso` (a chave de acesso de 44 dígitos da nota original). `NFref` e `refNFe` são nomes do XML do leiaute. É esse grupo que as finalidades 2 (complementar), 3 (ajuste) e 4 (devolução) exigem.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `refNF`, `refNFP`, `refCTe`, `refECF`, `refNFeSig`                                                                                                                                                | O grupo de documento referenciado (`referenciadas`) hoje aceita apenas a chave de acesso de NF-e/NFC-e (`chaveAcesso`, a tag `refNFe` do leiaute). As demais variantes do grupo ainda não são suportadas: nota fiscal de papel modelo 1/1A ou 2 (`refNF`), nota de produtor rural (`refNFP`), CT-e (`refCTe`), cupom fiscal de ECF (`refECF`) e a chave com código numérico zerado (`refNFeSig`). Informar esses campos não geraria o grupo no documento.                                                                                                                                                                                                                                                                                                                                                                                        |
| `comb`, `encerrante`, `codif`, `ufcons`                                                                                                                                                           | Combustível e GLP são suportados, mas com outro nome: o grupo é `items[].combustivel` (campos: cProdANP, descANP, ufConsumo, pGLP, pGNn, pGNi, vPart). `comb` e os campos soltos são nomes do XML do leiaute; no corpo da requisição eles vão dentro de `combustivel`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `icms60`                                                                                                                                                                                          | Os campos do ICMS-ST retido anteriormente (vBCSTRet, pST, vICMSSubstituto, vICMSSTRet, o FCP-ST retido em vBCFCPSTRet/pFCPSTRet/vFCPSTRet e o ICMS efetivo em pRedBCEfet/vBCEfet/pICMSEfet/vICMSEfet) existem só na NF-e (modelo 55), dentro de `items[].icms`, acompanhando `icms.cst` "60", com emissor em Regime Normal (crt 3) ou no Simples com excesso de sublimite (crt 2). Na NFC-e (modelo 65) esse grupo ainda não é suportado pela engineAPI: emita uma NF-e para documentar a revenda de mercadoria com ICMS-ST já retido.                                                                                                                                                                                                                                                                                                           |
| `ICMS02`, `ICMS61`, `icms15`, `icms53`, `monofasico`, `qBCMonoReten`, `adRemICMSReten`, `vICMSMonoReten`, `pRedAdRem`, `motRedAdRem`, `vICMSMonoOp`, `vICMSMonoDif`, `qBCMonoDif`, `adRemICMSDif` | A tributação monofásica de combustíveis é suportada nos CST 02 (própria: qBCMono, adRemICMS, vICMSMono) e 61 (cobrada anteriormente, a revenda: qBCMonoRet, adRemICMSRet, vICMSMonoRet), dentro de `items[].icms` (os grupos ICMS02 e ICMS61 do XML não são objetos do corpo da requisição: os campos vão direto em `icms`, junto do `cst`). O que ainda não é suportado é o CST 15 (monofásica própria com responsabilidade por RETENÇÃO: qBCMonoReten, adRemICMSReten, vICMSMonoReten, pRedAdRem, motRedAdRem) e o CST 53 (monofásica com DIFERIMENTO: vICMSMonoOp, vICMSMonoDif, qBCMonoDif, adRemICMSDif). Informar esses campos não geraria o grupo no documento.                                                                                                                                                                           |
| `ICMSUFDest`                                                                                                                                                                                      | A partilha do ICMS interestadual para consumidor final não contribuinte (o DIFAL da EC 87/2015) é suportada na NF-e, mas com outro nome: o grupo é `items[].icms.ufDestino` (campos: vBCUFDest, vBCFCPUFDest, pFCPUFDest, pICMSUFDest, pICMSInter, pICMSInterPart, vFCPUFDest, vICMSUFDest, vICMSUFRemet). `ICMSUFDest` e os campos soltos são nomes do XML do leiaute; no corpo da requisição eles vão dentro de `ufDestino`, no `icms` do item. Na NFC-e (modelo 65) o grupo não existe: aquele documento é sempre operação interna.                                                                                                                                                                                                                                                                                                           |
| `veiculo`, `veictransp`, `placa`, `rntc`, `reboque`, `lacres`, `rettransp`, `balsa`, `vagao`                                                                                                      | Os dados detalhados de transporte (veículo, reboque, lacres, retenção do ICMS de transporte) ainda não são suportados pela engineAPI. O contrato aceita hoje, em transporte, apenas modFrete, transportadora e volumes.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `rastro`, `nlote`, `qlote`, `dfab`, `dval`                                                                                                                                                        | A rastreabilidade por item (grupo rastro: lote, data de fabricação e validade) ainda não é suportada pela engineAPI. Medicamento e alimento que exigem rastro não podem ser emitidos por enquanto.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `med`, `cProdANVISA`, `vPMC`                                                                                                                                                                      | O grupo de medicamentos (cProdANVISA, vPMC) ainda não é suportado pela engineAPI.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `infAdProd`, `gta`, `guiatransitoanimal`                                                                                                                                                          | A informação adicional por item (infAdProd), onde entra a Guia de Trânsito Animal, ainda não é suportada pela engineAPI. Sem ela a SEFAZ rejeita transporte de animal vivo com cStat 836.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `icms20`, `icms40`, `icms41`, `icms50`, `icms90`                                                                                                                                                  | Os campos do benefício fiscal de ICMS (modBC, pRedBC, o Fundo de Combate à Pobreza em vBCFCP/pFCP/vFCP e a desoneração em vICMSDeson/motDesICMS/indDeduzDeson) ficam dentro de `items[].icms`, acompanhando `icms.cst` com o código do benefício (20 = redução de base, 40 = isenta, 41 = não tributada, 50 = suspensão, 90 = outras), e valem para emissor em Regime Normal (crt 3) ou no Simples com excesso de sublimite (crt 2). A base de cálculo, a alíquota e o valor do ICMS próprio continuam em `icms.baseCalculo`, `icms.aliquota` e `icms.valor`. Na NFC-e (modelo 65) o leiaute só admite os códigos 20, 40 e 41.                                                                                                                                                                                                                   |
| `icms51`                                                                                                                                                                                          | Os campos do diferimento de ICMS (vICMSOp, pDif, vICMSDif, cBenefRBC e o Fundo de Combate à Pobreza diferido em pFCPDif/vFCPDif/vFCPEfet) ficam dentro de `items[].icms`, acompanhando `icms.cst` "51", e existem só na NF-e (modelo 55): o leiaute da NFC-e tem lista fechada de códigos de situação tributária e não admite o diferimento. Emita uma NF-e para essa operação.                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `icms10`, `icms30`, `icms70`                                                                                                                                                                      | Os campos da substituição tributária cobrada NESTA operação (modBCST, pMVAST, pRedBCST, vBCST, pICMSST e o FCP-ST em vBCFCPST/pFCPST/vFCPST) existem só na NF-e (modelo 55), dentro de `items[].icms`, acompanhando `icms.cst` "10" (tributada com ST), "30" (isenta ou não tributada com ST) ou "70" (redução de base com ST), com emissor em Regime Normal (crt 3) ou no Simples com excesso de sublimite (crt 2). Na NFC-e (modelo 65) esse grupo não é suportado pela engineAPI (o leiaute não admite esses códigos de situação tributária nesse documento): emita uma NF-e para a operação com ST. O ICMS PRÓPRIO (modBC, pRedBC, vBC, pICMS, vICMS) e o FCP próprio (vBCFCP, pFCP, vFCP) não são exclusivos da substituição: os mesmos campos servem aos códigos de benefício fiscal (20, 51 e 90), e nos códigos 20 e 41 também na NFC-e. |
| `vICMSSTDeson`, `motDesICMSST`                                                                                                                                                                    | A desoneração do ICMS (vICMSDeson, motDesICMS, indDeduzDeson) fica dentro de `items[].icms`, acompanhando `icms.cst` "20", "40", "41", "50" ou "90", numa NF-e (modelo 55) ou, para os códigos 20, 40 e 41, também numa NFC-e (modelo 65). O bloco vai INTEIRO: o indicador de dedução é obrigatório porque é ele que decide o total da nota. No CST "30" a engineAPI ainda não escreve a desoneração, e a desoneração da substituição tributária (vICMSSTDeson, motDesICMSST) também não: o valor interfere no total do documento por uma regra que não está fundamentada em fonte oficial conclusiva, e recusar vale mais que transmitir um total possivelmente errado.                                                                                                                                                                        |
| `ICMSPart`, `ICMSST`, `UFST`, `pBCOp`, `IEST`, `vBCSTDest`, `vICMSSTDest`                                                                                                                         | A partilha do ICMS entre a UF de origem e a de destino (grupo ICMSPart, com UFST e pBCOp), o repasse de ICMS-ST em operação interestadual com combustível (grupo ICMSST, com vBCSTDest e vICMSSTDest) e a inscrição estadual de substituto tributário do emitente (IEST) ainda não são suportados pela engineAPI. A substituição tributária comum tem caminho na NF-e: `icms.cst` "10", "30" ou "70" para o imposto cobrado nesta operação, e "60" para a mercadoria que já veio com ST retida pelo fornecedor.                                                                                                                                                                                                                                                                                                                                  |
| `DI`, `adi`, `II`, `vDespAdu`, `vIOF`                                                                                                                                                             | O grupo de importação (DI e adições, mais o imposto de importação: II, vDespAdu, vIOF do item) ainda não é suportado pela engineAPI.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `detExport`, `exporta`                                                                                                                                                                            | Os grupos de exportação (exporta, detExport) ainda não são suportados pela engineAPI.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `cobr`, `fat`, `dup`, `nDup`, `dVenc`, `vDup`, `duplicata`                                                                                                                                        | Cobrança (fatura + duplicatas) é suportada na NF-e, mas com outro nome: o grupo é `cobranca` na raiz do payload (`cobranca.fatura`: numero, valorOriginal, valorDesconto, valorLiquido; `cobranca.duplicatas[]`: numero, vencimento, valor). `cobr`, `fat`, `dup`, `nDup`, `dVenc` e `vDup` são nomes do XML do leiaute; no corpo da requisição eles vão dentro de `cobranca`. Na NFC-e o grupo não é suportado (422 COBRANCA\_NAO\_SUPORTADA\_NFCE): é venda com pagamento imediato ao consumidor final.                                                                                                                                                                                                                                                                                                                                        |
| `vFrete`, `vSeg`, `vOutro`                                                                                                                                                                        | Frete, seguro e outras despesas são suportados, mas com outro nome: `vFrete` é `items[].valorFrete`, `vSeg` é `items[].valorSeguro` e `vOutro` é `items[].outrasDespesas`. `vFrete`/`vSeg`/`vOutro` são nomes do XML do leiaute; no corpo da requisição eles vão com o nome do contrato.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `uTrib`, `qTrib`, `vUnTrib`                                                                                                                                                                       | A unidade tributável do item (a segunda unidade: vender em caixa e tributar por unidade ou por quilo) é suportada, mas com outro nome: `uTrib` é `items[].unidadeTributavel`, `qTrib` é `items[].quantidadeTributavel` e `vUnTrib` é `items[].valorUnitarioTributavel`. `uTrib`/`qTrib`/`vUnTrib` são nomes do XML do leiaute. Os três vão JUNTOS, e `quantidadeTributavel × valorUnitarioTributavel` tem que dar o mesmo valor de produto que `quantidade × valorUnitario` (senão 422 UNIDADE\_TRIBUTAVEL\_INVALIDA). Omitidos, o documento repete a unidade comercial nas duas, como sempre fez.                                                                                                                                                                                                                                               |
| `infIntermed`, `intermediador`, `idCadIntTran`                                                                                                                                                    | O grupo infIntermed (identificação do intermediador/marketplace da venda: CNPJ e idCadIntTran) ainda não é suportado pela engineAPI. Venda por marketplace que a SEFAZ exige identificar não pode ser emitida com essa informação por enquanto.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `autXML`, `pessoasautorizadas`                                                                                                                                                                    | O grupo autXML (CNPJ/CPF de terceiros autorizados a baixar o XML da nota pelo portal da SEFAZ, ex.: contador ou parceiro logístico) ainda não é suportado pela engineAPI.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `infRespTec`, `responsaveltecnico`                                                                                                                                                                | O grupo infRespTec (dados do responsável técnico pelo sistema emissor: CNPJ, contato, e-mail, telefone, hash de idCSRT) ainda não é suportado pela engineAPI.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `entrega`, `retirada`, `localentrega`, `localretirada`                                                                                                                                            | Os grupos de entrega e retirada (endereço de entrega/retirada diferente do destinatário/emitente, com CNPJ/CPF próprio) ainda não são suportados pela engineAPI. O documento sai só com o endereço de `destinatario`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `compra`, `xNEmp`, `xPed`, `nItemPed`                                                                                                                                                             | O grupo compra (xNEmp, xPed, nItemPed: número do empenho, do pedido de compra e do item do pedido no ERP do comprador) ainda não é suportado pela engineAPI.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `dPag`                                                                                                                                                                                            | dPag (data do pagamento) ainda não é suportado pela engineAPI. O contrato aceita hoje, em `pagamentos`, `forma`, `valor`, `indicador` (só NF-e) e o grupo `cartao`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `tBand`, `cAut`, `card`, `cnpjcredenciadora`, `cnpjreceb`, `idtermpag`                                                                                                                            | O grupo de cartão/PIX do pagamento é suportado, mas com outro nome: o grupo é `pagamentos[].cartao` (obrigatório: tpIntegra; opcionais: cnpjInstituicao, bandeira, autorizacao, cnpjRecebedor, idTerminal). `card`, `tBand`, `cAut`, `tpIntegra` e o CNPJ da credenciadora soltos são nomes do XML do leiaute.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `ISSQN`, `vissqn`, `clistserv`                                                                                                                                                                    | O grupo ISSQN do item (prestação de serviço sujeita a ISS dentro de um documento de mercadoria, CFOP misto) ainda não é suportado pela engineAPI. Serviço puro tem NFS-e própria; mercadoria com serviço embutido não pode ser emitida com essa tributação combinada por enquanto.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `pisSt`, `cofinsSt`                                                                                                                                                                               | pisSt e cofinsSt (substituição tributária de PIS/COFINS, retida por outro contribuinte na cadeia) ainda não são suportados pela engineAPI. O contrato aceita PIS e COFINS próprios (grupos `pis` e `cofins` do item); a parcela retida por substituição não tem campo.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `obsCont`, `obsFisco`                                                                                                                                                                             | obsCont e obsFisco (observações ESTRUTURADAS em blocos nomeados, xCampo/xTexto) ainda não são suportados pela engineAPI. Existe o equivalente em texto livre: `informacoesComplementares` (um obsCont único) e `informacoesFisco` (um obsFisco único); use um desses quando o conteúdo cabe em texto corrido: bloco nomeado estruturado ainda não tem campo.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `dhSaiEnt`, `tpImp`                                                                                                                                                                               | dhSaiEnt (data/hora de saída ou entrada da mercadoria) e tpImp (formato de impressão do DANFE: retrato, paisagem, NFC-e ou sem impressão) ainda não são suportados pela engineAPI.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `IS`, `ISTot`, `cstis`, `cclasstribis`, `vbcis`, `pis_seletivo`, `pisespec`, `vis`, `impostoseletivo`                                                                                             | O Imposto Seletivo (grupo `IS` do item e `ISTot` do total, criado pela Reforma Tributária) não é suportado pela engineAPI: não há campo no contrato e o motor não escreve o grupo no documento. Não existe nome alternativo, porque é ausência de funcionalidade e não de tradução.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `retTrib`, `vretpis`, `vretcofins`, `vretcsll`, `vbcirrf`, `virrf`, `vbcretprev`, `vretprev`                                                                                                      | As retenções federais na NF-e (grupo `retTrib`: IRRF, CSLL, INSS, PIS e COFINS retidos) não são suportadas pela engineAPI. Atenção ao caminho: na NFS-e as retenções ficam dentro de `retencoes` e funcionam; esta recusa vale só para a NF-e e a NFC-e, onde o grupo do leiaute não tem correspondência no contrato.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `vTotTrib`                                                                                                                                                                                        | O valor aproximado dos tributos da Lei da Transparência (Lei 12.741/2012, `vTotTrib` no item e no total) não é suportado na NF-e nem na NFC-e. Quem precisa exibir o valor ao consumidor hoje escreve o texto da lei em `informacoesComplementares`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `gibscbsmono`, `gdevtrib`, `gtribregular`, `gtribcompragov`, `gcredpres`, `gcredpresif`, `gtransfcred`, `gajustecompet`, `gestornocred`                                                           | Este grupo do IBS/CBS não é suportado pela engineAPI. O que existe hoje é o núcleo do `ibsCbs` (CST, classificação tributária e os valores de UF e município); os grupos de regime específico, devolução de tributo, crédito presumido, transferência de crédito, ajuste de competitividade, compra governamental e estorno de crédito seguem fora do contrato.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
