Pular para o conteúdo principal

DPS por Web Service - Nota Nacional

A partir da necessidade de atender a Reforma Tributária e as adequações da Nota Nacional, o e-Nota passa a contemplar API para receber automaticamente as Declarações de Prestação de Serviço (DPS) enviadas por Web Service, pelos sistemas próprios dos prestadores de serviços.

Nesta página, você encontra todas as informações necessárias para configurar o recebimento das DPS no padrão adotado pela Betha Sistemas, incluindo layout, schema XML, documentação de integração e URLs de comunicação.

Importante

Conforme a Nota Técnica nº 004 – Versão 2.0 do Projeto Reforma Tributária do Consumo – Adequações NFS-e, publicada em 10/12/2025, informamos que, a partir de 01/01/2026, o ambiente nacional deixará de aplicar as regras de validação relativas à obrigatoriedade do grupo IBSCBS na DPS para geração da nota fiscal.

No layout da Betha, esse grupo continua disponível. Porém, caso o IBSCBS seja preenchido na DPS, o sistema apenas recepcionará o XML, sem realizar validações ou bloqueios relacionados a esse agrupamento. Nesse momento, a DPS será recepcionada, mas a nota fiscal gerada não exibirá as informações do IBSCBS.

Assim que o ambiente nacional retomar as validações para esse grupo, atualizaremos esta documentação.

Para acessar na íntegra a Nota Técnica Nº 004 clique aqui.

Layout da Betha Sistemas

O layout adotado pela Betha Sistemas para o recebimento das DPS segue o padrão oficial definido pela Receita Federal, contendo todas as implementações e atualizações previstas até a Nota Técnica nº 004 – Versão 1.1

📄 Baixar Layout | Layout oficial da Betha Sistemas para recepção das DPS.

📄 Baixar Layout | Layout oficial da Betha Sistemas para recepção do cancelamento e substituição das DPS.

Documentação Técnica - Web Service DPS (Declaração de Prestação de Serviço)

⚠️ Atenção: Este documentação está em construção e os dados descritos aqui podem mudar sem aviso prévio. Recomenda-se verificar periodicamente a tabela de alterações.

Nota: ⚠️ Atualmente o sistema apenas recepciona e valida a DPS. O processamento completo com geração de NFS-e será implementado em versão futura.

Este artigo tem como objetivo auxiliar desenvolvedores a prepararem seus sistemas para o processamento das DPS, apresentando as requisições e respostas esperadas para cada endpoint a ser consumido, juntamente com a descrição dos erros já mapeados.

Versionamento

VersãoDataAutorTipo de alteração
1.0.018/11/2025Douglas Felipe da SilvaDisponibilizado primeira versão do documento
1.1.018/11/2025Lucas CoelhoCorreções críticas e melhorias
1.1.519/11/2025Douglas Felipe da SilvaAdição de mais exemplos para endpoints e informações de assinatura/certificado
1.1.620/11/2025Douglas Felipe da SilvaAtualização do XML de envio para cancelamento e substituição e do WSDL

Índice


Ambientes

AmbientesURL BasetpAmbWSDL
Homologaçãohttps://nota-eletronica.betha.cloud/dps2/service.wsdl
Produçãohttps://nota-eletronica.betha.cloud/dps1/service.wsdl

Fluxo de Processamento

⚠️ IMPORTANTE: Processamento Assíncrono

O processamento da DPS é ASSÍNCRONO:

1. RecepcionarDps → Retorna protocolo imediatamente
Status: "Aguardando validação do ambiente nacional"

2. Sistema valida e armazena a DPS
- Valida estrutura XML
- Valida assinatura digital
- Valida campos obrigatórios
- Armazena o XML

3. ConsultarDps → Verifica status da recepção
Status: "Aguardando validação do ambiente nacional"

Fluxo de Recepção da DPS

graph LR
A[Assinar DPS] --> B[RecepcionarDps]
B --> C{Validação}
C -->|Sucesso| D[Recebe Protocolo]
C -->|Erro| E[Mensagem Erro]
D --> F[ConsultarDps]
F --> G[Status: Aguardando]

Fluxo de Cancelamento

graph LR
A[Ter NFS-e] --> B[RecepcionarEventoCancelamento]
B --> C{Validação}
C -->|Sucesso| D[Recebe Protocolo]
C -->|Erro| E[Mensagem Erro]

Padrão de Certificado Digital

Como forma de flexibilizar o uso do sistema, porém sem perder a segurança na comunicação entre contribuinte e prefeitura, existem dois tipos de certificados que poderão ser utilizados, o certificado ICP-Brasil (e-CPF , e-CNPJ, e-PJ) e o certificado Betha, no caso de o contribuinte ainda não possuir um certificado ICP-Brasil. Os certificados deverão ser dos tipos A1, A3. Os certificados digitais serão exigidos em dois momentos distintos para a integração entre o sistema do contribuinte e o Web Service das Secretarias Municipais de Fazenda:

  1. Assinatura de mensagens: O certificado digital utilizado para essa função deverá conter o CNPJ do estabelecimento emissor da NFS-e ou o CNPJ do estabelecimento matriz. O certificado digital deverá ter o “uso da chave” previsto para a função de assinatura digital, respeitando a Política do Certificado;
  2. Transmissão (durante a transmissão das mensagens entre os servidores do contribuinte e os serviços disponibilizados pelas Secretarias Municipais de Fazenda): O certificado digital utilizado para identificação do aplicativo do contribuinte deverá conter o CNPJ do responsável pela transmissão das mensagens, mas não necessita ser o mesmo CNPJ do estabelecimento emissor da NFS-e, devendo ter a extensão extended Key Usage com permissão de "Autenticação Cliente".

Padrão de Assinatura Digital

As mensagens enviadas aos serviços disponibilizados pelas Secretarias Municipais de Fazenda são documentos eletrônicos elaborados no padrão XML e devem ser assinados digitalmente com um certificado digital que contenha o CNPJ do estabelecimento matriz ou o CNPJ do estabelecimento emissor da NFS-e objeto do pedido. Para garantir minimamente a integridade das informações prestadas e a correta formação dos arquivos XML, o contribuinte deverá submeter as mensagens XML para validação pela linguagem de Schema do XML (XSD – XML Schema Definition), disponibilizada pelas Secretarias Municipais de Fazenda antes de seu envio. Os elementos abaixo estão presentes dentro do Certificado do contribuinte, tornando desnecessária a sua representação individualizada no arquivo XML. Portanto, o arquivo XML não deve conter os elementos:

<X509SubjectName>
<X509IssuerSerial>
<X509IssuerName>
<X509SerialNumber>
<X509SKI>

Deve-se evitar o uso das TAGs abaixo, pois as informações serão obtidas a partir do Certificado do emitente:

<KeyValue>
<RSAKeyValue>
<Modulus>
<Exponent>

Validação de Assinatura Digital pelo Web Service

Para a validação da assinatura digital, seguem as regras que serão adotadas pelas Secretarias Municipais de Fazenda:

  1. Extrair a chave pública do certificado;
  2. Verificar o prazo de validade do certificado utilizado;
  3. Montar e validar a cadeia de confiança dos certificados, validando também a LCR (Lista de Certificados Revogados) de cada certificado da cadeia;
  4. Validar o uso da chave utilizada (Assinatura Digital), de tal forma a aceitar certificados somente do tipo A (não serão aceitos certificados do tipo S);
  5. Garantir que o certificado utilizado é de um usuário final e não de uma Autoridade Certificadora;
  6. Adotar as regras definidas pelo RFC 3280 para LCR e cadeia de confiança;
  7. Validar a integridade de todas as LCRs utilizadas pelo sistema;
  8. Prazo de validade de cada LCR utilizada (verificar data inicial e final).

A forma de conferência da LCR fica a critério de cada Secretaria Municipal de Fazenda, podendo ser feita de duas maneiras: on-line ou download periódico. As assinaturas digitais das mensagens serão verificadas considerando o horário fornecido pelo Observatório Nacional.

Uso de Assinatura com Certificado Digital

Para garantir a autenticidade dos dados gerados, algumas informações deverão ser assinadas digitalmente. Abaixo segue as informações que deverão ser assinadas e quem deverá fazê-lo em cada momento:

  1. A DPS, pelo contribuinte, antes do envio do mesmo;
  2. O pedido de cancelamento da NFS-e, pelo contribuinte;
  3. A confirmação de cancelamento da NFS-e, pela prefeitura;
  4. O pedido de cancelamento por substituição pelo contribuinte;
  5. A confirmação do pedido de substituição pela prefeitura;

