> ## 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: NFSe

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

Esta página lista **exatamente** o que a engineAPI aceita hoje no payload de emissão
de NFSe, nem mais, nem menos, com a tag do leiaute de cada campo onde ela já
foi catalogada. A NFSe tem provider por município (ABRASF) ou Padrão Nacional (SEFIN/ADN, bloco `dpsNacional`): o formato aceito é o mesmo nos dois, mas cada provider usa um subconjunto. Com `resolverTributacao: true` (Cérebro Fiscal), campos da DPS ausentes são preenchidos pelo cadastro do emissor; campo obrigatório sem fonte devolve `422` com `camposNaoResolvidos`; ver [Cérebro Fiscal](/guides/cerebro-fiscal). Para empresa do Simples, `dpsNacional.pTotTribSN` enviado na nota tem prioridade; sem ele, o cadastro pode informar `pTotTribSNPadrao` e seu mês de referência `pTotTribSNCompetencia` (`AAAA-MM`). Percentual de mês anterior, futuro ou sem mês registrado não bloqueia a emissão, mas devolve um aviso para confirmar o valor com o contador. O bloco `ibsCbs` (Reforma Tributária) é **passthrough puro**: nada nele é resolvido pelo Cérebro Fiscal. Esta página descreve o **contrato de entrada**, não a cobertura fiscal completa do leiaute oficial. `servico.valorServicos` e os demais valores monetários `TSDec15V2` aceitam até 15 dígitos inteiros e 2 casas decimais: excesso de largura ou fração de centavo devolve `400` antes da emissão. Ver [Erros e respostas](/guides/errors#casas-decimais-em-valores-monetrios-400).

**Leiaute:** versão 1.01  · **Contrato revisado em:** 2026-08-15&#x20;

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

***

## Navegação por grupo do leiaute

1. [Identificação](#grupo-identificacao)
2. [Emitente](#grupo-emitente)
3. [Destinatário](#grupo-destinatario)
4. [Itens](#grupo-itens)
5. [Totais](#grupo-totais) *(sem campo no contrato hoje, ver nota)*
6. [Transporte](#grupo-transporte) *(sem campo no contrato hoje, ver nota)*
7. [Cobrança](#grupo-cobranca) *(sem campo no contrato hoje, ver nota)*
8. [Pagamento](#grupo-pagamento) *(sem campo no contrato hoje, ver nota)*
9. [Informações adicionais](#grupo-informacoes-adicionais)
10. [Tributação (Reforma e retenções)](#grupo-tributacao-reforma)

***

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

<ParamField path="rps" type="object">
  **Tag do leiaute:** sem tag própria no XML · **Obrigatoriedade do leiaute:** não é campo do leiaute (informativo/de compatibilidade)

  **Nota do leiaute:** Grupo do modelo municipal antigo. A DPS não possui contêiner de RPS porque a própria declaração é o documento de origem.

  *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCInfDPS (sem grupo de RPS no leiaute nacional).*

  <Expandable title="3 campo(s)">
    <ParamField path="rps.numero" type="integer" required>
      **Tag do leiaute:** sem tag própria no XML · **Obrigatoriedade do leiaute:** não é campo do leiaute (informativo/de compatibilidade) · **Preenche:** você, na requisição

      Número do RPS. Só tem efeito na emissão pelo provedor municipal. Na emissão pelo Padrão Nacional o campo é recusado com 422 RPS\_SEM\_CAMPO\_NO\_PADRAO\_NACIONAL, porque o leiaute da DPS não tem campo de RPS

      **Nota do leiaute:** O Padrão Nacional não tem RPS: a própria DPS é o documento de origem, e o número dela é alocado pela engineAPI por empresa e série. Enviar este campo na emissão nacional é recusado com 422, em vez de gerar uma nota sem o dado. Guarde a correspondência com o seu RPS pelo número da DPS devolvido na emissão.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCInfDPS não tem grupo de RPS. O número do documento é nDPS, sequencial controlado pela engineAPI.*
    </ParamField>

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

      Série do RPS. Só tem efeito na emissão pelo provedor municipal. Na emissão pelo Padrão Nacional o campo é recusado com 422 RPS\_SEM\_CAMPO\_NO\_PADRAO\_NACIONAL, porque o leiaute da DPS não tem campo de RPS

      **Nota do leiaute:** Série do RPS do modelo municipal, sem equivalente no Padrão Nacional. A série que vai para a DPS é o campo serie do topo do payload. Enviar este campo na emissão nacional é recusado com 422.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCInfDPS não tem grupo de RPS. A série do documento é TCInfDPS/serie.*
    </ParamField>

    <ParamField path="rps.tipo" type="integer">
      **Tag do leiaute:** sem tag própria no XML · **Obrigatoriedade do leiaute:** não é campo do leiaute (informativo/de compatibilidade) · **Preenche:** você, na requisição

      Tipo do RPS. Só tem efeito na emissão pelo provedor municipal. Na emissão pelo Padrão Nacional o campo é recusado com 422 RPS\_SEM\_CAMPO\_NO\_PADRAO\_NACIONAL, porque o leiaute da DPS não tem campo de RPS

      **Nota do leiaute:** Tipo de RPS do modelo municipal, sem equivalente no Padrão Nacional. Enviar este campo na emissão nacional é recusado com 422.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCInfDPS não tem grupo de RPS.*
    </ParamField>
  </Expandable>
</ParamField>

<ParamField path="serie" type="string">
  **Tamanho:** Até 5 dígitos numéricos (TSSerieDPS) · **Tag do leiaute:** `serie` (grupo `infDPS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

  *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCInfDPS/serie (TSSerieDPS). Ausente no payload, a engineAPI usa a série 1.*
</ParamField>

<ParamField path="dpsNacional" type="object">
  **Tag do leiaute:** sem tag própria no XML · **Obrigatoriedade do leiaute:** não é campo do leiaute (informativo/de compatibilidade)

  **Nota do leiaute:** Grupo lógico da API que organiza os campos fiscais do padrão nacional; no XML esses campos ficam distribuídos em prest/regTrib, serv/cServ e valores/trib.

  *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCInfDPS (sem elemento dpsNacional; os campos ficam em grupos distintos).*

  <Expandable title="10 campo(s)">
    <ParamField path="dpsNacional.opSimpNac" type="string" required>
      **Tamanho:** 1 dígito (TSOpSimpNac) · **Tag do leiaute:** `opSimpNac` (grupo `infDPS/prest/regTrib`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** preenchido automaticamente pela engineAPI

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCRegTrib/opSimpNac (TSOpSimpNac). Com resolverTributacao igual a true, o Cérebro Fiscal preenche a partir do cadastro da empresa.*
    </ParamField>

    <ParamField path="dpsNacional.regApTribSN" type="string">
      **Tamanho:** 1 dígito (TSRegimeApuracaoSimpNac) · **Tag do leiaute:** `regApTribSN` (grupo `infDPS/prest/regTrib`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

      **Condição do leiaute:** Só para optante ME/EPP (opSimpNac igual a 3), para indicar em que regime os tributos federais e o municipal estão inseridos quando algum sublimite do Simples foi ultrapassado. MEI não leva o campo. Na engineAPI o campo é OBRIGATÓRIO NA REQUISIÇÃO quando a empresa está cadastrada com crt igual a 2 (Simples Nacional com excesso de sublimite): o crt confirma que a empresa é optante do Simples, mas sozinho não diz o regime de apuração, e não existe um padrão desse regime no cadastro da empresa. Sem o campo, a emissão é recusada com 422 e o código CRT2\_SEM\_REGIME\_APURACAO, antes de qualquer transmissão e sem consumir número de DPS. Vale em QUALQUER forma de emissão, inclusive com resolverTributacao igual a true. Para crt igual a 1 (Simples) a engineAPI continua derivando o valor 1 do cadastro quando o campo é omitido.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCRegTrib/regApTribSN (TSRegimeApuracaoSimpNac). A engineAPI só deriva o valor quando também derivou o opSimpNac E o cadastro traz a fonte do regime (crt igual a 1); no crt igual a 2 não há fonte e o campo tem de vir na requisição.*
    </ParamField>

    <ParamField path="dpsNacional.regEspTrib" type="string">
      **Tamanho:** 1 dígito (TSRegEspTrib) · **Tag do leiaute:** `regEspTrib` (grupo `infDPS/prest/regTrib`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCRegTrib/regEspTrib (TSRegEspTrib), elemento obrigatório. Ausente no payload, a engineAPI escreve 0 (nenhum).*
    </ParamField>

    <ParamField path="dpsNacional.cTribNac" type="string" required>
      **Tamanho:** 6 dígitos: 2 do item da lista de serviços, 2 do subitem e 2 do desdobro nacional · **Tag do leiaute:** `cTribNac` (grupo `infDPS/serv/cServ`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** preenchido automaticamente pela engineAPI

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCCServ/cTribNac (TSCodTribNac). Com resolverTributacao igual a true, o Cérebro Fiscal resolve o código a partir do serviço padrão da empresa.*
    </ParamField>

    <ParamField path="dpsNacional.cTribMun" type="string">
      **Tamanho:** 3 dígitos numéricos (TCCodTribMun) · **Tag do leiaute:** `cTribMun` (grupo `infDPS/serv/cServ`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

      Código de tributação municipal do ISSQN (3 dígitos). Vai para serv/cServ/cTribMun na DPS. Equivalente de baixo nível de servico.codigoTributacaoMunicipio: informar os dois com valores diferentes recusa com 422 CTRIBMUN\_CONFLITO

      **Condição do leiaute:** Este campo e servico.codigoTributacaoMunicipio escrevem a MESMA tag. Informe um dos dois, ou os dois com o mesmo valor: valores diferentes são recusados com 422.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCCServ/cTribMun (TCCodTribMun, 3 dígitos).*
    </ParamField>

    <ParamField path="dpsNacional.tribISSQN" type="string" required>
      **Tamanho:** 1 dígito (TSTribISSQN) · **Tag do leiaute:** `tribISSQN` (grupo `infDPS/valores/trib/tribMun`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** preenchido automaticamente pela engineAPI

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCTribMunicipal/tribISSQN (TSTribISSQN). Com resolverTributacao igual a true, o Cérebro Fiscal preenche.*
    </ParamField>

    <ParamField path="dpsNacional.tpRetISSQN" type="string">
      **Tamanho:** 1 dígito (TSTipoRetISSQN) · **Tag do leiaute:** `tpRetISSQN` (grupo `infDPS/valores/trib/tribMun`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** derivado de outros campos (calculado)

      Tipo de retenção do ISSQN: 1 (não retido), 2 (retido pelo tomador) ou 3 (retido pelo intermediário). Equivalente de baixo nível de retencoes.issRetidoPor: informar os dois com valores diferentes recusa com 422 RETENCAO\_ISS\_CONFLITO

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCTribMunicipal/tpRetISSQN (TSTipoRetISSQN), elemento obrigatório. A engineAPI reconcilia este campo com retencoes.issRetidoPor (valores diferentes recusam com 422 RETENCAO\_ISS\_CONFLITO) e escreve 1 quando nenhum dos dois vem.*
    </ParamField>

    <ParamField path="dpsNacional.cstPisCofins" type="string">
      **Tamanho:** 2 dígitos (TSTipoCST) · **Tag do leiaute:** `CST` (grupo `infDPS/valores/trib/tribFed/piscofins`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

      **Condição do leiaute:** Obrigatório sempre que o grupo de PIS/COFINS for escrito, ou seja, sempre que houver indicador de retenção. Informar o indicador sem o CST recusa com 422 RETENCAO\_PIS\_COFINS\_SEM\_CST.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCTribOutrosPisCofins/CST (TSTipoCST), elemento obrigatório do grupo.*
    </ParamField>

    <ParamField path="dpsNacional.tpRetPisCofins" type="string">
      **Tamanho:** 1 dígito (TSTipoRetPISCofins) · **Tag do leiaute:** `tpRetPisCofins` (grupo `infDPS/valores/trib/tribFed/piscofins`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

      Tipo de retenção do PIS/COFINS (enum TSTipoRetPISCofins, códigos 0 a 9; ex.: 1 = PIS/COFINS retidos, 3 = PIS/COFINS/CSLL retidos). É como se declara a retenção de PIS/COFINS, que não tem campo de valor na DPS. Exige dpsNacional.cstPisCofins

      **Condição do leiaute:** É por este indicador que a retenção de PIS/COFINS se declara: o leiaute não tem campo para o valor retido desses tributos. Exige dpsNacional.cstPisCofins e é conferido contra retencoes.csll.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCTribOutrosPisCofins/tpRetPisCofins (TSTipoRetPISCofins). O código vai como o integrador informou: a engineAPI nunca o infere.*
    </ParamField>

    <ParamField path="dpsNacional.pTotTribSN" type="number">
      **Tamanho:** Até 3 dígitos inteiros e 2 decimais (TSDec3V2) · **Tag do leiaute:** `pTotTribSN` (grupo `infDPS/valores/trib/totTrib`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** preenchido automaticamente pela engineAPI

      **Condição do leiaute:** O grupo de total de tributos exige exatamente uma das quatro opções do leiaute. Para optante ME/EPP (opSimpNac igual a 3) o sistema nacional recusa o indicador de omissão, então o percentual passa a ser obrigatório: sem ele no payload nem no cadastro da empresa, a emissão para antes de transmitir com 422. O valor enviado nesta requisição sempre tem precedência e segue sem alteração. Quando vier do cadastro, informe também pTotTribSNCompetencia (AAAA-MM): se o mês estiver anterior ao mês corrente em Brasília, futuro ou não estiver registrado, a nota é emitida e avisos\[] pede a confirmação com o contador. Nos demais regimes, ausente, a engineAPI declara que não informa o valor estimado dos tributos.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCTribTotal/pTotTribSN (em xs:choice com vTotTrib, pTotTrib e indTotTrib).*
    </ParamField>
  </Expandable>
</ParamField>

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

  **Nota do leiaute:** Conceito do modelo municipal. No Padrão Nacional a natureza da operação é expressa pela tributação do ISSQN (dpsNacional.tribISSQN) e pelo local da prestação. Campo aceito por compatibilidade e não escrito no documento.

  *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): não há elemento de natureza da operação em TCInfDPS.*
</ParamField>

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

  **Nota do leiaute:** Conceito do modelo municipal. No Padrão Nacional o regime vai no grupo prest/regTrib, alimentado por dpsNacional.opSimpNac, regApTribSN e regEspTrib. Campo aceito por compatibilidade e não escrito no documento.

  *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): o regime do prestador é TCRegTrib, com três elementos próprios.*
</ParamField>

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

  **Nota do leiaute:** Booleano do modelo municipal. O Padrão Nacional exige um código de três valores (não optante, MEI, ME/EPP), informado em dpsNacional.opSimpNac. Campo aceito por compatibilidade e não escrito no documento.

  *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCRegTrib/opSimpNac é enumeração de três valores, não booleano.*
</ParamField>

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

  **Nota do leiaute:** Código do modelo municipal. No Padrão Nacional a exigibilidade se declara por dpsNacional.tribISSQN (tributável, imunidade, exportação, não incidência) e pelo grupo de exigibilidade suspensa, que este motor ainda não escreve. Campo aceito por compatibilidade e não escrito no documento.

  *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCTribMunicipal/tribISSQN e TCExigSuspensa.*
</ParamField>

<ParamField path="competencia" type="string">
  **Tamanho:** AAAA-MM-DD (TSData) · **Tag do leiaute:** `dCompet` (grupo `infDPS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

  padrão: `^\d{4}-\d{2}-\d{2}$`

  *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCInfDPS/dCompet (TSData), "data em que se iniciou a prestação do serviço". Ausente no payload, vale a data de emissão.*
</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" required>
  **Tamanho:** mínimo 1 caractere(s) · **Tag do leiaute:** sem tag própria no XML · **Obrigatoriedade do leiaute:** não é campo do leiaute (informativo/de compatibilidade) · **Preenche:** você, na requisição

  **Nota do leiaute:** Identificador da empresa emissora na engineAPI, não é campo do leiaute. É ele que determina o grupo prest (CNPJ ou CPF e regime) e o município emissor, lidos do cadastro.

  *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): não há elemento correspondente. O grupo prest é montado a partir do cadastro da empresa.*
</ParamField>

***

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

Na NFS-e o destinatário do leiaute é o tomador do serviço.

<ParamField path="tomador" type="object" required>
  **Tag do leiaute:** `toma` (grupo `infDPS`) · **Obrigatoriedade do leiaute:** condicional no leiaute

  **Condição do leiaute:** No XSD o grupo é opcional para cobrir operações sem tomador identificado, mas neste contrato ele é obrigatório.

  **Nota do leiaute:** Grupo, não campo: toma é o contêiner de identificação e endereço do tomador.

  *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCInfDPS/toma (TCInfoPessoa, minOccurs="0").*

  <Expandable title="6 campo(s)">
    <ParamField path="tomador.cnpjCpf" type="string" required>
      **Tamanho:** 14 dígitos (CNPJ) ou 11 dígitos (CPF), só números · **Tag do leiaute:** `CNPJ|CPF` (grupo `infDPS/toma`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** derivado de outros campos (calculado)

      **Condição do leiaute:** O leiaute escolhe uma das duas tags. A engineAPI classifica pelo comprimento do documento limpo: 14 dígitos vão em CNPJ, 11 em CPF.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCInfoPessoa/CNPJ (TSCNPJ) ou TCInfoPessoa/CPF (TSCPF), em xs:choice com NIF/cNaoNIF.*
    </ParamField>

    <ParamField path="tomador.razaoSocial" type="string" required>
      **Tamanho:** 1 a 300 caracteres (TSNomeRazaoSocial) · **Tag do leiaute:** `xNome` (grupo `infDPS/toma`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCInfoPessoa/xNome (TSNomeRazaoSocial).*
    </ParamField>

    <ParamField path="tomador.email" type="string">
      **Tamanho:** 1 a 80 caracteres (TSEmail) · **Tag do leiaute:** `email` (grupo `infDPS/toma`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCInfoPessoa/email (TSEmail).*
    </ParamField>

    <ParamField path="tomador.telefone" type="string">
      **Tamanho:** 6 a 20 dígitos (TSTelefone), DDD mais número · **Tag do leiaute:** `fone` (grupo `infDPS/toma`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** derivado de outros campos (calculado)

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCInfoPessoa/fone (TSTelefone). A engineAPI remove tudo que não é dígito antes de escrever.*
    </ParamField>

    <ParamField path="tomador.inscricaoMunicipal" type="string">
      **Tamanho:** 1 a 15 caracteres (TSInscMun) · **Tag do leiaute:** `IM` (grupo `infDPS/toma`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

      Inscrição municipal do tomador (até 15 caracteres). Vai para toma/IM na DPS

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCInfoPessoa/IM (TSInscMun), escrito antes do nome do tomador, na ordem do grupo.*
    </ParamField>

    <ParamField path="tomador.endereco" type="object" required>
      **Tag do leiaute:** `end` (grupo `infDPS/toma`) · **Obrigatoriedade do leiaute:** condicional no leiaute

      **Condição do leiaute:** No XSD o grupo é opcional dentro de toma, mas neste contrato o endereço do tomador é obrigatório.

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

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCInfoPessoa/end (TCEndereco, minOccurs="0").*

      <Expandable title="7 campo(s)">
        <ParamField path="tomador.endereco.logradouro" type="string" required>
          **Tamanho:** 1 a 255 caracteres (TSLogradouro) · **Tag do leiaute:** `xLgr` (grupo `infDPS/toma/end`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

          Texto do endereço (até 255 caracteres). Vai para a DPS. Aceita apenas caracteres latinos básicos: travessão, aspas curvas, reticências e emoji são recusados com 400. Quebra de linha e tabulação viram espaço na emissão

          *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCEndereco/xLgr (TSLogradouro).*
        </ParamField>

        <ParamField path="tomador.endereco.numero" type="string" required>
          **Tamanho:** 1 a 60 caracteres (TSNumeroEndereco) · **Tag do leiaute:** `nro` (grupo `infDPS/toma/end`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

          Texto do endereço (até 60 caracteres). Vai para a DPS. Aceita apenas caracteres latinos básicos: travessão, aspas curvas, reticências e emoji são recusados com 400. Quebra de linha e tabulação viram espaço na emissão

          *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCEndereco/nro (TSNumeroEndereco).*
        </ParamField>

        <ParamField path="tomador.endereco.complemento" type="string">
          **Tamanho:** 1 a 156 caracteres (TSComplementoEndereco) · **Tag do leiaute:** `xCpl` (grupo `infDPS/toma/end`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

          Texto do endereço (até 156 caracteres). Vai para a DPS. Aceita apenas caracteres latinos básicos: travessão, aspas curvas, reticências e emoji são recusados com 400. Quebra de linha e tabulação viram espaço na emissão

          *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCEndereco/xCpl (TSComplementoEndereco).*
        </ParamField>

        <ParamField path="tomador.endereco.bairro" type="string" required>
          **Tamanho:** 1 a 60 caracteres (TSBairro) · **Tag do leiaute:** `xBairro` (grupo `infDPS/toma/end`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

          Texto do endereço (até 60 caracteres). Vai para a DPS. Aceita apenas caracteres latinos básicos: travessão, aspas curvas, reticências e emoji são recusados com 400. Quebra de linha e tabulação viram espaço na emissão

          *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCEndereco/xBairro (TSBairro).*
        </ParamField>

        <ParamField path="tomador.endereco.codigoMunicipio" type="string" required>
          **Tamanho:** 7 dígitos, código IBGE do município (TSCodMunIBGE) · **Tag do leiaute:** `cMun` (grupo `infDPS/toma/end/endNac`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

          *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCEnderNac/cMun (TSCodMunIBGE).*
        </ParamField>

        <ParamField path="tomador.endereco.uf" type="string" required>
          **Tamanho:** mínimo 1 caractere(s) · **Tag do leiaute:** sem tag própria no XML · **Obrigatoriedade do leiaute:** não é campo do leiaute (informativo/de compatibilidade) · **Preenche:** você, na requisição

          **Nota do leiaute:** O endereço nacional da DPS tem apenas código do município e CEP: a UF é deduzida do código IBGE pelo sistema nacional. Campo aceito por compatibilidade e não escrito no documento.

          *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCEnderNac tem somente cMun e CEP.*
        </ParamField>

        <ParamField path="tomador.endereco.cep" type="string" required>
          **Tamanho:** 8 dígitos, só números (TSCEP) · **Tag do leiaute:** `CEP` (grupo `infDPS/toma/end/endNac`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** derivado de outros campos (calculado)

          *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCEnderNac/CEP (TSCEP). A engineAPI remove tudo que não é dígito antes de escrever.*
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

***

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

Na NFS-e o item do leiaute é o serviço prestado: cada DPS descreve um único serviço, não é um array como em NF-e/NFC-e.

<ParamField path="servico" type="object" required>
  **Tag do leiaute:** `serv` (grupo `infDPS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute

  **Nota do leiaute:** Grupo, não campo: serv é o contêiner dos dados do serviço.

  *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCInfDPS/serv (TCServ).*

  <Expandable title="11 campo(s)">
    <ParamField path="servico.codigoMunicipio" type="string" required>
      **Tamanho:** 7 dígitos, código IBGE do município (TSCodMunIBGE) · **Tag do leiaute:** `cLocPrestacao` (grupo `infDPS/serv/locPrest`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      **Condição do leiaute:** O leiaute aceita o município da prestação ou o país da prestação, quando o serviço é prestado no exterior. Este motor escreve sempre o município.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCLocPrest/cLocPrestacao (TSCodMunIBGE), em xs:choice com cPaisPrestacao.*
    </ParamField>

    <ParamField path="servico.itemListaServico" type="string">
      **Tamanho:** mínimo 1 caractere(s) · **Tag do leiaute:** sem tag própria no XML · **Obrigatoriedade do leiaute:** não é campo do leiaute (informativo/de compatibilidade) · **Preenche:** preenchido automaticamente pela engineAPI

      **Nota do leiaute:** O Padrão Nacional identifica o serviço pelo código de tributação nacional de 6 dígitos (dpsNacional.cTribNac), não pelo item da lista no formato do modelo municipal. Este campo é a entrada do Cérebro Fiscal, que resolve o cTribNac quando resolverTributacao é true, mas não vira tag na DPS.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCCServ tem cTribNac, cTribMun, xDescServ, cNBS e cIntContrib, nenhum no formato do item da lista de serviços.*
    </ParamField>

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

      **Nota do leiaute:** O leiaute da DPS não tem campo de CNAE. Campo aceito por compatibilidade com o modelo municipal e não escrito no documento.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): nenhuma ocorrência de CNAE nos três esquemas oficiais.*
    </ParamField>

    <ParamField path="servico.codigoTributacaoMunicipio" type="string">
      **Tamanho:** 3 dígitos numéricos (TCCodTribMun) · **Tag do leiaute:** `cTribMun` (grupo `infDPS/serv/cServ`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

      Código de tributação municipal do ISSQN (3 dígitos). Vai para serv/cServ/cTribMun na DPS. Equivalente de alto nível de dpsNacional.cTribMun: informar os dois com valores diferentes recusa com 422 CTRIBMUN\_CONFLITO

      **Condição do leiaute:** Este campo e dpsNacional.cTribMun escrevem a MESMA tag. Informe um dos dois, ou os dois com o mesmo valor: valores diferentes são recusados com 422, porque escolher um deles seria decidir a tributação municipal no lugar de quem emite.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCCServ/cTribMun (TCCodTribMun, 3 dígitos).*
    </ParamField>

    <ParamField path="servico.codigoNBS" type="string">
      **Tamanho:** 9 dígitos numéricos (TSCodNBS, NBS versão 2.0). A pontuação usual do código é aceita e removida na emissão: 1.1401.20.00 e 114012000 dão no mesmo. · **Tag do leiaute:** `cNBS` (grupo `infDPS/serv/cServ`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** preenchido automaticamente pela engineAPI

      Código NBS 2.0 (9 dígitos). Vai para serv/cServ/cNBS na DPS

      **Condição do leiaute:** Com resolverTributacao igual a true, o Cérebro Fiscal preenche o código a partir da tabela vigente quando o campo vem ausente. Se o código da tabela não tiver os 9 dígitos exigidos, a nota é emitida sem ele e a resposta traz o aviso.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCCServ/cNBS (TSCodNBS, 9 dígitos), escrito depois da descrição do serviço, na ordem do grupo.*
    </ParamField>

    <ParamField path="servico.discriminacao" type="string" required>
      **Tamanho:** 1 a 2000 caracteres (TSDesc2000) · **Tag do leiaute:** `xDescServ` (grupo `infDPS/serv/cServ`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCCServ/xDescServ (TSDesc2000), "descrição completa do serviço prestado".*
    </ParamField>

    <ParamField path="servico.valorServicos" type="number" required>
      **Tamanho:** Até 15 dígitos inteiros e 2 decimais (TSDec15V2) · **Tag do leiaute:** `vServ` (grupo `infDPS/valores/vServPrest`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      Valor em R\$, com no máximo 2 casas decimais. Vai para valores/vServPrest/vServ na DPS

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCVServPrest/vServ (TSDec15V2), "valor dos serviços em R\$". O valor é apenas formatado com 2 casas, nunca calculado.*
    </ParamField>

    <ParamField path="servico.aliquotaIss" type="number">
      **Tamanho:** 1 dígito inteiro e 2 decimais (TSDec1V2): percentual de 0 a 9,99. Percentual de dois dígitos, como 15, é recusado pelo esquema oficial. · **Tag do leiaute:** `pAliq` (grupo `infDPS/valores/trib/tribMun`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

      Alíquota do ISS em percentual (0 a 9,99; no máximo 1 dígito inteiro e 2 casas). Vai para tribMun/pAliq na DPS

      **Condição do leiaute:** Informe apenas quando o município de incidência não é parametrizado no Sistema Nacional. Se o município participa, a alíquota é fornecida pelo próprio sistema. Com resolverTributacao igual a true o valor enviado é ignorado, com aviso na resposta: ecoar alíquota divergente causa rejeição.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCTribMunicipal/pAliq (TSDec1V2). A ordem dos elementos do grupo é normativa e foi conferida contra o esquema.*
    </ParamField>

    <ParamField path="servico.valorDeducoes" type="number">
      **Tamanho:** Até 15 dígitos inteiros e 2 decimais (TSDec15V2) · **Tag do leiaute:** `vDR` (grupo `infDPS/valores/vDedRed`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

      Valor em R\$, com no máximo 2 casas decimais. Vai para valores/vDedRed/vDR na DPS

      **Condição do leiaute:** O leiaute permite declarar a dedução como percentual, como valor ou por lista de documentos. Este motor escreve o valor em reais; percentual e lista de documentos ainda não são suportados. O valor reduz a base de cálculo apurada pelo sistema nacional.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCInfoValores/vDedRed/vDR (TSDec15V2), folha obrigatória dentro da escolha de TCInfoDedRed quando a dedução é declarada por valor monetário. O valor é apenas formatado com 2 casas, nunca calculado.*
    </ParamField>

    <ParamField path="servico.descontoIncondicionado" type="number">
      **Tamanho:** Até 15 dígitos inteiros e 2 decimais (TSDec15V2) · **Tag do leiaute:** `vDescIncond` (grupo `infDPS/valores/vDescCondIncond`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

      Valor em R\$, com no máximo 2 casas decimais. Vai para valores/vDescCondIncond/vDescIncond na DPS

      **Condição do leiaute:** Reduz a base de cálculo do ISSQN apurada pelo sistema nacional, ao contrário do desconto condicionado.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCVDescCondIncond/vDescIncond (TSDec15V2), dentro de TCInfoValores/vDescCondIncond. O valor é apenas formatado com 2 casas, nunca calculado.*
    </ParamField>

    <ParamField path="servico.descontoCondicionado" type="number">
      **Tamanho:** Até 15 dígitos inteiros e 2 decimais (TSDec15V2) · **Tag do leiaute:** `vDescCond` (grupo `infDPS/valores/vDescCondIncond`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

      Valor em R\$, com no máximo 2 casas decimais. Vai para valores/vDescCondIncond/vDescCond na DPS

      **Condição do leiaute:** Informativo: o desconto condicionado NÃO entra na fórmula da base de cálculo do ISSQN do leiaute, diferente do incondicionado.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCVDescCondIncond/vDescCond (TSDec15V2). A fórmula da base de cálculo documentada no esquema desconta apenas o incondicionado e a dedução.*
    </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>

NFS-e (prestação de serviço) não tem grupo de transporte no leiaute.

***

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

NFS-e não tem grupo de cobrança/fatura no contrato hoje.

***

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

NFS-e não tem grupo de pagamento no contrato hoje: a cobrança do serviço é tratada fora da emissão fiscal.

***

<h2 id="grupo-informacoes-adicionais">
  Informações adicionais
</h2>

<ParamField path="informacoesComplementares" type="string">
  **Tamanho:** 1 a 2000 caracteres (TSDescInfCompl). Diferente da discriminação do serviço, este campo aceita apenas caracteres latinos básicos (até U+00FF): travessão, aspas curvas, reticências e emoji são recusados com 400. Quebra de linha, tabulação e espaço nas bordas são convertidos em espaço simples na emissão. · **Tag do leiaute:** `xInfComp` (grupo `infDPS/serv/infoCompl`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

  Informações complementares da nota (até 2000 caracteres). Vai para serv/infoCompl/xInfComp na DPS. Aceita apenas caracteres latinos básicos: travessão, aspas curvas, reticências e emoji são recusados com 400. Quebra de linha e tabulação viram espaço na emissão

  *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCInfoCompl/xInfComp (TSDescInfCompl, 1 a 2000, derivado de TSString, cujo padrão oficial não admite quebra de linha nem caractere acima de U+00FF).*
</ParamField>

***

<h2 id="grupo-tributacao-reforma">
  Tributação (Reforma e retenções)
</h2>

Fora da taxonomia clássica do leiaute NF-e/NFC-e: `ibsCbs` é o grupo da Reforma Tributária (passthrough puro, o Cérebro Fiscal não resolve nada dele), `retencoes` são as retenções de ISS da prestação e `resolverTributacao` ativa a emissão assistida; ver [guia do Cérebro Fiscal](/guides/cerebro-fiscal).

<ParamField path="ibsCbs" type="object">
  **Tag do leiaute:** `IBSCBS` (grupo `infDPS`) · **Obrigatoriedade do leiaute:** opcional no leiaute

  **Condição do leiaute:** Opcional no leiaute: o grupo só é emitido quando a operação declara IBS/CBS no padrão RTC.

  **Nota do leiaute:** Grupo, não campo: IBSCBS é o contêiner do bloco da Reforma.

  *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCInfDPS/IBSCBS (TCRTCInfoIBSCBS, minOccurs="0").*

  <Expandable title="11 campo(s)">
    <ParamField path="ibsCbs.finNFSe" type="string">
      **Tamanho:** 1 dígito (TSRTCFinNFSe) · **Tag do leiaute:** `finNFSe` (grupo `infDPS/IBSCBS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** preenchido automaticamente pela engineAPI

      Finalidade da emissão. O leiaute v1.01 prevê um único valor: "0" (NFS-e regular). Ausente = "0"

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCRTCInfoIBSCBS/finNFSe (TSRTCFinNFSe), com um único valor enumerado. Ausente, a engineAPI escreve 0.*

      | Valor | Significado   |
      | ----- | ------------- |
      | `0`   | NFS-e regular |
    </ParamField>

    <ParamField path="ibsCbs.indFinal" type="string">
      **Tamanho:** 1 dígito (TSRTCIndFinal) · **Tag do leiaute:** `indFinal` (grupo `infDPS/IBSCBS`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

      Operação de uso ou consumo pessoal (LC 214/2025, art. 57): "0" não · "1" sim

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCRTCInfoIBSCBS/indFinal (TSRTCIndFinal).*

      | Valor | Significado                                                 |
      | ----- | ----------------------------------------------------------- |
      | `0`   | Não é operação de uso ou consumo pessoal                    |
      | `1`   | Operação de uso ou consumo pessoal (LC 214/2025, artigo 57) |
    </ParamField>

    <ParamField path="ibsCbs.cIndOp" type="string" required>
      **Tamanho:** 6 dígitos (TSRTCCodIndOp) · **Tag do leiaute:** `cIndOp` (grupo `infDPS/IBSCBS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      Código indicador da operação de fornecimento (6 dígitos), conforme a tabela oficial "Código Indicador de Operação" (ANEXO\_C/AnexoVII do portal nacional da NFS-e). Obrigatório quando o bloco ibsCbs é enviado (padrão: `^\d{6}$`)

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCRTCInfoIBSCBS/cIndOp (TSRTCCodIndOp), conforme a tabela oficial de código indicador de operação.*
    </ParamField>

    <ParamField path="ibsCbs.tpOper" type="string">
      **Tamanho:** 1 dígito (TSRTCTpOper) · **Tag do leiaute:** `tpOper` (grupo `infDPS/IBSCBS`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

      Tipo de operação com entes governamentais ou serviços sobre bens imóveis: 1 fornecimento com pagamento posterior · 2 recebimento com fornecimento já realizado · 3 fornecimento com pagamento já realizado · 4 recebimento com fornecimento posterior · 5 fornecimento e recebimento concomitantes

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCRTCInfoIBSCBS/tpOper (TSRTCTpOper), operação com entes governamentais ou serviços sobre bens imóveis.*

      | Valor | Significado                               |
      | ----- | ----------------------------------------- |
      | `1`   | Fornecimento com pagamento posterior      |
      | `2`   | Recebimento com fornecimento já realizado |
      | `3`   | Fornecimento com pagamento já realizado   |
      | `4`   | Recebimento com fornecimento posterior    |
      | `5`   | Fornecimento e recebimento concomitantes  |
    </ParamField>

    <ParamField path="ibsCbs.tpEnteGov" type="string">
      **Tamanho:** 1 dígito (TSRTCTpEnteGov) · **Tag do leiaute:** `tpEnteGov` (grupo `infDPS/IBSCBS`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

      Tipo de ente governamental: 1 União · 2 Estado · 3 DF · 4 Município

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCRTCInfoIBSCBS/tpEnteGov (TSRTCTpEnteGov).*

      | Valor | Significado      |
      | ----- | ---------------- |
      | `1`   | União            |
      | `2`   | Estado           |
      | `3`   | Distrito Federal |
      | `4`   | Município        |
    </ParamField>

    <ParamField path="ibsCbs.indDest" type="string">
      **Tamanho:** 1 dígito (TSRTCIndDest) · **Tag do leiaute:** `indDest` (grupo `infDPS/IBSCBS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** preenchido automaticamente pela engineAPI

      Destinatário do serviço: "0" o destinatário é o próprio tomador (padrão) · "1" o destinatário é outra pessoa, o que exige o grupo `dest` do leiaute, ainda NÃO suportado por este motor, que recusa com 422 IBSCBS\_DPS\_DESTINATARIO\_NAO\_SUPORTADO em vez de emitir sem o grupo

      **Condição do leiaute:** O valor 1 exige o grupo de destinatário do leiaute, que este motor ainda não escreve: nesse caso a emissão recusa com 422 IBSCBS\_DPS\_DESTINATARIO\_NAO\_SUPORTADO em vez de emitir o documento sem o grupo.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCRTCInfoIBSCBS/indDest (TSRTCIndDest), elemento obrigatório. Ausente, a engineAPI escreve 0.*

      | Valor | Significado                        |
      | ----- | ---------------------------------- |
      | `0`   | O destinatário é o próprio tomador |
      | `1`   | O destinatário é outra pessoa      |
    </ParamField>

    <ParamField path="ibsCbs.cst" type="string" required>
      **Tamanho:** 3 dígitos (TSRTCCodSitTrib) · **Tag do leiaute:** `CST` (grupo `infDPS/IBSCBS/valores/trib/gIBSCBS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      Código de Situação Tributária do IBS/CBS (3 dígitos). Obrigatório quando o bloco ibsCbs é enviado (o motor não infere CST na NFS-e) (padrão: `^\d{3}$`)

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCRTCInfoTributosSitClas/CST (TSRTCCodSitTrib). A DPS declara a situação tributária: alíquota e valor de IBS/CBS são calculados pelo sistema nacional e não existem neste documento.*
    </ParamField>

    <ParamField path="ibsCbs.cClassTrib" type="string" required>
      **Tamanho:** 6 dígitos (TSRTCCodClassTrib) · **Tag do leiaute:** `cClassTrib` (grupo `infDPS/IBSCBS/valores/trib/gIBSCBS`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** você, na requisição

      Código de Classificação Tributária do IBS/CBS (6 dígitos). Obrigatório quando o bloco ibsCbs é enviado (padrão: `^\d{6}$`)

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCRTCInfoTributosSitClas/cClassTrib (TSRTCCodClassTrib).*
    </ParamField>

    <ParamField path="ibsCbs.cCredPres" type="string">
      **Tamanho:** 2 dígitos (TSRTCCodCredPres) · **Tag do leiaute:** `cCredPres` (grupo `infDPS/IBSCBS/valores/trib/gIBSCBS`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

      Código e classificação do crédito presumido de IBS/CBS (2 dígitos) (padrão: `^\d{2}$`)

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCRTCInfoTributosSitClas/cCredPres (TSRTCCodCredPres).*
    </ParamField>

    <ParamField path="ibsCbs.gTribRegular" type="object">
      **Tag do leiaute:** `gTribRegular` (grupo `infDPS/IBSCBS/valores/trib/gIBSCBS`) · **Obrigatoriedade do leiaute:** opcional no leiaute

      Tributação regular: a situação que valeria se o benefício não existisse

      **Condição do leiaute:** Opcional no leiaute: só é emitido quando a operação informa a tributação regular de referência.

      **Nota do leiaute:** Grupo, não campo: gTribRegular é o contêiner dos campos CSTReg e cClassTribReg.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCRTCInfoTributosSitClas/gTribRegular (minOccurs="0").*

      <Expandable title="2 campo(s)">
        <ParamField path="ibsCbs.gTribRegular.cstReg" type="string" required>
          **Tamanho:** 3 dígitos (TSRTCCodSitTrib) · **Tag do leiaute:** `CSTReg` (grupo `infDPS/IBSCBS/valores/trib/gIBSCBS/gTribRegular`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          CST do IBS/CBS que valeria na tributação regular (sem o benefício aplicado) (padrão: `^\d{3}$`)

          **Condição do leiaute:** Obrigatório dentro do grupo de tributação regular, que descreve a situação que valeria se o benefício não existisse.

          *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCRTCInfoTributosTribRegular/CSTReg (TSRTCCodSitTrib).*
        </ParamField>

        <ParamField path="ibsCbs.gTribRegular.cClassTribReg" type="string" required>
          **Tamanho:** 6 dígitos (TSRTCCodClassTrib) · **Tag do leiaute:** `cClassTribReg` (grupo `infDPS/IBSCBS/valores/trib/gIBSCBS/gTribRegular`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Código de classificação tributária do IBS/CBS na tributação regular (padrão: `^\d{6}$`)

          **Condição do leiaute:** Obrigatório dentro do grupo de tributação regular, ao lado do CSTReg.

          *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCRTCInfoTributosTribRegular/cClassTribReg (TSRTCCodClassTrib).*
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="ibsCbs.gDif" type="object">
      **Tag do leiaute:** `gDif` (grupo `infDPS/IBSCBS/valores/trib/gIBSCBS`) · **Obrigatoriedade do leiaute:** opcional no leiaute

      Diferimento do IBS/CBS. Os três percentuais (pDifUF, pDifMun, pDifCBS) são exigidos juntos pelo leiaute

      **Condição do leiaute:** Opcional no leiaute: quando o grupo existe, os três percentuais de diferimento são obrigatórios.

      **Nota do leiaute:** Grupo, não campo: gDif é o contêiner dos três percentuais.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCRTCInfoTributosSitClas/gDif (minOccurs="0").*

      <Expandable title="3 campo(s)">
        <ParamField path="ibsCbs.gDif.pDifUF" type="number" required>
          **Tamanho:** Até 3 dígitos inteiros e 2 decimais (TSDec3V2) · **Tag do leiaute:** `pDifUF` (grupo `infDPS/IBSCBS/valores/trib/gIBSCBS/gDif`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Percentual de diferimento do IBS estadual, em % (ex.: 30 para 30%). No máximo 2 casas decimais

          **Condição do leiaute:** O leiaute exige os três percentuais de diferimento juntos: informar um obriga a informar os outros dois.

          *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCRTCInfoTributosDif/pDifUF (TSDec3V2), IBS estadual. Percentual com mais de 2 casas é recusado, nunca arredondado.*
        </ParamField>

        <ParamField path="ibsCbs.gDif.pDifMun" type="number" required>
          **Tamanho:** Até 3 dígitos inteiros e 2 decimais (TSDec3V2) · **Tag do leiaute:** `pDifMun` (grupo `infDPS/IBSCBS/valores/trib/gIBSCBS/gDif`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Percentual de diferimento do IBS municipal, em %. No máximo 2 casas decimais

          **Condição do leiaute:** O leiaute exige os três percentuais de diferimento juntos: informar um obriga a informar os outros dois.

          *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCRTCInfoTributosDif/pDifMun (TSDec3V2), IBS municipal.*
        </ParamField>

        <ParamField path="ibsCbs.gDif.pDifCBS" type="number" required>
          **Tamanho:** Até 3 dígitos inteiros e 2 decimais (TSDec3V2) · **Tag do leiaute:** `pDifCBS` (grupo `infDPS/IBSCBS/valores/trib/gIBSCBS/gDif`) · **Obrigatoriedade do leiaute:** condicional no leiaute · **Preenche:** você, na requisição

          Percentual de diferimento da CBS, em %. No máximo 2 casas decimais

          **Condição do leiaute:** O leiaute exige os três percentuais de diferimento juntos: informar um obriga a informar os outros dois.

          *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCRTCInfoTributosDif/pDifCBS (TSDec3V2), CBS.*
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

<ParamField path="retencoes" type="object">
  **Tag do leiaute:** sem tag própria no XML · **Obrigatoriedade do leiaute:** não é campo do leiaute (informativo/de compatibilidade)

  **Nota do leiaute:** Grupo lógico da API para retenções. No XML da DPS os campos ficam em valores/trib/tribMun e valores/trib/tribFed.

  *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCInfoValores/trib (sem elemento retencoes; os campos ficam em tribMun e tribFed).*

  <Expandable title="7 campo(s)">
    <ParamField path="retencoes.issRetidoPor" type="string">
      **Tamanho:** 1 dígito (TSTipoRetISSQN) · **Tag do leiaute:** `tpRetISSQN` (grupo `infDPS/valores/trib/tribMun`) · **Obrigatoriedade do leiaute:** obrigatório no leiaute · **Preenche:** derivado de outros campos (calculado)

      Quem retém o ISS: "tomador" (tpRetISSQN=2) ou "intermediario" (tpRetISSQN=3). Ausente = não retido

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCTribMunicipal/tpRetISSQN (TSTipoRetISSQN). O leiaute não tem campo para o VALOR do ISS retido: o sistema nacional calcula o imposto e o inclui no total de retenções da NFS-e quando o indicador diz que houve retenção.*

      | Valor           | Significado                  |
      | --------------- | ---------------------------- |
      | `tomador`       | Escreve tpRetISSQN igual a 2 |
      | `intermediario` | Escreve tpRetISSQN igual a 3 |
    </ParamField>

    <ParamField path="retencoes.irrf" type="number">
      **Tamanho:** Até 15 dígitos inteiros e 2 decimais (TSDec15V2) · **Tag do leiaute:** `vRetIRRF` (grupo `infDPS/valores/trib/tribFed`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

      Valor retido em R\$, com no máximo 2 casas decimais. Vai para tribFed/vRetIRRF na DPS

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCTribFederal/vRetIRRF (TSDec15V2), "valor monetário do IRRF (R\$)". O valor vai como informado: nenhuma alíquota de retenção é aplicada pela engineAPI.*
    </ParamField>

    <ParamField path="retencoes.csll" type="number">
      **Tamanho:** Até 15 dígitos inteiros e 2 decimais (TSDec15V2) · **Tag do leiaute:** `vRetCSLL` (grupo `infDPS/valores/trib/tribFed`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

      Valor retido em R\$, com no máximo 2 casas decimais. Vai para tribFed/vRetCSLL na DPS

      **Condição do leiaute:** Quando dpsNacional.tpRetPisCofins afirma que a CSLL é retida (códigos 3, 7, 8 e 9), o valor passa a ser exigido: a divergência recusa com 422 RETENCAO\_PIS\_COFINS\_INCOERENTE.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCTribFederal/vRetCSLL (TSDec15V2), "valor monetário do CSLL (R\$)".*
    </ParamField>

    <ParamField path="retencoes.inss" type="number">
      **Tamanho:** Até 15 dígitos inteiros e 2 decimais (TSDec15V2) · **Tag do leiaute:** `vRetCP` (grupo `infDPS/valores/trib/tribFed`) · **Obrigatoriedade do leiaute:** opcional no leiaute · **Preenche:** você, na requisição

      Valor retido em R\$, com no máximo 2 casas decimais. Vai para tribFed/vRetCP (Contribuição Previdenciária) na DPS

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCTribFederal/vRetCP (TSDec15V2), "valor monetário do CP (R\$)", a contribuição previdenciária retida.*
    </ParamField>

    <ParamField path="retencoes.cofins" type="number">
      **Tamanho:** mínimo 0 · **Tag do leiaute:** sem tag própria no XML · **Obrigatoriedade do leiaute:** não é campo do leiaute (informativo/de compatibilidade) · **Preenche:** você, na requisição

      Sem campo de VALOR na DPS do Padrão Nacional (vCofins do leiaute é o débito de apuração própria, não a retenção): valor diferente de zero recusa com 422 RETENCAO\_SEM\_CAMPO\_NO\_LEIAUTE. No máximo 2 casas decimais. A retenção de PIS/COFINS se declara pelo indicador dpsNacional.tpRetPisCofins

      **Nota do leiaute:** A DPS não tem campo para o valor de COFINS retida. O vCofins do leiaute é o débito de apuração própria do prestador e fica fora do total de retenções da NFS-e. Valor diferente de zero recusa com 422 RETENCAO\_SEM\_CAMPO\_NO\_LEIAUTE: a retenção se declara pelo indicador dpsNacional.tpRetPisCofins.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCTribOutrosPisCofins/vCofins, documentado como "valor do débito de COFINS apuração própria (R\$)".*
    </ParamField>

    <ParamField path="retencoes.pis" type="number">
      **Tamanho:** mínimo 0 · **Tag do leiaute:** sem tag própria no XML · **Obrigatoriedade do leiaute:** não é campo do leiaute (informativo/de compatibilidade) · **Preenche:** você, na requisição

      Sem campo de VALOR na DPS do Padrão Nacional (vPis do leiaute é o débito de apuração própria, não a retenção): valor diferente de zero recusa com 422 RETENCAO\_SEM\_CAMPO\_NO\_LEIAUTE. No máximo 2 casas decimais. A retenção de PIS/COFINS se declara pelo indicador dpsNacional.tpRetPisCofins

      **Nota do leiaute:** A DPS não tem campo para o valor de PIS retido. O vPis do leiaute é o débito de apuração própria do prestador e fica fora do total de retenções da NFS-e. Valor diferente de zero recusa com 422 RETENCAO\_SEM\_CAMPO\_NO\_LEIAUTE, nunca é descartado em silêncio: a retenção se declara pelo indicador dpsNacional.tpRetPisCofins.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCTribOutrosPisCofins/vPis, documentado como "valor do débito de PIS apuração própria (R\$)". O total de retenções da NFS-e é a soma de vRetCP, vRetIRRF, vRetCSLL e do ISSQN.*
    </ParamField>

    <ParamField path="retencoes.outrasRetencoes" type="number">
      **Tamanho:** mínimo 0 · **Tag do leiaute:** sem tag própria no XML · **Obrigatoriedade do leiaute:** não é campo do leiaute (informativo/de compatibilidade) · **Preenche:** você, na requisição

      Sem campo de VALOR na DPS do Padrão Nacional (a DPS não tem campo de "outras retenções"): valor diferente de zero recusa com 422 RETENCAO\_SEM\_CAMPO\_NO\_LEIAUTE. No máximo 2 casas decimais. Informe o tributo no campo próprio: retencoes.inss, retencoes.irrf ou retencoes.csll

      **Nota do leiaute:** A DPS só comporta valor retido de contribuição previdenciária, IRRF e CSLL. Não existe campo de outras retenções: valor diferente de zero recusa com 422 RETENCAO\_SEM\_CAMPO\_NO\_LEIAUTE.

      *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): TCTribFederal tem apenas o grupo de PIS/COFINS, vRetCP, vRetIRRF e vRetCSLL.*
    </ParamField>
  </Expandable>
</ParamField>

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

  **Nota do leiaute:** Chave da engineAPI que liga a emissão assistida pelo Cérebro Fiscal. Não é campo do leiaute: muda quem preenche os códigos fiscais, não o conteúdo do documento.

  *Fonte do leiaute: tiposComplexos\_v1.01.xsd (NFSe-ESQUEMAS\_XSD-v1.01-20260209): não há elemento correspondente.*
</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                                                                           |
| ---------------- | ------------------------------------------------------------------------------------- |
| `cClassTrib`     | [`ibsCbs.cClassTrib`](#param-ibs-cbs-c-class-trib)                                    |
| `cClassTribReg`  | [`ibsCbs.gTribRegular.cClassTribReg`](#param-ibs-cbs-g-trib-regular-c-class-trib-reg) |
| `cCredPres`      | [`ibsCbs.cCredPres`](#param-ibs-cbs-c-cred-pres)                                      |
| `CEP`            | [`tomador.endereco.cep`](#param-tomador-endereco-cep)                                 |
| `cIndOp`         | [`ibsCbs.cIndOp`](#param-ibs-cbs-c-ind-op)                                            |
| `cLocPrestacao`  | [`servico.codigoMunicipio`](#param-servico-codigo-municipio)                          |
| `cMun`           | [`tomador.endereco.codigoMunicipio`](#param-tomador-endereco-codigo-municipio)        |
| `cNBS`           | [`servico.codigoNBS`](#param-servico-codigo-nbs)                                      |
| `CNPJ\|CPF`      | [`tomador.cnpjCpf`](#param-tomador-cnpj-cpf)                                          |
| `CST`            | [`dpsNacional.cstPisCofins`](#param-dps-nacional-cst-pis-cofins)                      |
| `CST`            | [`ibsCbs.cst`](#param-ibs-cbs-cst)                                                    |
| `CSTReg`         | [`ibsCbs.gTribRegular.cstReg`](#param-ibs-cbs-g-trib-regular-cst-reg)                 |
| `cTribMun`       | [`dpsNacional.cTribMun`](#param-dps-nacional-c-trib-mun)                              |
| `cTribMun`       | [`servico.codigoTributacaoMunicipio`](#param-servico-codigo-tributacao-municipio)     |
| `cTribNac`       | [`dpsNacional.cTribNac`](#param-dps-nacional-c-trib-nac)                              |
| `dCompet`        | [`competencia`](#param-competencia)                                                   |
| `email`          | [`tomador.email`](#param-tomador-email)                                               |
| `end`            | [`tomador.endereco`](#param-tomador-endereco)                                         |
| `finNFSe`        | [`ibsCbs.finNFSe`](#param-ibs-cbs-fin-nf-se)                                          |
| `fone`           | [`tomador.telefone`](#param-tomador-telefone)                                         |
| `gDif`           | [`ibsCbs.gDif`](#param-ibs-cbs-g-dif)                                                 |
| `gTribRegular`   | [`ibsCbs.gTribRegular`](#param-ibs-cbs-g-trib-regular)                                |
| `IBSCBS`         | [`ibsCbs`](#param-ibs-cbs)                                                            |
| `IM`             | [`tomador.inscricaoMunicipal`](#param-tomador-inscricao-municipal)                    |
| `indDest`        | [`ibsCbs.indDest`](#param-ibs-cbs-ind-dest)                                           |
| `indFinal`       | [`ibsCbs.indFinal`](#param-ibs-cbs-ind-final)                                         |
| `nro`            | [`tomador.endereco.numero`](#param-tomador-endereco-numero)                           |
| `opSimpNac`      | [`dpsNacional.opSimpNac`](#param-dps-nacional-op-simp-nac)                            |
| `pAliq`          | [`servico.aliquotaIss`](#param-servico-aliquota-iss)                                  |
| `pDifCBS`        | [`ibsCbs.gDif.pDifCBS`](#param-ibs-cbs-g-dif-p-dif-cbs)                               |
| `pDifMun`        | [`ibsCbs.gDif.pDifMun`](#param-ibs-cbs-g-dif-p-dif-mun)                               |
| `pDifUF`         | [`ibsCbs.gDif.pDifUF`](#param-ibs-cbs-g-dif-p-dif-uf)                                 |
| `pTotTribSN`     | [`dpsNacional.pTotTribSN`](#param-dps-nacional-p-tot-trib-sn)                         |
| `regApTribSN`    | [`dpsNacional.regApTribSN`](#param-dps-nacional-reg-ap-trib-sn)                       |
| `regEspTrib`     | [`dpsNacional.regEspTrib`](#param-dps-nacional-reg-esp-trib)                          |
| `serie`          | [`serie`](#param-serie)                                                               |
| `serv`           | [`servico`](#param-servico)                                                           |
| `toma`           | [`tomador`](#param-tomador)                                                           |
| `tpEnteGov`      | [`ibsCbs.tpEnteGov`](#param-ibs-cbs-tp-ente-gov)                                      |
| `tpOper`         | [`ibsCbs.tpOper`](#param-ibs-cbs-tp-oper)                                             |
| `tpRetISSQN`     | [`dpsNacional.tpRetISSQN`](#param-dps-nacional-tp-ret-issqn)                          |
| `tpRetISSQN`     | [`retencoes.issRetidoPor`](#param-retencoes-iss-retido-por)                           |
| `tpRetPisCofins` | [`dpsNacional.tpRetPisCofins`](#param-dps-nacional-tp-ret-pis-cofins)                 |
| `tribISSQN`      | [`dpsNacional.tribISSQN`](#param-dps-nacional-trib-issqn)                             |
| `vDescCond`      | [`servico.descontoCondicionado`](#param-servico-desconto-condicionado)                |
| `vDescIncond`    | [`servico.descontoIncondicionado`](#param-servico-desconto-incondicionado)            |
| `vDR`            | [`servico.valorDeducoes`](#param-servico-valor-deducoes)                              |
| `vRetCP`         | [`retencoes.inss`](#param-retencoes-inss)                                             |
| `vRetCSLL`       | [`retencoes.csll`](#param-retencoes-csll)                                             |
| `vRetIRRF`       | [`retencoes.irrf`](#param-retencoes-irrf)                                             |
| `vServ`          | [`servico.valorServicos`](#param-servico-valor-servicos)                              |
| `xBairro`        | [`tomador.endereco.bairro`](#param-tomador-endereco-bairro)                           |
| `xCpl`           | [`tomador.endereco.complemento`](#param-tomador-endereco-complemento)                 |
| `xDescServ`      | [`servico.discriminacao`](#param-servico-discriminacao)                               |
| `xInfComp`       | [`informacoesComplementares`](#param-informacoes-complementares)                      |
| `xLgr`           | [`tomador.endereco.logradouro`](#param-tomador-endereco-logradouro)                   |
| `xNome`          | [`tomador.razaoSocial`](#param-tomador-razao-social)                                  |

***

<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                                      |
| --------------------------------------------------------------- | ----------------------------------------- |
| [`dpsNacional.opSimpNac`](#param-dps-nacional-op-simp-nac)      | preenchido automaticamente pela engineAPI |
| [`dpsNacional.cTribNac`](#param-dps-nacional-c-trib-nac)        | preenchido automaticamente pela engineAPI |
| [`dpsNacional.tribISSQN`](#param-dps-nacional-trib-issqn)       | preenchido automaticamente pela engineAPI |
| [`dpsNacional.tpRetISSQN`](#param-dps-nacional-tp-ret-issqn)    | derivado de outros campos (calculado)     |
| [`dpsNacional.pTotTribSN`](#param-dps-nacional-p-tot-trib-sn)   | preenchido automaticamente pela engineAPI |
| [`tomador.cnpjCpf`](#param-tomador-cnpj-cpf)                    | derivado de outros campos (calculado)     |
| [`tomador.telefone`](#param-tomador-telefone)                   | derivado de outros campos (calculado)     |
| [`tomador.endereco.cep`](#param-tomador-endereco-cep)           | derivado de outros campos (calculado)     |
| [`servico.itemListaServico`](#param-servico-item-lista-servico) | preenchido automaticamente pela engineAPI |
| [`servico.codigoNBS`](#param-servico-codigo-nbs)                | preenchido automaticamente pela engineAPI |
| [`ibsCbs.finNFSe`](#param-ibs-cbs-fin-nf-se)                    | preenchido automaticamente pela engineAPI |
| [`ibsCbs.indDest`](#param-ibs-cbs-ind-dest)                     | preenchido automaticamente pela engineAPI |
| [`retencoes.issRetidoPor`](#param-retencoes-iss-retido-por)     | derivado de outros campos (calculado)     |

### Aceitos no contrato, com ressalva do leiaute

* [`rps.numero`](#param-rps-numero): O Padrão Nacional não tem RPS: a própria DPS é o documento de origem, e o número dela é alocado pela engineAPI por empresa e série. Enviar este campo na emissão nacional é recusado com 422, em vez de gerar uma nota sem o dado. Guarde a correspondência com o seu RPS pelo número da DPS devolvido na emissão.
* [`rps.serie`](#param-rps-serie): Série do RPS do modelo municipal, sem equivalente no Padrão Nacional. A série que vai para a DPS é o campo serie do topo do payload. Enviar este campo na emissão nacional é recusado com 422.
* [`rps.tipo`](#param-rps-tipo): Tipo de RPS do modelo municipal, sem equivalente no Padrão Nacional. Enviar este campo na emissão nacional é recusado com 422.
* [`rps`](#param-rps): Grupo do modelo municipal antigo. A DPS não possui contêiner de RPS porque a própria declaração é o documento de origem.
* [`dpsNacional`](#param-dps-nacional): Grupo lógico da API que organiza os campos fiscais do padrão nacional; no XML esses campos ficam distribuídos em prest/regTrib, serv/cServ e valores/trib.
* [`naturezaOperacao`](#param-natureza-operacao): Conceito do modelo municipal. No Padrão Nacional a natureza da operação é expressa pela tributação do ISSQN (dpsNacional.tribISSQN) e pelo local da prestação. Campo aceito por compatibilidade e não escrito no documento.
* [`regimeTributacao`](#param-regime-tributacao): Conceito do modelo municipal. No Padrão Nacional o regime vai no grupo prest/regTrib, alimentado por dpsNacional.opSimpNac, regApTribSN e regEspTrib. Campo aceito por compatibilidade e não escrito no documento.
* [`optanteSimples`](#param-optante-simples): Booleano do modelo municipal. O Padrão Nacional exige um código de três valores (não optante, MEI, ME/EPP), informado em dpsNacional.opSimpNac. Campo aceito por compatibilidade e não escrito no documento.
* [`exigibilidadeISS`](#param-exigibilidade-iss): Código do modelo municipal. No Padrão Nacional a exigibilidade se declara por dpsNacional.tribISSQN (tributável, imunidade, exportação, não incidência) e pelo grupo de exigibilidade suspensa, que este motor ainda não escreve. Campo aceito por compatibilidade e não escrito no documento.
* [`issuerId`](#param-issuer-id): Identificador da empresa emissora na engineAPI, não é campo do leiaute. É ele que determina o grupo prest (CNPJ ou CPF e regime) e o município emissor, lidos do cadastro.
* [`tomador.endereco.uf`](#param-tomador-endereco-uf): O endereço nacional da DPS tem apenas código do município e CEP: a UF é deduzida do código IBGE pelo sistema nacional. Campo aceito por compatibilidade e não escrito no documento.
* [`tomador.endereco`](#param-tomador-endereco): Grupo, não campo: end é o contêiner do endereço do tomador.
* [`tomador`](#param-tomador): Grupo, não campo: toma é o contêiner de identificação e endereço do tomador.
* [`servico.itemListaServico`](#param-servico-item-lista-servico): O Padrão Nacional identifica o serviço pelo código de tributação nacional de 6 dígitos (dpsNacional.cTribNac), não pelo item da lista no formato do modelo municipal. Este campo é a entrada do Cérebro Fiscal, que resolve o cTribNac quando resolverTributacao é true, mas não vira tag na DPS.
* [`servico.codigoCnae`](#param-servico-codigo-cnae): O leiaute da DPS não tem campo de CNAE. Campo aceito por compatibilidade com o modelo municipal e não escrito no documento.
* [`servico`](#param-servico): Grupo, não campo: serv é o contêiner dos dados do serviço.
* [`ibsCbs.gTribRegular`](#param-ibs-cbs-g-trib-regular): Grupo, não campo: gTribRegular é o contêiner dos campos CSTReg e cClassTribReg.
* [`ibsCbs.gDif`](#param-ibs-cbs-g-dif): Grupo, não campo: gDif é o contêiner dos três percentuais.
* [`ibsCbs`](#param-ibs-cbs): Grupo, não campo: IBSCBS é o contêiner do bloco da Reforma.
* [`retencoes.cofins`](#param-retencoes-cofins): A DPS não tem campo para o valor de COFINS retida. O vCofins do leiaute é o débito de apuração própria do prestador e fica fora do total de retenções da NFS-e. Valor diferente de zero recusa com 422 RETENCAO\_SEM\_CAMPO\_NO\_LEIAUTE: a retenção se declara pelo indicador dpsNacional.tpRetPisCofins.
* [`retencoes.pis`](#param-retencoes-pis): A DPS não tem campo para o valor de PIS retido. O vPis do leiaute é o débito de apuração própria do prestador e fica fora do total de retenções da NFS-e. Valor diferente de zero recusa com 422 RETENCAO\_SEM\_CAMPO\_NO\_LEIAUTE, nunca é descartado em silêncio: a retenção se declara pelo indicador dpsNacional.tpRetPisCofins.
* [`retencoes.outrasRetencoes`](#param-retencoes-outras-retencoes): A DPS só comporta valor retido de contribuição previdenciária, IRRF e CSLL. Não existe campo de outras retenções: valor diferente de zero recusa com 422 RETENCAO\_SEM\_CAMPO\_NO\_LEIAUTE.
* [`retencoes`](#param-retencoes): Grupo lógico da API para retenções. No XML da DPS os campos ficam em valores/trib/tribMun e valores/trib/tribFed.
* [`resolverTributacao`](#param-resolver-tributacao): Chave da engineAPI que liga a emissão assistida pelo Cérebro Fiscal. Não é campo do leiaute: muda quem preenche os códigos fiscais, não o conteúdo do documento.

### Não suportados hoje (fora do contrato)

| Termo(s) do leiaute               | Motivo                                                                                                                                                                                                                                                                                                                                                                                                           |
| --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `obra`, `ART`, `codigoobra`       | O grupo obra/ART (identificação da obra de construção civil e da Anotação de Responsabilidade Técnica do serviço) ainda não é suportado pela engineAPI. Serviço de construção civil que a prefeitura exige vincular a uma obra cadastrada não pode ser emitido com essa vinculação por enquanto.                                                                                                                 |
| `intermediario`                   | O grupo intermediario da NFS-e (identificação de quem intermediou a prestação do serviço, com CNPJ/CPF, nome e endereço) ainda não é suportado pela engineAPI. A RETENÇÃO pelo intermediário, essa sim, é suportada: informe `retencoes.issRetidoPor: "intermediario"` (vira tpRetISSQN=3 na DPS). O que não sai no documento é a identificação de quem reteve.                                                  |
| `nif`, `tomadorexterior`          | nif (Número de Identificação Fiscal do tomador no exterior) e o restante dos dados de tomador estrangeiro ainda não são suportados pela engineAPI. O `tomador` aceita hoje só `cnpjCpf` nacional; serviço exportado para tomador sem CNPJ/CPF brasileiro não pode ser emitido por enquanto.                                                                                                                      |
| `substituicaorps`, `substituicao` | A substituição de RPS (nova DPS que substitui um RPS/NFS-e já emitido, referenciando o número original) ainda não é suportada pela engineAPI. No Padrão Nacional a própria DPS ocupa o lugar do RPS e o leiaute não tem campo para o número dele (por isso `rps` é recusado nesse caminho); para corrigir um RPS ou NFS-e já emitido, use o cancelamento (POST /v1/nfse/:id/cancelar) e emita um novo documento. |
