← Blog
NFS-e NacionalXMLDPSIntegração

Estrutura do XML da DPS da NFS-e Nacional: os grupos, os campos obrigatórios e a ordem de cada um

· 6 min de leitura

A DPS (Declaração de Prestação de Serviço) é o XML que o sistema do prestador envia ao Sistema Nacional para gerar a NFS-e. O schema dela é rígido em dois pontos que derrubam muita integração: quais campos são obrigatórios e a ordem em que eles aparecem dentro de cada grupo. Um campo certo, na posição errada, é rejeitado do mesmo jeito que um campo faltando. Este guia mostra os grupos principais na ordem do leiaute v1.01, com os obrigatórios marcados com asterisco.

O esqueleto da DPS

DPS
├─ infDPS
│  ├─ tpAmb *        ambiente (1 produção, 2 homologação)
│  ├─ dhEmi *        data e hora de emissão, com fuso
│  ├─ verAplic *     versão do sistema que gerou a DPS
│  ├─ serie *        série da DPS
│  ├─ nDPS *         número da DPS
│  ├─ dCompet *      competência, AAAA-MM-DD
│  ├─ tpEmit *       quem emite (1 = prestador)
│  ├─ cMotivoEmisTI  motivo, se emitida pelo tomador ou intermediário
│  ├─ chNFSeRej      chave da NFS-e rejeitada pelo tomador
│  ├─ cLocEmi *      código IBGE do município emissor
│  ├─ subst          NFS-e substituída
│  ├─ prest *        prestador
│  ├─ toma           tomador
│  ├─ interm         intermediário
│  ├─ serv *         serviço
│  ├─ valores *      valores e tributos
│  └─ IBSCBS         grupo do IBS e da CBS
└─ Signature         assinatura do infDPS

A assinatura digital (Signature) vem depois do infDPS, dentro da DPS, e assina o infDPS pelo atributo Id. O schema aceita a DPS sem assinatura, mas o Sistema Nacional exige a assinatura com o certificado do emitente.

Prestador: prest

Primeiro a identificação, que é uma escolha (um só entre CNPJ, CPF, NIF ou cNaoNIF), depois CAEPF, IM, xNome, end, fone, email e, por fim, o grupo obrigatório regTrib, com opSimpNac (obrigatório), regApTribSN e regEspTrib (obrigatório), nessa ordem.

Nome e endereço do prestador são opcionais no schema, mas não na regra: quando o próprio prestador emite, o Sistema Nacional usa o cadastro dele e recusa a DPS que traz esses dados (E0121, E0128). Opcional no XSD não quer dizer "pode mandar".

Tomador: toma

Mesma abertura do prestador (um entre CNPJ, CPF, NIF ou cNaoNIF), depois CAEPF, IM, xNome (obrigatório quando o grupo existe), end, fone e email. O grupo inteiro é opcional no schema, para os casos sem tomador identificado.

Serviço: serv

locPrest (obrigatório, o local da prestação), cServ (obrigatório), e depois os grupos opcionais comExt, obra, atvEvento e infoCompl. Dentro de cServ: cTribNac (obrigatório, os 6 dígitos do código nacional), cTribMun, xDescServ (obrigatório), cNBS e cIntContrib.

Valores e tributos: valores

vServPrest (obrigatório, com vReceb e o obrigatório vServ), depois vDescCondIncond, vDedRed e o obrigatório trib. Dentro de trib, três grupos nesta ordem: tribMun (obrigatório), tribFed e totTrib (obrigatório).

  • tribMun: tribISSQN (obrigatório), cPaisResult, tpImunidade, exigSusp, BM, tpRetISSQN (obrigatório) e pAliq.
  • totTrib: é uma escolha. Vai um só entre vTotTrib (valores), pTotTrib (percentuais), indTotTrib (indicador) e pTotTribSN (percentual do Simples).

IBS e CBS: IBSCBS

O grupo fica no fim do infDPS, depois de valores. No schema ele é opcional; quando a regra passa a exigir, e o que acontece com a nota sem ele até o fim de 2026, está em NFS-e sem IBS e CBS: rejeição e desconformidade.

Como conferir o seu XML

Cole a DPS (ou a NFS-e autorizada, que traz a DPS dentro) no validador de XML da DPS. Para cada erro de formato, ele mostra o grupo, a ordem dos campos desse grupo com o que está no seu XML e o que falta, e os valores aceitos. Veja como ler o resultado. Erros de formato voltam do Sistema Nacional como rejeição E1235.

Perguntas frequentes

A ordem dos campos importa no XML da DPS?

Sim. Cada grupo da DPS tem sequência fixa no schema, e um campo fora da posição é rejeitado (E1235) mesmo com o valor certo.

Onde fica a assinatura na DPS?

Depois do infDPS, dentro da DPS, assinando o infDPS pelo atributo Id. O schema aceita a DPS sem assinatura, mas o Sistema Nacional exige.

O tomador é obrigatório na DPS?

No schema, o grupo toma é opcional, para os casos sem tomador identificado. Quando ele vem, o nome (xNome) é obrigatório, e a identificação é uma só entre CNPJ, CPF, NIF ou o motivo de não ter NIF.

Prefere não montar XML? Na API de emissão da Sudrel você manda JSON com 4 campos para um tomador CNPJ, e a DPS sai montada nessa ordem, assinada e conferida.

Notas recebidas por API, sem montar o robô

API e webhook com as notas do Ambiente Nacional, e ambiente de teste para integrar sem risco. Teste grátis, sem cartão.

Criar conta e testar a API