1. Endpoints para consumo

Abaixo serão apresentados os endpoints desenvolvidos e suas definições, juntamente com os XMLs de requisição e resposta e os erros esperados.

A URL base para todas as requisições é:

  • URL_BASE = https://nota-eletronica.betha.cloud/dps

1.1 Recepcionar uma DPS

Recepcionar uma DPS

1.1.1 Request

Para o Web Service recepcionar uma DPS, é necessário realizar uma requisição usando a {URL_BASE}/ws, enviando o seguinte exemplo XML com os dados da DPS:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:dps="http://www.betha.com.br/e-nota-dps"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<soapenv:Body>
<dps:RecepcionarDpsEnvio>
<dps:DPS versao="1.0">
<dps:infDPS id="DPS420540714183400300010800025000000000000001">
<dps:tpAmb>2</dps:tpAmb>
<dps:dhEmi>2025-11-19T19:49:48</dps:dhEmi>
<dps:verAplic>1.0</dps:verAplic>
<dps:serie>A25</dps:serie>
<dps:nDPS>1</dps:nDPS>
<dps:dCompet>2025-11-19</dps:dCompet>
<dps:tpEmit>1</dps:tpEmit>
<dps:cLocEmi>4205407</dps:cLocEmi>
<dps:prest>
<dps:CNPJ>41834003000108</dps:CNPJ>
<dps:regTrib>
<dps:opSimpNac>1</dps:opSimpNac>
<dps:regEspTrib>0</dps:regEspTrib>
</dps:regTrib>
</dps:prest>
<dps:serv>
<dps:locPrest>
<dps:cLocPrestacao>4205407</dps:cLocPrestacao>
</dps:locPrest>
<dps:cServ>
<dps:cTribNac>010101</dps:cTribNac>
<dps:xDescServ>Serviço de consultoria</dps:xDescServ>
<dps:cNBS>116010100</dps:cNBS>
</dps:cServ>
</dps:serv>
<dps:valores>
<dps:vServPrest>
<dps:vServ>1000.00</dps:vServ>
</dps:vServPrest>
<dps:trib>
<dps:tribMun>
<dps:tribISSQN>1</dps:tribISSQN>
</dps:tribMun>
<dps:totTrib>
<dps:indTotTrib>0</dps:indTotTrib>
</dps:totTrib>
</dps:trib>
</dps:valores>
</dps:infDPS>
<ds:Signature>
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference URI="#DPS420540714183400300010800025000000000000001">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>FAKE_DIGEST</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>FAKE_SIGNATURE</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>FAKE_CERTIFICATE</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</dps:DPS>
</dps:RecepcionarDpsEnvio>
</soapenv:Body>
</soapenv:Envelope>

1.1.2 Response

Caso a estrutura esteja válida, o retorno esperado será o XML:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<dps:RecepcionarDpsResposta xmlns:dps="http://www.betha.com.br/e-nota-dps">
<dps:protocolo>1abc123def456...</dps:protocolo>
<dps:dhRecebimento>2024-01-15T10:00:01</dps:dhRecebimento>
<dps:status>Aguardando validação do ambiente nacional</dps:status>
</dps:RecepcionarDpsResposta>
</soapenv:Body>
</soapenv:Envelope>

Caso contrário:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<dps:RecepcionarDpsResposta xmlns:dps="http://www.betha.com.br/e-nota-dps">
<dps:protocolo></dps:protocolo>
<dps:dhRecebimento>2024-01-15T10:00:01</dps:dhRecebimento>
<dps:status>Rejeitado</dps:status>
<dps:listaMensagens>
<dps:mensagem>
<dps:codigo>E022</dps:codigo>
<dps:mensagem>CNPJ do prestador inválido</dps:mensagem>
<dps:correcao>Verifique o CNPJ informado</dps:correcao>
</dps:mensagem>
</dps:listaMensagens>
</dps:RecepcionarDpsResposta>
</soapenv:Body>
</soapenv:Envelope>

1.1.3 Consulta simples

Para realizar uma consulta simples é necessário realizar uma requisição usando a {URL_BASE}/ws, enviando o seguinte exemplo XML:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:dps="http://www.betha.com.br/e-nota-dps">
<soapenv:Body>
<dps:ConsultarDpsEnvio>
<dps:protocolo>1abc123def456</dps:protocolo>
</dps:ConsultarDpsEnvio>
</soapenv:Body>
</soapenv:Envelope>

Você terá como resposta:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<dps:ConsultarDpsResposta xmlns:dps="http://www.betha.com.br/e-nota-dps">
<dps:protocolo>1abc123def456</dps:protocolo>
<dps:dhRecebimento>2024-01-15T10:00:01</dps:dhRecebimento>
<dps:status>Aguardando validação do ambiente nacional</dps:status>
<dps:idDps>DPS123456</dps:idDps>
</dps:ConsultarDpsResposta>
</soapenv:Body>
</soapenv:Envelope>

1.1.4 XSD

Para consultar o XSD, realize uma requisição para a URL base com a adição do seguinte caminho:

  • URL_BASE + /schemas/dps.xsd

O retorno será o seguinte XML:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
targetNamespace="http://www.betha.com.br/e-nota-dps"
xmlns:dps="http://www.betha.com.br/e-nota-dps"
elementFormDefault="qualified">

<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="extras/xmldsig-core-schema_v01.xsd"/>
<xs:include schemaLocation="consulta_status.xsd"/>

<!-- Mensagens SOAP -->
<xs:element name="RecepcionarDpsEnvio">
<xs:complexType>
<xs:sequence>
<xs:element name="DPS" type="dps:TDPS"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="RecepcionarDpsResposta">
<xs:complexType>
<xs:sequence>
<xs:element name="protocolo" type="xs:string"/>
<xs:element name="dhRecebimento" type="xs:dateTime"/>
<xs:element name="status" type="xs:string"/>
<xs:element name="listaMensagens" type="dps:TListaMensagens" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="ConsultarDpsEnvio">
<xs:complexType>
<xs:sequence>
<xs:element name="protocolo" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="ConsultarDpsResposta">
<xs:complexType>
<xs:sequence>
<xs:element name="protocolo" type="xs:string"/>
<xs:element name="dhRecebimento" type="xs:dateTime"/>
<xs:element name="status" type="xs:string"/>
<xs:element name="idDps" type="xs:string" minOccurs="0"/>
<xs:element name="listaMensagens" type="dps:TListaMensagens" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<!-- Tipos Complexos -->
<xs:complexType name="TDPS">
<xs:sequence>
<xs:element name="infDPS" type="dps:TInfDPS"/>
<xs:element ref="ds:Signature"/>
</xs:sequence>
<xs:attribute name="versao" type="xs:string" use="required"/>
</xs:complexType>

<xs:complexType name="TInfDPS">
<xs:sequence>
<xs:element name="tpAmb" type="dps:TTipoAmbiente"/>
<xs:element name="dhEmi" type="xs:dateTime"/>
<xs:element name="verAplic" type="xs:string"/>
<xs:element name="serie" type="dps:TSerie"/>
<xs:element name="nDPS" type="dps:TNumeroDPS"/>
<xs:element name="dCompet" type="xs:date"/>
<xs:element name="tpEmit" type="dps:TTipoEmitente"/>
<xs:element name="cMotivoEmisTI" type="xs:int" minOccurs="0"/>
<xs:element name="chNFSeRej" type="xs:string" minOccurs="0"/>
<xs:element name="cLocEmi" type="dps:TCodigoIbge"/>
<xs:element name="subst" type="dps:TSubstituicao" minOccurs="0"/>
<xs:element name="prest" type="dps:TPrestador"/>
<xs:element name="toma" type="dps:TTomador" minOccurs="0"/>
<xs:element name="interm" type="dps:TIntermediario" minOccurs="0"/>
<xs:element name="serv" type="dps:TServico"/>
<xs:element name="valores" type="dps:TValores"/>
<xs:element name="IBSCBS" type="dps:TIBSCBS" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required"/>
</xs:complexType>

