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.
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ão | Data | Autor | Tipo de alteração |
|---|---|---|---|
| 1.0.0 | 18/11/2025 | Douglas Felipe da Silva | Disponibilizado primeira versão do documento |
| 1.1.0 | 18/11/2025 | Lucas Coelho | Correções críticas e melhorias |
| 1.1.5 | 19/11/2025 | Douglas Felipe da Silva | Adição de mais exemplos para endpoints e informações de assinatura/certificado |
| 1.1.6 | 20/11/2025 | Douglas Felipe da Silva | Atualização do XML de envio para cancelamento e substituição e do WSDL |
Índice
Ambientes
| Ambientes | URL Base | tpAmb | WSDL |
|---|---|---|---|
| Homologação | https://nota-eletronica.betha.cloud/dps | 2 | /service.wsdl |
| Produção | https://nota-eletronica.betha.cloud/dps | 1 | /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:
- 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;
- 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:
- Extrair a chave pública do certificado;
- Verificar o prazo de validade do certificado utilizado;
- Montar e validar a cadeia de confiança dos certificados, validando também a LCR (Lista de Certificados Revogados) de cada certificado da cadeia;
- 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);
- Garantir que o certificado utilizado é de um usuário final e não de uma Autoridade Certificadora;
- Adotar as regras definidas pelo RFC 3280 para LCR e cadeia de confiança;
- Validar a integridade de todas as LCRs utilizadas pelo sistema;
- 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:
- A DPS, pelo contribuinte, antes do envio do mesmo;
- O pedido de cancelamento da NFS-e, pelo contribuinte;
- A confirmação de cancelamento da NFS-e, pela prefeitura;
- O pedido de cancelamento por substituição pelo contribuinte;
- 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:
| Tipo | Evento/Integração |
|---|---|
| EMISSAO | Emissão da DPS |
| CANCELAMENTO | Cancelamento |
| CANCELAMENTO_POR_SUBSTICAO | Cancelamento 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:
| Mensagem | Significado |
|---|---|
| Processado com sucesso | Ambiente nacional processou com sucesso |
| Processado com erro | Ambiente nacional processou com erro |
| Aguardando validação do ambiente nacional | Validaçã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ódigo | Mensagem de Erro | Correção | Categoria |
|---|---|---|---|
| E001 | XML mal formado | Verifique a estrutura do XML | Erros de Estrutura XML |
| E001A | Protocolo ausente | Informe o protocolo | Erros de Estrutura XML |
| E002 | Assinatura digital ausente | Assine digitalmente a DPS antes de enviar | Erros de Estrutura XML |
| E003 | Certificado digital inválido | Utilize certificado ICP-Brasil válido | Erros de Estrutura XML |
| E004 | Certificado digital expirado | Renove o certificado digital | Erros de Estrutura XML |
| E005 | CNPJ/CPF do certificado não corresponde ao prestador | Utilize certificado do prestador ou matriz/filial | Erros de Estrutura XML |
| E006 | Campo chNFSe é obrigatório | Informe a chave de acesso da NFS-e | Erros de Estrutura XML |
| E007 | Campo chNFSe inválido | Verifique a chave de acesso informada | Erros de Estrutura XML |
| E008 | Campo CNPJAutor ou CPFAutor é obrigatório | Informe o CNPJ ou CPF do autor | Erros de Estrutura XML |
| E009 | Campo chSubstituta é obrigatório | Informe a chave da NFS-e substituta | Erros de Estrutura XML |
| E010 | Campo tpAmb é obrigatório | Informe 1 para Produção ou 2 para Homologação | Erros de Campos Obrigatórios |
| E011 | Campo tpAmb inválido | Informe 1 para Produção ou 2 para Homologação | Erros de Campos Obrigatórios |
| E012 | Campo tpEmit é obrigatório | Informe o tipo de emitente | Erros de Campos Obrigatórios |
| E013 | Campo tpEmit inválido | Apenas tpEmit=1 (Prestador) é aceito | Erros de Campos Obrigatórios |
| E013A | Campo chSubstituta inválida | Verifique a chave de acesso da substituta | Erros de Campos Obrigatórios |
| E014 | Campo dhEmi é obrigatório | Informe a data/hora de emissão | Erros de Campos Obrigatórios |
| E015 | Campo verAplic é obrigatório | Informe a versão do aplicativo | Erros de Campos Obrigatórios |
| E015A | Campo cMotivo é obrigatório | Informe o código do motivo | Erros de Campos Obrigatórios |
| E015B | Campo cMotivo inválido | Informe um código de motivo válido (1,2,3,4,5,9) | Erros de Campos Obrigatórios |
| E016 | Campo serie é obrigatório | Informe a série da DPS | Erros de Campos Obrigatórios |
| E017 | Campo nDPS é obrigatório | Informe o número da DPS | Erros de Campos Obrigatórios |
| E018 | Campo dCompet é obrigatório | Informe a data de competência | Erros de Campos Obrigatórios |
| E019 | Campo cLocEmi é obrigatório | Informe o código da localidade emissora | Erros de Campos Obrigatórios |
| E020 | Dados do prestador são obrigatórios | Informe os dados do prestador | Erros de Prestador |
| E021 | CNPJ ou CPF do prestador é obrigatório | Informe CNPJ ou CPF do prestador | Erros de Prestador |
| E021A | CNPJ ou CPF inválido | Informe CNPJ ou CPF do prestador | Erros de Prestador |
| E022 | CNPJ do prestador inválido | Verifique o CNPJ informado | Erros de Prestador |
| E023 | CPF do prestador inválido | Verifique o CPF informado | Erros de Prestador |
| E024 | Regime tributário é obrigatório | Informe o regime tributário do prestador | Erros de Prestador |
| E030 | Dados do serviço são obrigatórios | Informe os dados do serviço prestado | Erros de Serviço |
| E031 | Código de tributação nacional é obrigatório | Informe o código de tributação nacional | Erros de Serviço |
| E032 | Descrição do serviço é obrigatória | Informe a descrição do serviço | Erros de Serviço |
| E033 | Código NBS é obrigatório | Informe o código NBS | Erros de Serviço |
| E034 | Local de prestação é obrigatório | Informe o local de prestação do serviço | Erros de Serviço |
| E035 | Tipo de Integração desconhecido | Verifique se o tipo de integração está correto | Erros de Serviço |
| E036 | Código IBGE inválido | Código do IBGE tem 7 dígitos | Erros de Serviço |
| E040 | Valor do serviço é obrigatório | Informe o valor do serviço | Erros de Valores |
| E041 | Valor do serviço deve ser maior que zero | Informe um valor válido | Erros de Valores |
| E042 | Tributação do ISSQN é obrigatória | Informe a tributação do ISSQN | Erros de Valores |
| E050 | DPS já recepcionada anteriormente | Esta DPS já foi enviada e está aguardando processamento | Erros de Duplicidade |
| E051 | ID da DPS duplicado | O ID informado já existe para esta entidade | Erros de Duplicidade |
| E051A | ID do evento duplicado | O ID informado já existe para esta entidade | Erros de Duplicidade |
| E051B | Evento já recepcionado anteriormente | Este evento já foi enviado e está aguardando processamento | Erros de Duplicidade |
| E052 | Número e série da DPS duplicados | Esta combinação de número e série já foi utilizada | Erros de Duplicidade |
| E060 | Data de competência inválida | A data de competência não pode ser futura | Erros de Validação de Negócio |
| E061 | Data de emissão inválida | A data de emissão não pode ser futura | Erros de Validação de Negócio |
| E062 | Certificado não é ICP-Brasil | Utilize certificado ICP-Brasil A1 ou A3 | Erros de Validação de Negócio |
| E063 | Certificado não é A1 ou A3 | Utilize certificado tipo A1 ou A3 | Erros de Validação de Negócio |
| E064 | NFS-e não encontrada | A NFS-e informada não existe | Erros de Validação de Negócio |
| E065 | NFS-e substituta não encontrada | A NFS-e substituta informada não existe | Erros de Validação de Negócio |
| E070 | Não há nenhuma DPS com os dados utilizados | Verifique os dados novamente | Erros de banco de dados |
| E999 | Erro interno no processamento | Contate o suporte técnico | Erros 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.