Recomendações sobre Assinatura do XML e Envio do DPS

36 views
Skip to first unread message

wsnfsecampinas

unread,
Jul 17, 2026, 6:53:12 AM (3 days ago) Jul 17
to wsnfsecampinas
1. Regras Estruturais da Assinatura

1.1.   A tag infDPS deve conter o atributo Id preenchido corretamente conforme o exemplo:
<infDPS Id="DPS00001...">
Na estrutura da assinatura, referenciar como elemento o Id da TAG raiz, sendo assim o URI dentro do elemento <Reference> da assinatura deve apontar exatamente para esse Id precedido por uma hashtag: URI="#DPS00001..."
•   Id: Identificador único formado de acordo com a regra da documentação.


1.2.   O posicionamento do grupo de assinatura <Signature> deve ser inserida dentro do bloco principal da DPS e recomenda-se, por boa prática, gerar a assinatura sem prefixos de namespace:
<Signature>, e não <ds:Signature>.

• <DPS>
    <infDPS Id="DPS??????????????????????????????????????????">
       ... <!-- Dados da declaração de prestação de serviços... -->
    </infDPS>
        <!-- Bloco Assinatura XML Digital Signature (Obrigatório para o envio à API) -->
    <Signature>
   ... <!-- Tags geradas pelo seu certificado digital -->
   <Reference URI="#DPS??????????????????????????????????????????">
       ...
    </Signature>
  </DPS>

---
2. Algoritmos Utilizados (Padrão)
Padrão de assinatura dos documentos XML: XMLDSIG (https://www.w3.org/TR/xmldsig-core/)
Transformações (Transform): confirmadas como obrigatórias:
http://www.w3.org/2000/09/xmldsig#enveloped-signature
http://www.w3.org/TR/2001/REC-xml-c14n-20010315 (C14N)

---
3. Exemplo: Vide arquivo anexo Exemplo_XML-DPS.txt nesse post.

---
4. Identificador principal (Id) da DPS (AnexoI - LEIAUTE DPS_NFS-e - campo 101):
A string do identificador deve conter exatamente 45 posições.
Ele é formado obrigatoriamente pela concatenação, nesta ordem exata, das seguintes informações:
    - Prefixo Literal: "DPS" (3 posições).
    - Código do Município Emissor (cLocEmi): Código IBGE da cidade (7 posições).
    - Tipo de Inscrição Federal do Emitente: 1 para CPF ou 2 para CNPJ (1 posição).
    - Inscrição Federal do Emitente (CNPJ ou CPF): O número do documento (14 posições). Atenção: se for CPF, é obrigatório completar com zeros à esquerda até atingir as 14 posições.
    - Série da DPS (serie): (5 posições).
    - Número da DPS (nDPS): (15 posições).

---
5. Preenchimento das tags <cTribNac> e  <cTribMun>     
Pela documentação do layout nacional:
- Tag <cTribNac> (Código de Tributação Nacional do ISSQN)
Tamanho: Exatamente 6 caracteres.
- Tag <cTribMun> (Código de Tributação Municipal do ISSQN)  
Tamanho: Exatamente 3 caracteres.  

Exemplo: O código de tributação 120201001 é preenchido no XML-DPS:
<cTribNac>120201</cTribNac>
<cTribMun>001</cTribMun>

---
6. Transformação do XML para compor o JSON de envio (AnexoI e AnexoIV):
Assinatura Digital: O XML já deve estar devidamente assinado com o seu certificado digital (contendo a tag <Signature> referenciando o identificador da <infDPS>).
Codificação Padrão: O arquivo XML deve estar obrigatoriamente codificado no padrão UTF-8.
Compactação (GZIP): Todo o conteúdo do XML assinado deve ser compactado utilizando o formato GZIP.
Codificação (Base64): O arquivo binário resultante da compactação GZIP deve ser convertido para uma string em formato Base64.
Montagem do JSON e Envio: {"dpsXmlGZipB64": "H4sIAAAAAAAAA+1We...[string do XML compactado]...=="}
Envio do JSON utilizando o método POST para o endpoint https://preprod-nfse.ima.sp.gov.br/notafiscal-adn-ws/api/adn/dps

Exemplo_XML-DPS.txt
Reply all
Reply to author
Forward
This conversation is locked
You cannot reply and perform actions on locked conversations.
0 new messages