<xs:complexType name="TSubstituicao">
<xs:sequence>
<xs:element name="chSubstda" type="xs:string"/>
<xs:element name="cMotivo" type="xs:int"/>
<xs:element name="xMotivo" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TPrestador">
<xs:sequence>
<xs:choice>
<xs:element name="CNPJ" type="dps:TCnpj"/>
<xs:element name="CPF" type="dps:TCpf"/>
<xs:element name="NIF" type="xs:string"/>
</xs:choice>
<xs:element name="cNaoNIF" type="xs:int" minOccurs="0"/>
<xs:element name="CAEPF" type="xs:string" minOccurs="0"/>
<xs:element name="IM" type="xs:string" minOccurs="0"/>
<xs:element name="xNome" type="xs:string" minOccurs="0"/>
<xs:element name="end" type="dps:TEndereco" minOccurs="0"/>
<xs:element name="fone" type="xs:string" minOccurs="0"/>
<xs:element name="email" type="xs:string" minOccurs="0"/>
<xs:element name="regTrib" type="dps:TRegimeTributario"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TTomador">
<xs:sequence>
<xs:choice>
<xs:element name="CNPJ" type="dps:TCnpj"/>
<xs:element name="CPF" type="dps:TCpf"/>
<xs:element name="NIF" type="xs:string"/>
</xs:choice>
<xs:element name="cNaoNIF" type="xs:int" minOccurs="0"/>
<xs:element name="CAEPF" type="xs:string" minOccurs="0"/>
<xs:element name="IM" type="xs:string" minOccurs="0"/>
<xs:element name="xNome" type="xs:string"/>
<xs:element name="end" type="dps:TEndereco" minOccurs="0"/>
<xs:element name="fone" type="xs:string" minOccurs="0"/>
<xs:element name="email" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TIntermediario">
<xs:sequence>
<xs:choice>
<xs:element name="CNPJ" type="dps:TCnpj"/>
<xs:element name="CPF" type="dps:TCpf"/>
<xs:element name="NIF" type="xs:string"/>
</xs:choice>
<xs:element name="cNaoNIF" type="xs:int" minOccurs="0"/>
<xs:element name="CAEPF" type="xs:string" minOccurs="0"/>
<xs:element name="IM" type="xs:string" minOccurs="0"/>
<xs:element name="xNome" type="xs:string"/>
<xs:element name="end" type="dps:TEndereco" minOccurs="0"/>
<xs:element name="fone" type="xs:string" minOccurs="0"/>
<xs:element name="email" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TEndereco">
<xs:sequence>
<xs:choice>
<xs:element name="endNac" type="dps:TEnderecoNacional"/>
<xs:element name="endExt" type="dps:TEnderecoExterior"/>
</xs:choice>
<xs:element name="xLgr" type="xs:string"/>
<xs:element name="nro" type="xs:string"/>
<xs:element name="xCpl" type="xs:string" minOccurs="0"/>
<xs:element name="xBairro" type="xs:string"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TEnderecoNacional">
<xs:sequence>
<xs:element name="cMun" type="xs:string"/>
<xs:element name="CEP" type="xs:string"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TEnderecoExterior">
<xs:sequence>
<xs:element name="cPais" type="xs:string"/>
<xs:element name="cEndPost" type="xs:string"/>
<xs:element name="xCidade" type="xs:string"/>
<xs:element name="xEstProvReg" type="xs:string"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TRegimeTributario">
<xs:sequence>
<xs:element name="opSimpNac" type="xs:int"/>
<xs:element name="regApTribSN" type="xs:int" minOccurs="0"/>
<xs:element name="regEspTrib" type="xs:int"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TServico">
<xs:sequence>
<xs:element name="locPrest" type="dps:TLocalPrestacao"/>
<xs:element name="cServ" type="dps:TCodigoServico"/>
<xs:element name="comExt" type="dps:TComercioExterior" minOccurs="0"/>
<xs:element name="obra" type="dps:TObra" minOccurs="0"/>
<xs:element name="atvEvento" type="dps:TAtividadeEvento" minOccurs="0"/>
<xs:element name="infoCompl" type="dps:TInformacoesComplementares" minOccurs="0"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TLocalPrestacao">
<xs:choice>
<xs:element name="cLocPrestacao" type="dps:TCodigoIbge"/>
<xs:element name="cPaisPrestacao" type="xs:string"/>
</xs:choice>
</xs:complexType>

<xs:complexType name="TCodigoServico">
<xs:sequence>
<xs:element name="cTribNac" type="dps:TCodigoTribNac"/>
<xs:element name="cTribMun" type="xs:string" minOccurs="0"/>
<xs:element name="xDescServ" type="xs:string"/>
<xs:element name="cNBS" type="dps:TCodigoNBS"/>
<xs:element name="cIntContrib" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TComercioExterior">
<xs:sequence>
<xs:element name="mdPrestacao" type="xs:int"/>
<xs:element name="vincPrest" type="xs:int"/>
<xs:element name="tpMoeda" type="xs:string"/>
<xs:element name="vServMoeda" type="xs:decimal"/>
<xs:element name="mecAFComexP" type="xs:int"/>
<xs:element name="mecAFComexT" type="xs:int"/>
<xs:element name="movTempBens" type="xs:int"/>
<xs:element name="nDI" type="xs:string" minOccurs="0"/>
<xs:element name="nRE" type="xs:string" minOccurs="0"/>
<xs:element name="mdic" type="xs:int"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TObra">
<xs:sequence>
<xs:element name="inscImobFisc" type="xs:string" minOccurs="0"/>
<xs:choice>
<xs:element name="cObra" type="xs:string"/>
<xs:element name="cCIB" type="xs:string"/>
</xs:choice>
<xs:element name="end" type="dps:TEnderecoObra"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TEnderecoObra">
<xs:sequence>
<xs:choice>
<xs:element name="CEP" type="xs:string"/>
<xs:element name="endExt" type="dps:TEnderecoExterior"/>
</xs:choice>
<xs:element name="xLgr" type="xs:string"/>
<xs:element name="nro" type="xs:string"/>
<xs:element name="xCpl" type="xs:string" minOccurs="0"/>
<xs:element name="xBairro" type="xs:string"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TAtividadeEvento">
<xs:sequence>
<xs:element name="xNome" type="xs:string"/>
<xs:element name="dtIni" type="xs:date"/>
<xs:element name="dtFim" type="xs:date"/>
<xs:choice>
<xs:element name="idAtvEvt" type="xs:string"/>
<xs:element name="end" type="dps:TEnderecoEvento"/>
</xs:choice>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TEnderecoEvento">
<xs:sequence>
<xs:choice>
<xs:element name="CEP" type="xs:string"/>
<xs:element name="endExt" type="dps:TEnderecoExterior"/>
</xs:choice>
<xs:element name="xLgr" type="xs:string"/>
<xs:element name="nro" type="xs:string"/>
<xs:element name="xCpl" type="xs:string" minOccurs="0"/>
<xs:element name="xBairro" type="xs:string"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TInformacoesComplementares">
<xs:sequence>
<xs:element name="idDocTec" type="xs:string" minOccurs="0"/>
<xs:element name="docRef" type="xs:string" minOccurs="0"/>
<xs:element name="xPed" type="xs:string" minOccurs="0"/>
<xs:element name="xInfComp" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TValores">
<xs:sequence>
<xs:element name="vServPrest" type="dps:TValoresServico"/>
<xs:element name="vDescCondIncond" type="dps:TDescontos" minOccurs="0"/>
<xs:element name="vDedRed" type="dps:TDeducoes" minOccurs="0"/>
<xs:element name="trib" type="dps:TTributacao"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TValoresServico">
<xs:sequence>
<xs:element name="vReceb" type="xs:decimal" minOccurs="0"/>
<xs:element name="vServ" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TDescontos">
<xs:sequence>
<xs:element name="vDescIncond" type="xs:decimal" minOccurs="0"/>
<xs:element name="vDescCond" type="xs:decimal" minOccurs="0"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TDeducoes">
<xs:choice>
<xs:element name="pDR" type="xs:decimal"/>
<xs:element name="vDR" type="xs:decimal"/>
<xs:element name="documentos" type="dps:TDocumentosDeducao"/>
</xs:choice>
</xs:complexType>

<xs:complexType name="TDocumentosDeducao">
<xs:sequence>
<xs:element name="docDedRed" type="dps:TDocumentoDeducao" maxOccurs="1000"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TDocumentoDeducao">
<xs:sequence>
<xs:choice>
<xs:element name="chNFSe" type="xs:string"/>
<xs:element name="chNFe" type="xs:string"/>
<xs:element name="NFSeMun" type="dps:TNFSeMunicipal"/>
<xs:element name="NFNFS" type="dps:TNFNFS"/>
<xs:element name="nDocFisc" type="xs:string"/>
<xs:element name="nDoc" type="xs:string"/>
</xs:choice>
<xs:element name="tpDedRed" type="xs:int"/>
<xs:element name="xDescOutDed" type="xs:string" minOccurs="0"/>
<xs:element name="dtEmiDoc" type="xs:date"/>
<xs:element name="vDedutivelRedutivel" type="xs:decimal"/>
<xs:element name="vDeducaoReducao" type="xs:decimal"/>
<xs:element name="fornec" type="dps:TFornecedor" minOccurs="0"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TNFSeMunicipal">
<xs:sequence>
<xs:element name="cMunNFSeMun" type="xs:string"/>
<xs:element name="nNFSeMun" type="xs:string"/>
<xs:element name="cVerifNFSeMun" type="xs:string"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TNFNFS">
<xs:sequence>
<xs:element name="nNFS" type="xs:string"/>
<xs:element name="modNFS" type="xs:string"/>
<xs:element name="serieNFS" type="xs:string"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TFornecedor">
<xs:sequence>
<xs:choice>
<xs:element name="CNPJ" type="dps:TCnpj"/>
<xs:element name="CPF" type="dps:TCpf"/>
<xs:element name="NIF" type="xs:string"/>
</xs:choice>
<xs:element name="cNaoNIF" type="xs:int" minOccurs="0"/>
<xs:element name="CAEPF" type="xs:string" minOccurs="0"/>
<xs:element name="IM" type="xs:string" minOccurs="0"/>
<xs:element name="xNome" type="xs:string"/>
<xs:element name="end" type="dps:TEndereco" minOccurs="0"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TTributacao">
<xs:sequence>
<xs:element name="tribMun" type="dps:TTributacaoMunicipal"/>
<xs:element name="tribFed" type="dps:TTributacaoFederal" minOccurs="0"/>
<xs:element name="totTrib" type="dps:TTotalTributos"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TTributacaoMunicipal">
<xs:sequence>
<xs:element name="tribISSQN" type="xs:int"/>
<xs:element name="cPaisResult" type="xs:string" minOccurs="0"/>
<xs:element name="BM" type="dps:TBeneficioMunicipal" minOccurs="0"/>
<xs:element name="exigSusp" type="dps:TExigibilidadeSuspensa" minOccurs="0"/>
<xs:element name="tpImunidade" type="xs:int" minOccurs="0"/>
<xs:element name="pAliq" type="xs:decimal" minOccurs="0"/>
<xs:element name="tpRetISSQN" type="xs:int" minOccurs="0"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TBeneficioMunicipal">
<xs:sequence>
<xs:element name="nBM" type="xs:string"/>
<xs:element name="vRedBCBM" type="xs:decimal" minOccurs="0"/>
<xs:element name="pRedBCBM" type="xs:decimal" minOccurs="0"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TExigibilidadeSuspensa">
<xs:sequence>
<xs:element name="tpSusp" type="xs:int"/>
<xs:element name="nProcesso" type="xs:string"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TTributacaoFederal">
<xs:sequence>
<xs:element name="piscofins" type="dps:TPisCofins" minOccurs="0"/>
<xs:element name="vRetCP" type="xs:decimal" minOccurs="0"/>
<xs:element name="vRetIRRF" type="xs:decimal" minOccurs="0"/>
<xs:element name="vRetCSLL" type="xs:decimal" minOccurs="0"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TPisCofins">
<xs:sequence>
<xs:element name="CST" type="xs:int"/>
<xs:element name="vBCPisCofins" type="xs:decimal" minOccurs="0"/>
<xs:element name="pAliqPis" type="xs:decimal" minOccurs="0"/>
<xs:element name="pAliqCofins" type="xs:decimal" minOccurs="0"/>
<xs:element name="vPis" type="xs:decimal" minOccurs="0"/>
<xs:element name="vCofins" type="xs:decimal" minOccurs="0"/>
<xs:element name="tpRetPisCofins" type="xs:int" minOccurs="0"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TTotalTributos">
<xs:sequence>
<xs:choice minOccurs="0">
<xs:element name="vTotTrib" type="dps:TValorTotalTributos"/>
<xs:element name="pTotTrib" type="dps:TPercentualTotalTributos"/>
</xs:choice>
<xs:element name="indTotTrib" type="xs:int" minOccurs="0"/>
<xs:element name="pTotTribSN" type="xs:decimal" minOccurs="0"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TValorTotalTributos">
<xs:sequence>
<xs:element name="vTotTribFed" type="xs:decimal"/>
<xs:element name="vTotTribEst" type="xs:decimal"/>
<xs:element name="vTotTribMun" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TPercentualTotalTributos">
<xs:sequence>
<xs:element name="pTotTribFed" type="xs:decimal"/>
<xs:element name="pTotTribEst" type="xs:decimal"/>
<xs:element name="pTotTribMun" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TIBSCBS">
<xs:sequence>
<xs:element name="finNFSe" type="xs:int"/>
<xs:element name="indFinal" type="xs:int"/>
<xs:element name="cIndOp" type="xs:string"/>
<xs:element name="tpOper" type="xs:int" minOccurs="0"/>
<xs:element name="tpEnteGov" type="xs:int" minOccurs="0"/>
<xs:element name="xTpEnteGov" type="xs:string" minOccurs="0"/>
<xs:element name="indPessoas" type="xs:int"/>
<xs:element name="dest" type="dps:TDestinatario" minOccurs="0"/>
<xs:element name="adq" type="dps:TAdquirente" minOccurs="0"/>
<xs:element name="valores" type="dps:TValoresIBSCBS"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TDestinatario">
<xs:sequence>
<xs:choice>
<xs:element name="CNPJ" type="dps:TCnpj"/>
<xs:element name="CPF" type="dps:TCpf"/>
<xs:element name="NIF" type="xs:string"/>
</xs:choice>
<xs:element name="cNaoNIF" type="xs:int" minOccurs="0"/>
<xs:element name="xNome" type="xs:string"/>
<xs:element name="end" type="dps:TEndereco" minOccurs="0"/>
<xs:element name="fone" type="xs:string" minOccurs="0"/>
<xs:element name="email" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TAdquirente">
<xs:sequence>
<xs:choice>
<xs:element name="CNPJ" type="dps:TCnpj"/>
<xs:element name="CPF" type="dps:TCpf"/>
<xs:element name="NIF" type="xs:string"/>
</xs:choice>
<xs:element name="cNaoNIF" type="xs:int" minOccurs="0"/>
<xs:element name="xNome" type="xs:string"/>
<xs:element name="end" type="dps:TEndereco" minOccurs="0"/>
<xs:element name="fone" type="xs:string" minOccurs="0"/>
<xs:element name="email" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TValoresIBSCBS">
<xs:sequence>
<xs:element name="trib" type="dps:TTributacaoIBSCBS"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TTributacaoIBSCBS">
<xs:sequence>
<xs:element name="gIBSCBS" type="dps:TGrupoIBSCBS"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TGrupoIBSCBS">
<xs:sequence>
<xs:element name="CST" type="xs:string"/>
<xs:element name="cClassTrib" type="xs:string"/>
<xs:element name="cCredPres" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TListaMensagens">
<xs:sequence>
<xs:element name="mensagem" type="dps:TMensagem" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TMensagem">
<xs:sequence>
<xs:element name="codigo" type="xs:string"/>
<xs:element name="mensagem" type="xs:string"/>
<xs:element name="correcao" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>

<!-- Tipos Simples -->
<xs:simpleType name="TTipoAmbiente">
<xs:restriction base="xs:int">
<xs:enumeration value="1"/>
<xs:enumeration value="2"/>
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="TTipoEmitente">
<xs:restriction base="xs:int">
<xs:enumeration value="1"/>
<xs:enumeration value="2"/>
<xs:enumeration value="3"/>
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="TCnpj">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{14}"/>
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="TCpf">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{11}"/>
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="TCodigoIbge">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{7}"/>
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="TCodigoTribNac">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{7}"/>
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="TCodigoNBS">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{9}"/>
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="TNumeroDPS">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{1,15}"/>
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="TSerie">
<xs:restriction base="xs:string">
<xs:maxLength value="5"/>
</xs:restriction>
</xs:simpleType>

</xs:schema>

1.2 Evento de Cancelamento

Evento de Cancelamento

1.2.1 Request

Para realizar o evento de cancelamento, dispare uma requisição para a {URL_BASE}/ws enviando o seguinte exemplo de XML com os atributos:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:evt="http://www.betha.com.br/e-nota-evento"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<soapenv:Body>
<evt:RecepcionarEventoCancelamentoEnvio>
<evt:evento versao="1.0">
<evt:infEvento>
<evt:pedRegEvento versao="1.0">
<evt:infPedReg id="PRE11364491232880086756610990131831494809895952589085136086">
<evt:chNFSe>75784196008174297293832837558053572654187911655557</evt:chNFSe>
<evt:CNPJAutor>41834003000108</evt:CNPJAutor>
<evt:dhEvento>2025-11-19T19:49:48</evt:dhEvento>
<evt:tpAmb>2</evt:tpAmb>
<evt:verAplic>1.0</evt:verAplic>
<evt:e105101>
<evt:xDesc>Cancelamento de NFS-e</evt:xDesc>
<evt:cMotivo>1</evt:cMotivo>
<evt:xMotivo>Erro na emissão da nota fiscal</evt:xMotivo>
</evt:e105101>
</evt:infPedReg>
<ds:Signature>
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference URI="#PRE11364491232880086756610990131831494809895952589085136086">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>FAKE_DIGEST</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>FAKE_SIGNATURE</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>FAKE_CERTIFICATE</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</evt:pedRegEvento>
</evt:infEvento>
<ds:Signature>
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>FAKE_DIGEST</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>FAKE_SIGNATURE</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>FAKE_CERTIFICATE</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</evt:evento>
</evt:RecepcionarEventoCancelamentoEnvio>
</soapenv:Body>
</soapenv:Envelope>

1.2.2 Response

Caso a estrutura esteja válida, o retorno esperado será:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<evt:RecepcionarEventoCancelamentoResposta xmlns:evt="http://www.betha.com.br/e-nota-evento">
<evt:protocolo>e9e648b0-ce82-4c28-9a00-997f3b23e35f</evt:protocolo>
<evt:dhRecebimento>2025-11-18T10:53:22.589-03:00</evt:dhRecebimento>
<evt:status>Aguardando validação do ambiente nacional</evt:status>
</evt:RecepcionarEventoCancelamentoResposta>
</soapenv:Body>
</soapenv:Envelope>

1.2.3 XSD

Para consultar o XSD, realize uma requisição para a URL base com a adição do seguinte caminho:

  • URL_BASE + /schemas/evento-cancelamento.xsd

O retorno será o seguinte XML:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
targetNamespace="http://www.betha.com.br/e-nota-evento"
xmlns:evt="http://www.betha.com.br/e-nota-evento"
elementFormDefault="qualified">

<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="extras/xmldsig-core-schema_v01.xsd"/>

<!-- Recepcionar Evento Cancelamento -->
<xs:element name="RecepcionarEventoCancelamentoEnvio">
<xs:complexType>
<xs:sequence>
<xs:element name="evento" type="evt:TEvento"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="RecepcionarEventoCancelamentoResposta">
<xs:complexType>
<xs:sequence>
<xs:element name="protocolo" type="xs:string"/>
<xs:element name="dhRecebimento" type="xs:dateTime"/>
<xs:element name="status" type="xs:string"/>
<xs:element name="listaMensagens" type="evt:TListaMensagens" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<!-- Consultar Evento -->
<xs:element name="ConsultarEventoCancelamentoEnvio">
<xs:complexType>
<xs:sequence>
<xs:element name="protocolo" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="ConsultarEventoCancelamentoResposta">
<xs:complexType>
<xs:sequence>
<xs:element name="protocolo" type="xs:string"/>
<xs:element name="dhRecebimento" type="xs:dateTime"/>
<xs:element name="status" type="xs:string"/>
<xs:element name="idEvento" type="xs:string" minOccurs="0"/>
<xs:element name="listaMensagens" type="evt:TListaMensagens" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<!-- Tipos -->
<xs:complexType name="TEvento">
<xs:sequence>
<xs:element name="infEvento" type="evt:TInfEvento"/>
<xs:element ref="ds:Signature"/>
</xs:sequence>
<xs:attribute name="versao" type="xs:string" use="required"/>
</xs:complexType>

<xs:complexType name="TInfEvento">
<xs:sequence>
<xs:element name="verAplic" type="xs:string" minOccurs="0"/>
<xs:element name="ambGer" type="xs:int"/>
<xs:element name="nSeqEvento" type="xs:int"/>
<xs:element name="dhProc" type="xs:dateTime"/>
<xs:element name="nDFe" type="xs:string"/>
<xs:element name="pedRegEvento" type="evt:TPedRegEvento"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required"/>
</xs:complexType>

<xs:complexType name="TPedRegEvento">
<xs:sequence>
<xs:element name="infPedReg" type="evt:TInfPedReg"/>
<xs:element ref="ds:Signature"/>
</xs:sequence>
<xs:attribute name="versao" type="xs:string" use="required"/>
</xs:complexType>

<xs:complexType name="TInfPedReg">
<xs:sequence>
<xs:element name="chNFSe" type="evt:TChNFSe"/>
<xs:element name="CNPJAutor" type="evt:TCnpj" minOccurs="0"/>
<xs:element name="CPFAutor" type="evt:TCpf" minOccurs="0"/>
<xs:element name="dhEvento" type="xs:dateTime"/>
<xs:element name="tpAmb" type="xs:int"/>
<xs:element name="verAplic" type="xs:string"/>
<xs:element name="e105101" type="evt:TEventoCancelamento"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required"/>
</xs:complexType>

<xs:simpleType name="TCnpj">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{14}"/>
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="TCpf">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{11}"/>
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="TChNFSe">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{50}"/>
</xs:restriction>
</xs:simpleType>

<xs:complexType name="TEventoCancelamento">
<xs:sequence>
<xs:element name="xDesc" type="xs:string"/>
<xs:element name="cMotivo" type="xs:int"/>
<xs:element name="xMotivo" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TListaMensagens">
<xs:sequence>
<xs:element name="mensagem" type="evt:TMensagem" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TMensagem">
<xs:sequence>
<xs:element name="codigo" type="xs:string"/>
<xs:element name="mensagem" type="xs:string"/>
<xs:element name="correcao" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>

</xs:schema>

1.3 Evento de Cancelamento por Substituição

Evento de Cancelamento por Substituição

1.3.1 Request

Para realizar o evento de cancelamento, realizar uma requisição para a {URL_BASE}/ws enviando o seguinte exemplo de XML com os atributos:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:evt="http://www.betha.com.br/e-nota-evento"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<soapenv:Body>
<evt:RecepcionarEventoSubstituicaoEnvio>
<evt:evento versao="1.0">
<evt:infEvento>
<evt:pedRegEvento versao="1.0">
<evt:infPedReg id="PRE69485949871120824034523603135600146213928773315314678175">
<evt:chNFSe>75784196008174297293832837558053572654187911655557</evt:chNFSe>
<evt:CNPJAutor>41834003000108</evt:CNPJAutor>
<evt:dhEvento>2025-11-19T19:49:48</evt:dhEvento>
<evt:tpAmb>2</evt:tpAmb>
<evt:verAplic>1.0</evt:verAplic>
<evt:e105102>
<evt:xDesc>Substituição de NFS-e</evt:xDesc>
<evt:cMotivo>1</evt:cMotivo>
<evt:xMotivo>Erro no valor do serviço prestado</evt:xMotivo>
<evt:chSubstituta>95335128329594742724176082995657747392361891617882</evt:chSubstituta>
</evt:e105102>
</evt:infPedReg>
<ds:Signature>
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference URI="#PRE69485949871120824034523603135600146213928773315314678175">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>FAKE_DIGEST</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>FAKE_SIGNATURE</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>FAKE_CERTIFICATE</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</evt:pedRegEvento>
</evt:infEvento>
<ds:Signature>
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>FAKE_DIGEST</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>FAKE_SIGNATURE</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>FAKE_CERTIFICATE</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</evt:evento>
</evt:RecepcionarEventoSubstituicaoEnvio>
</soapenv:Body>
</soapenv:Envelope>

1.3.2 Response

Caso a estrutura esteja válida, o retorno esperado será:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<evt:RecepcionarEventoSubstituicaoResposta xmlns:evt="http://www.betha.com.br/e-nota-evento">
<evt:protocolo>35e5d630-896e-4d22-a563-b57a7793eada</evt:protocolo>
<evt:dhRecebimento>2025-11-18T10:54:56.294-03:00</evt:dhRecebimento>
<evt:status>Aguardando validação do ambiente nacional</evt:status>
</evt:RecepcionarEventoSubstituicaoResposta>
</soapenv:Body>
</soapenv:Envelope>

1.3.3 XSD

Para consultar o XSD, realize uma requisição para a URL base com a adição do seguinte caminho:

  • URL_BASE + /schemas/evento-substituicao.xsd

O retorno será o seguinte XML:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
targetNamespace="http://www.betha.com.br/e-nota-evento"
xmlns:evt="http://www.betha.com.br/e-nota-evento"
elementFormDefault="qualified">

<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="extras/xmldsig-core-schema_v01.xsd"/>

<!-- Recepcionar Evento Substituição -->
<xs:element name="RecepcionarEventoSubstituicaoEnvio">
<xs:complexType>
<xs:sequence>
<xs:element name="evento" type="evt:TEvento"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="RecepcionarEventoSubstituicaoResposta">
<xs:complexType>
<xs:sequence>
<xs:element name="protocolo" type="xs:string"/>
<xs:element name="dhRecebimento" type="xs:dateTime"/>
<xs:element name="status" type="xs:string"/>
<xs:element name="listaMensagens" type="evt:TListaMensagens" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<!-- Consultar Evento -->
<xs:element name="ConsultarEventoEnvio">
<xs:complexType>
<xs:sequence>
<xs:element name="protocolo" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="ConsultarEventoResposta">
<xs:complexType>
<xs:sequence>
<xs:element name="protocolo" type="xs:string"/>
<xs:element name="dhRecebimento" type="xs:dateTime"/>
<xs:element name="status" type="xs:string"/>
<xs:element name="idEvento" type="xs:string" minOccurs="0"/>
<xs:element name="listaMensagens" type="evt:TListaMensagens" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<!-- Tipos -->
<xs:complexType name="TEvento">
<xs:sequence>
<xs:element name="infEvento" type="evt:TInfEvento"/>
<xs:element ref="ds:Signature"/>
</xs:sequence>
<xs:attribute name="versao" type="xs:string" use="required"/>
</xs:complexType>

<xs:complexType name="TInfEvento">
<xs:sequence>
<xs:element name="verAplic" type="xs:string" minOccurs="0"/>
<xs:element name="ambGer" type="xs:int"/>
<xs:element name="nSeqEvento" type="xs:int"/>
<xs:element name="dhProc" type="xs:dateTime"/>
<xs:element name="nDFe" type="xs:string"/>
<xs:element name="pedRegEvento" type="evt:TPedRegEvento"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required"/>
</xs:complexType>

<xs:complexType name="TPedRegEvento">
<xs:sequence>
<xs:element name="infPedReg" type="evt:TInfPedReg"/>
<xs:element ref="ds:Signature"/>
</xs:sequence>
<xs:attribute name="versao" type="xs:string" use="required"/>
</xs:complexType>

<xs:complexType name="TInfPedReg">
<xs:sequence>
<xs:element name="chNFSe" type="evt:TChNFSe"/>
<xs:element name="CNPJAutor" type="evt:TCnpj" minOccurs="0"/>
<xs:element name="CPFAutor" type="evt:TCpf" minOccurs="0"/>
<xs:element name="dhEvento" type="xs:dateTime"/>
<xs:element name="tpAmb" type="xs:int"/>
<xs:element name="verAplic" type="xs:string"/>
<xs:element name="e105102" type="evt:TEventoSubstituicao"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required"/>
</xs:complexType>

<xs:complexType name="TEventoSubstituicao">
<xs:sequence>
<xs:element name="xDesc" type="xs:string"/>
<xs:element name="cMotivo" type="xs:int"/>
<xs:element name="xMotivo" type="xs:string" minOccurs="0"/>
<xs:element name="chSubstituta" type="evt:TChNFSe"/>
</xs:sequence>
</xs:complexType>

<xs:simpleType name="TCnpj">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{14}"/>
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="TCpf">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{11}"/>
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="TChNFSe">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{50}"/>
</xs:restriction>
</xs:simpleType>

<xs:complexType name="TListaMensagens">
<xs:sequence>
<xs:element name="mensagem" type="evt:TMensagem" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TMensagem">
<xs:sequence>
<xs:element name="codigo" type="xs:string"/>
<xs:element name="mensagem" type="xs:string"/>
<xs:element name="correcao" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>

</xs:schema>

1.4 Consulta do Status da DPS (Consulta Detalhada)

Consulta do Status da DPS

1.4.1 Request

A Consulta do Status da DPS é dividida em três devido ao TipoIntegracao, sendo possível consultar de acordo com os valores abaixo:

TipoEvento/Integração
EMISSAOEmissão da DPS
CANCELAMENTOCancelamento
CANCELAMENTO_POR_SUBSTICAOCancelamento por Substituição

Para realizar a consulta do status, envie uma requisição para a {URL_BASE}/ws usando os seguintes exemplos de XML com os atributos:

1.4.1.1 Emissão
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:dps="http://www.betha.com.br/e-nota-dps">
<soapenv:Body>
<dps:ConsultarStatusDpsEnvio>
<dps:codigoIbge>4205407</dps:codigoIbge>
<dps:cpfCnpjPrestador>11222333000181</dps:cpfCnpjPrestador>
<dps:protocolo>{{protocolo}}</dps:protocolo>
<dps:tipoIntegracao>EMISSAO</dps:tipoIntegracao>
</dps:ConsultarStatusDpsEnvio>
</soapenv:Body>
</soapenv:Envelope>"
1.4.1.2 Cancelamento
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:dps="http://www.betha.com.br/e-nota-dps">
<soapenv:Body>
<dps:ConsultarStatusDpsEnvio>
<dps:codigoIbge>4205407</dps:codigoIbge>
<dps:cpfCnpjPrestador>11222333000181</dps:cpfCnpjPrestador>
<dps:protocolo>{{protocolo}}</dps:protocolo>
<dps:tipoIntegracao>CANCELAMENTO</dps:tipoIntegracao>
</dps:ConsultarStatusDpsEnvio>
</soapenv:Body>
</soapenv:Envelope>"
1.4.1.3 Cancelamento por Substituição
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:dps="http://www.betha.com.br/e-nota-dps">
<soapenv:Body>
<dps:ConsultarStatusDpsEnvio>
<dps:codigoIbge>4205407</dps:codigoIbge>
<dps:cpfCnpjPrestador>11222333000181</dps:cpfCnpjPrestador>
<dps:protocolo>{{protocolo}}</dps:protocolo>
<dps:tipoIntegracao>CANCELAMENTO_POR_SUBSTITUICAO</dps:tipoIntegracao>
</dps:ConsultarStatusDpsEnvio>
</soapenv:Body>
</soapenv:Envelope>"

1.4.2 Response

Atualmente a resposta da consulta pode retornar uma das três mensagens (statuses) abaixo:

MensagemSignificado
Processado com sucessoAmbiente nacional processou com sucesso
Processado com erroAmbiente nacional processou com erro
Aguardando validação do ambiente nacionalValidação pendente no Ambiente Nacional

Cada status retorna XMLs de respostas diferentes.

1.4.2.1 Emissão

Se a emissão da DPS ocorreu com sucesso:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns2:ConsultarStatusDpsEmissaoResposta xmlns:ns2="http://www.betha.com.br/e-nota-dps">
<ns2:statusProcessamento>Processado com sucesso</ns2:statusProcessamento>
<ns2:dataHoraRecebimento>2025-11-12T10:51:14.997-03:00</ns2:dataHoraRecebimento>
<ns2:protocolo>d31fab23-accd-4269-888c-a5b78505d054</ns2:protocolo>
<ns2:idDps>91d9b79d-da8b-4713-8fb6-5702782133ca</ns2:idDps>
<ns2:chaveAcesso>0123456789012345678901234567980132456789</ns2:chaveAcesso>
<ns2:numeroDps>001/2025</ns2:numeroDps>
<ns2:serieDps>A25</ns2:serieDps>
<ns2:numeroNotaFiscal>198954</ns2:numeroNotaFiscal>
<ns2:linkPdf>https://notas.prefeitura.gov.br/pdf/NF-12345.pdf</ns2:linkPdf>
</ns2:ConsultarStatusDpsEmissaoResposta>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Se a emissão da DPS estiver com erro:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns2:ConsultarStatusDpsEmissaoResposta xmlns:ns2="http://www.betha.com.br/e-nota-dps">
<ns2:statusProcessamento>Processado com erro</ns2:statusProcessamento>
<ns2:dataHoraRecebimento>2025-11-17T12:40:39.000-03:00</ns2:dataHoraRecebimento>
<ns2:protocolo>PROTO456</ns2:protocolo>
<ns2:mensagemErro>Mensagem de erro</ns2:mensagemErro>
<ns2:idDps>DPS002</ns2:idDps>
</ns2:ConsultarStatusDpsEmissaoResposta>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Se a emissão da DPS está sendo validada no ambiente nacional:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns2:ConsultarStatusDpsEmissaoResposta xmlns:ns2="http://www.betha.com.br/e-nota-dps">
<ns2:statusProcessamento>Aguardando validação do ambiente nacional</ns2:statusProcessamento>
<ns2:dataHoraRecebimento>2025-11-17T14:30:39.000-03:00</ns2:dataHoraRecebimento>
<ns2:protocolo>PROTO999</ns2:protocolo>
<ns2:idDps>DPS004</ns2:idDps>
</ns2:ConsultarStatusDpsEmissaoResposta>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
1.4.2.2 Cancelamento

Se o cancelamento ocorreu com sucesso:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns2:ConsultarStatusDpsCancelamentoResposta xmlns:ns2="http://www.betha.com.br/e-nota-dps">
<ns2:statusProcessamento>Processado com sucesso</ns2:statusProcessamento>
<ns2:dataHoraRecebimento>2025-11-12T10:53:22.589-03:00</ns2:dataHoraRecebimento>
<ns2:protocolo>e9e648b0-ce82-4c28-9a00-997f3b23e35f</ns2:protocolo>
<ns2:idCancelamento>71675323-da47-43a4-a70d-3345fc406868</ns2:idCancelamento>
<ns2:chaveAcesso>0123456789012345678901234567980132456789</ns2:chaveAcesso>
<ns2:numeroNotaFiscal>198954</ns2:numeroNotaFiscal>
<ns2:linkPdf>https://notas.prefeitura.gov.br/pdf/NF-198954.pdf</ns2:linkPdf>
</ns2:ConsultarStatusDpsCancelamentoResposta>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Se o cancelamento resultou em erro:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns2:ConsultarStatusDpsCancelamentoResposta xmlns:ns2="http://www.betha.com.br/e-nota-dps">
<ns2:statusProcessamento>Processado com erro</ns2:statusProcessamento>
<ns2:dataHoraRecebimento>2025-11-12T10:53:22.589-03:00</ns2:dataHoraRecebimento>
<ns2:protocolo>e9e648b0-ce82-4c28-9a00-997f3b23e35f</ns2:protocolo>
<ns2:mensagemErro>Mensagem de erro</ns2:mensagemErro>
<ns2:idCancelamento>71675323-da47-43a4-a70d-3345fc406868</ns2:idCancelamento>
</ns2:ConsultarStatusDpsCancelamentoResposta>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Se o cancelamento está pendente de validação:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns2:ConsultarStatusDpsCancelamentoResposta xmlns:ns2="http://www.betha.com.br/e-nota-dps">
<ns2:statusProcessamento>Aguardando validação do ambiente nacional</ns2:statusProcessamento>
<ns2:dataHoraRecebimento>2025-11-12T10:53:22.589-03:00</ns2:dataHoraRecebimento>
<ns2:protocolo>e9e648b0-ce82-4c28-9a00-997f3b23e35f</ns2:protocolo>
<ns2:idCancelamento>71675323-da47-43a4-a70d-3345fc406868</ns2:idCancelamento>
</ns2:ConsultarStatusDpsCancelamentoResposta>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
1.4.2.3 Cancelamento por Substituição

Se a substituição ocorreu com sucesso:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns2:ConsultarStatusDpsCancelamentoSubstituicaoResposta xmlns:ns2="http://www.betha.com.br/e-nota-dps">
<ns2:statusProcessamento>Processado com sucesso</ns2:statusProcessamento>
<ns2:dataHoraRecebimento>2025-11-12T10:54:56.294-03:00</ns2:dataHoraRecebimento>
<ns2:protocolo>35e5d630-896e-4d22-a563-b57a7793eada</ns2:protocolo>
<ns2:idCancelamentoSubstituicao>daa968e6-f1a7-4a15-b3ad-bfe473232239</ns2:idCancelamentoSubstituicao>
<ns2:chaveAcessoSubstituida>0123456789012345678901234567980132456789</ns2:chaveAcessoSubstituida>
<ns2:numeroNotaFiscalSubstituida>198954</ns2:numeroNotaFiscalSubstituida>
<ns2:linkPdfSubstituida>https://notas.prefeitura.gov.br/pdf/NF-198954.pdf</ns2:linkPdfSubstituida>
<ns2:chaveAcessoSubstituta>98765431098765432109876543210</ns2:chaveAcessoSubstituta>
<ns2:numeroNotaFiscalSubstituta>198955</ns2:numeroNotaFiscalSubstituta>
<ns2:linkPdfSubstituta>https://notas.prefeitura.gov.br/pdf/NF-198955.pdf</ns2:linkPdfSubstituta>
</ns2:ConsultarStatusDpsCancelamentoSubstituicaoResposta>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Se a substituição resultou em erro:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns2:ConsultarStatusDpsCancelamentoSubstituicaoResposta xmlns:ns2="http://www.betha.com.br/e-nota-dps">
<ns2:statusProcessamento>Processado com erro</ns2:statusProcessamento>
<ns2:dataHoraRecebimento>2025-11-12T10:54:56.294-03:00</ns2:dataHoraRecebimento>
<ns2:protocolo>35e5d630-896e-4d22-a563-b57a7793eada</ns2:protocolo>
<ns2:mensagemErro>Mensagem de erro</ns2:mensagemErro>
<ns2:idCancelamentoSubstituicao>daa968e6-f1a7-4a15-b3ad-bfe473232239</ns2:idCancelamentoSubstituicao>
</ns2:ConsultarStatusDpsCancelamentoSubstituicaoResposta>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Se a substituição está pendente de validação:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns2:ConsultarStatusDpsCancelamentoSubstituicaoResposta xmlns:ns2="http://www.betha.com.br/e-nota-dps">
<ns2:statusProcessamento>Aguardando validação do ambiente nacional</ns2:statusProcessamento>
<ns2:dataHoraRecebimento>2025-11-12T10:54:56.294-03:00</ns2:dataHoraRecebimento>
<ns2:protocolo>35e5d630-896e-4d22-a563-b57a7793eada</ns2:protocolo>
<ns2:idCancelamentoSubstituicao>daa968e6-f1a7-4a15-b3ad-bfe473232239</ns2:idCancelamentoSubstituicao>
</ns2:ConsultarStatusDpsCancelamentoSubstituicaoResposta>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

1.4.3 XSD

Para consultar o XSD, realize uma requisição para a URL base com a adição do seguinte caminho:

  • URL_BASE + /schemas/consulta-status.xsd

O retorno será o seguinte XML:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
targetNamespace="http://www.betha.com.br/e-nota-dps"
xmlns:dps="http://www.betha.com.br/e-nota-dps"
elementFormDefault="qualified">

<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="extras/xmldsig-core-schema_v01.xsd"/>

<!-- Consulta Status DPS -->
<xs:element name="ConsultarStatusDpsEnvio">
<xs:complexType>
<xs:sequence>
<xs:element name="codigoIbge" type="xs:string"/>
<xs:element name="cpfCnpjPrestador" type="xs:string"/>
<xs:element name="protocolo" type="xs:string"/>
<xs:element name="tipoIntegracao" type="dps:TTipoIntegracao"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<!-- Elementos raiz (para permitir polimorfismo via substitutionGroup) -->
<xs:element name="ConsultarStatusDpsResposta" type="dps:ConsultarStatusDpsResposta" abstract="true"/>
<xs:element name="ConsultarStatusDpsEmissaoResposta" substitutionGroup="dps:ConsultarStatusDpsResposta" type="dps:ConsultarStatusDpsEmissaoResposta"/>
<xs:element name="ConsultarStatusDpsCancelamentoResposta" substitutionGroup="dps:ConsultarStatusDpsResposta" type="dps:ConsultarStatusDpsCancelamentoResposta"/>
<xs:element name="ConsultarStatusDpsCancelamentoSubstituicaoResposta" substitutionGroup="dps:ConsultarStatusDpsResposta" type="dps:ConsultarStatusDpsCancelamentoSubstituicaoResposta"/>

<!-- Tipo base abstrato -->
<xs:complexType name="ConsultarStatusDpsResposta" abstract="true">
<xs:sequence>
<xs:element name="statusProcessamento" type="xs:string"/>
<xs:element name="dataHoraRecebimento" type="xs:dateTime"/>
<xs:element name="protocolo" type="xs:string"/>
<xs:element name="mensagemErro" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>

<!-- Retorno da consulta do status de emissão da DPS -->
<xs:complexType name="ConsultarStatusDpsEmissaoResposta">
<xs:complexContent>
<xs:extension base="dps:ConsultarStatusDpsResposta">
<xs:sequence>
<xs:element name="idDps" type="xs:string"/>
<xs:element name="chaveAcesso" type="xs:string" minOccurs="0"/>
<xs:element name="numeroDps" type="xs:string" minOccurs="0"/>
<xs:element name="serieDps" type="xs:string" minOccurs="0"/>
<xs:element name="numeroNotaFiscal" type="xs:string" minOccurs="0"/>
<xs:element name="linkPdf" type="xs:anyURI" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<!-- Retorno da consulta do status de cancelamento -->
<xs:complexType name="ConsultarStatusDpsCancelamentoResposta">
<xs:complexContent>
<xs:extension base="dps:ConsultarStatusDpsResposta">
<xs:sequence>
<xs:element name="idCancelamento" type="xs:string"/>
<xs:element name="chaveAcesso" type="xs:string" minOccurs="0"/>
<xs:element name="numeroNotaFiscal" type="xs:string" minOccurs="0"/>
<xs:element name="linkPdf" type="xs:anyURI" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<!-- Retorno da consulta do status de cancelamento por substituição -->
<xs:complexType name="ConsultarStatusDpsCancelamentoSubstituicaoResposta">
<xs:complexContent>
<xs:extension base="dps:ConsultarStatusDpsResposta">
<xs:sequence>
<xs:element name="idCancelamentoSubstituicao" type="xs:string"/>
<xs:element name="chaveAcessoSubstituida" type="xs:string" minOccurs="0"/>
<xs:element name="numeroNotaFiscalSubstituida" type="xs:string" minOccurs="0"/>
<xs:element name="linkPdfSubstituida" type="xs:anyURI" minOccurs="0"/>
<xs:element name="chaveAcessoSubstituta" type="xs:string" minOccurs="0"/>
<xs:element name="numeroNotaFiscalSubstituta" type="xs:string" minOccurs="0"/>
<xs:element name="linkPdfSubstituta" type="xs:anyURI" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<xs:simpleType name="TTipoIntegracao">
<xs:restriction base="xs:string">
<xs:enumeration value="EMISSAO"/>
<xs:enumeration value="CANCELAMENTO"/>
<xs:enumeration value="CANCELAMENTO_POR_SUBSTITUICAO"/>
</xs:restriction>
</xs:simpleType>

</xs:schema>

2. Erros

A seguir estarão os erros mapeados, juntamente com a mensagem e a solução do erro.

CódigoMensagem de ErroCorreçãoCategoria
E001XML mal formadoVerifique a estrutura do XMLErros de Estrutura XML
E001AProtocolo ausenteInforme o protocoloErros de Estrutura XML
E002Assinatura digital ausenteAssine digitalmente a DPS antes de enviarErros de Estrutura XML
E003Certificado digital inválidoUtilize certificado ICP-Brasil válidoErros de Estrutura XML
E004Certificado digital expiradoRenove o certificado digitalErros de Estrutura XML
E005CNPJ/CPF do certificado não corresponde ao prestadorUtilize certificado do prestador ou matriz/filialErros de Estrutura XML
E006Campo chNFSe é obrigatórioInforme a chave de acesso da NFS-eErros de Estrutura XML
E007Campo chNFSe inválidoVerifique a chave de acesso informadaErros de Estrutura XML
E008Campo CNPJAutor ou CPFAutor é obrigatórioInforme o CNPJ ou CPF do autorErros de Estrutura XML
E009Campo chSubstituta é obrigatórioInforme a chave da NFS-e substitutaErros de Estrutura XML
E010Campo tpAmb é obrigatórioInforme 1 para Produção ou 2 para HomologaçãoErros de Campos Obrigatórios
E011Campo tpAmb inválidoInforme 1 para Produção ou 2 para HomologaçãoErros de Campos Obrigatórios
E012Campo tpEmit é obrigatórioInforme o tipo de emitenteErros de Campos Obrigatórios
E013Campo tpEmit inválidoApenas tpEmit=1 (Prestador) é aceitoErros de Campos Obrigatórios
E013ACampo chSubstituta inválidaVerifique a chave de acesso da substitutaErros de Campos Obrigatórios
E014Campo dhEmi é obrigatórioInforme a data/hora de emissãoErros de Campos Obrigatórios
E015Campo verAplic é obrigatórioInforme a versão do aplicativoErros de Campos Obrigatórios
E015ACampo cMotivo é obrigatórioInforme o código do motivoErros de Campos Obrigatórios
E015BCampo cMotivo inválidoInforme um código de motivo válido (1,2,3,4,5,9)Erros de Campos Obrigatórios
E016Campo serie é obrigatórioInforme a série da DPSErros de Campos Obrigatórios
E017Campo nDPS é obrigatórioInforme o número da DPSErros de Campos Obrigatórios
E018Campo dCompet é obrigatórioInforme a data de competênciaErros de Campos Obrigatórios
E019Campo cLocEmi é obrigatórioInforme o código da localidade emissoraErros de Campos Obrigatórios
E020Dados do prestador são obrigatóriosInforme os dados do prestadorErros de Prestador
E021CNPJ ou CPF do prestador é obrigatórioInforme CNPJ ou CPF do prestadorErros de Prestador
E021ACNPJ ou CPF inválidoInforme CNPJ ou CPF do prestadorErros de Prestador
E022CNPJ do prestador inválidoVerifique o CNPJ informadoErros de Prestador
E023CPF do prestador inválidoVerifique o CPF informadoErros de Prestador
E024Regime tributário é obrigatórioInforme o regime tributário do prestadorErros de Prestador
E030Dados do serviço são obrigatóriosInforme os dados do serviço prestadoErros de Serviço
E031Código de tributação nacional é obrigatórioInforme o código de tributação nacionalErros de Serviço
E032Descrição do serviço é obrigatóriaInforme a descrição do serviçoErros de Serviço
E033Código NBS é obrigatórioInforme o código NBSErros de Serviço
E034Local de prestação é obrigatórioInforme o local de prestação do serviçoErros de Serviço
E035Tipo de Integração desconhecidoVerifique se o tipo de integração está corretoErros de Serviço
E036Código IBGE inválidoCódigo do IBGE tem 7 dígitosErros de Serviço
E040Valor do serviço é obrigatórioInforme o valor do serviçoErros de Valores
E041Valor do serviço deve ser maior que zeroInforme um valor válidoErros de Valores
E042Tributação do ISSQN é obrigatóriaInforme a tributação do ISSQNErros de Valores
E050DPS já recepcionada anteriormenteEsta DPS já foi enviada e está aguardando processamentoErros de Duplicidade
E051ID da DPS duplicadoO ID informado já existe para esta entidadeErros de Duplicidade
E051AID do evento duplicadoO ID informado já existe para esta entidadeErros de Duplicidade
E051BEvento já recepcionado anteriormenteEste evento já foi enviado e está aguardando processamentoErros de Duplicidade
E052Número e série da DPS duplicadosEsta combinação de número e série já foi utilizadaErros de Duplicidade
E060Data de competência inválidaA data de competência não pode ser futuraErros de Validação de Negócio
E061Data de emissão inválidaA data de emissão não pode ser futuraErros de Validação de Negócio
E062Certificado não é ICP-BrasilUtilize certificado ICP-Brasil A1 ou A3Erros de Validação de Negócio
E063Certificado não é A1 ou A3Utilize certificado tipo A1 ou A3Erros de Validação de Negócio
E064NFS-e não encontradaA NFS-e informada não existeErros de Validação de Negócio
E065NFS-e substituta não encontradaA NFS-e substituta informada não existeErros de Validação de Negócio
E070Não há nenhuma DPS com os dados utilizadosVerifique os dados novamenteErros de banco de dados
E999Erro interno no processamentoContate o suporte técnicoErros Genéricos

Limites e Restrições

  • Tamanho máximo do XML: 5MB
  • Timeout: 60 segundos
  • Rate limit: 100 requisições/minuto
  • DPS por requisição: Apenas 1

Troubleshooting

Problema: Certificado digital inválido

Solução: Verifique se o certificado é ICP-Brasil tipo A1 ou A3 e está dentro da validade.

Problema: CNPJ/CPF não corresponde

Solução: O certificado deve ser do prestador ou da matriz (mesma raiz CNPJ).

Problema: DPS já recepcionada

Solução: Use ConsultarDps para verificar o status da DPS já enviada.

Problema: Status sempre Aguardando validação

Solução: Atualmente o sistema apenas recepciona e valida a DPS. O processamento completo será implementado em versão futura.