- 10. Web Service do CT-e [v3.00]
10.5. InutilizaNroCT [v3.00] - 10.4. Envia GTV-e [NT2020/02]
« Anterior - 10.6. WS de Consulta
Próximo »
10.5. InutilizaNroCT [v3.00]
Inutilização de Numeração de CT-e
Assinatura
int InutilizaNroCT(string siglaWS, string siglaUF, int tipoAmbiente, string nomeCertificado, string versao, out string msgDados, out string msgRetWS, out string msgResultado, out string procInut, string cUF, string ano, string CNPJ, string modelo, string serie, string nroCTeInicial, string nroCTeFinal, string justificativa, string proxy, string usuario, string senha, string licenca)
Descrição:
Funcionalidade para Inutilização de numeração de CT-e.
Esta funcionalidade serve para inutilizar um número ou faixa de numeração de CT-e que não foi utilizado.
As causas mais comuns de não utilização de número são a quebra de sequência da numeração em razão da rejeição do CT-e ou perda de conhecimentos de transporte eletrônicos por alguma falha do ambiente de recepção ou de comunicação ou até mesmo a falha no uso de números da aplicação de faturamento.
Os parâmetros da Inutilização de Numeração são:
- ano, ano de inutilização com dois dígitos;
- CNPJ do emissor;
- modelo, informar 57 para CT-e ou 67 para CT-e OS;
- série, informar a série sem os zeros significativos, o zero (0) representa série única;
- código da UF do emissor, é muito comum os casos de falha de schema XML causados pela informação da sigla da UF neste parâmetro;
- número inicial e final da faixa, sem os zeros significativos; informar o mesmo valor para inutilizar um único número;
- justificativa de inutilização com pelo menos 15 caracteres.
Condições de Inutilização
- O número de CT-e não pode ter sido utilizado, a providência correta para um CT-e autorizado é o cancelamento de CT-e;
- A inutilização de faixa é limitada a 2.000 números por pedido, caso a faixa de inutilização seja superior será necessário dividir o pedido em diversos pedidos;
- Uma faixa de inutilização não pode conter números já inutilizados ou utilizados.
Prazo para inutilização
Até o 10º dia do mês subsequente da quebra da numeração.
Dica
Os pedidos de inutilização de numeração homologados podem ser consultados no Portal Nacional.
Algumas SEFAZ também oferecem a consulta Web dos pedidos de inutilização homologados.
Parâmetros:
nome | tipo | fluxo | descrição |
---|---|---|---|
siglaWS | string | entrada | informar a sigla do WS de envio, veja Tabela de siglaWS |
siglaUF | string | entrada | informar a sigla da UF |
tipoAmbiente | inteiro | entrada | informar o código do ambiente desejado: 1- produção ou 2-homologação. |
nomeCertificado | string | entrada | informar nome do titular do certificado a ser utilizado na assinatura e conexão SSL |
versao | string | entrada | informar a versão do Evento: 3.00 (o valor 2.00 pode ser informado até o fim da vigência da versão 2.00 previsto para 04/12/17). |
msgDados | string | saída | retorna a mensagem XML do pedido de inutilização criado pela DLL que foi enviado ao WS. |
msgRetWS | string | saída | retorna a mensagem XML de resposta do WS. |
msgResultado | string | saída | retorna a literal do resultado da chamada do WS. |
procInut | string | saída | retorna o XML do procInutCTe que é composto pelo pedido de inutilização da numeração de CT-e e respectivo do protocolo da homologação da inutilização da numeração do CT-e. O emissor deve manter o arquivo deste XML. |
cUF | string | entrada | informar o código da UF (Tabela IBGE) de localização do emissor, a informação da sigla da UF vai resultar em falha de preenchimento da mensagem (Falha de Schema). |
ano | string | entrada | informar o ano com dois dígitos, considerar o ano em que tenha ocorrido a quebrada da sequência, se o problema ocorreu em dezembro/2009, mesmo que a inutilização seja solicitada em 2010, o ano deve ser 2009. |
CNPJ | string | entrada | informar o CNPJ do emissor. |
modelo | string | entrada | informar o modelo do documento fiscal, informar 57 (CT-e) ou 67 (CT-e OS). |
serie | string | entrada | informar a série, a informação da serie com zeros não significativos provoca Falha de Schema, assim informe 1 ao invés de 001. |
nroCTeInicial | string | entrada | informar o número do CT-e inicial a ser inutilizado, a informação do número com zeros não significativos provoca Falha de Schema, assim informe 1 ao invés de 000000001. No caso de inutilização de um único número, o número inicial e final devem ser iguais. |
nroCTeFinal | string | entrada | informar o número do CT-e final a ser inutilizado, a informação do número com zeros não significativos provoca Falha de Schema, assim informe 1 ao invés de 000000001. |
justificativa | string | entrada | informar a justificativa de inutilização com pelo menos 15 caracteres. |
proxy | string | entrada | informar 'http://proxyserver:port' quando existir uso de proxy no ambiente. verificar com o cliente qual é o endereço do servidor proxy e a porta https, a porta padrão do https é 443, assim teríamos algo do tipo 'http://192.168.15.1:443' |
usuario | string | entrada | informar o usuário para autenticação no proxy se necessário. |
senha | string | entrada | informar a senha de autenticação no proxy se necessário. |
licenca | string | entrada | informar a chave da licença de uso ou registro, esta funcionalidade pode ser utilizada sem qualquer restrição no ambiente de homologação. O uso em ambiente de produção requer o licenciamento ou registro, para maiores detalhes veja as condições de uso. |
Retorno:
O resultado da chamada do InutilizaNroCT é um código numérico com os seguintes significados:
código | Mensagem | origem | regra |
---|---|---|---|
1 | código do ambiente inválido | DLL | - |
2 | sigla da UF inválida | DLL | - |
3 | a UF não oferece o serviço | DLL | - |
4 | Arquivo com a URL do WS não localizado | DLL | - |
5 | Erro não tratado de abertura/tratamento Arquivo ws.xml | DLL | - |
6 | Erro de validação de Schema | DLL | - |
7 | Nenhum Certificado Selecionado | DLL | - |
8 | Nenhum certificado válido foi encontrado com o nome informado | DLL | - |
9 | Erro Inesperado no acesso ao certificado digital: [Mensagem] | DLL | - |
10 | Erro: Time-out ao chamar o WS | DLL | - |
11 | Erro: exceção da biblioteca criptográfica | DLL | - |
12 | Erro: conectividade | DLL | - |
13 | Aplicação não licenciada | DLL | - |
14 | Erro: Problema ao acessar o certificado digital: [exceção] | DLL | - |
15 | Certificado digital inexistente para ,nome, | DLL | - |
16 | XML mal formado + exceção | DLL | - |
17 | A tag de assinatura [RefUri] inexiste | DLL | - |
18 | A tag de assinatura [RefUri] não é unica | DLL | - |
19 | Erro Ao assinar o documento - ID deve ser string [RefUri(Atributo)] | DLL | - |
20 | Erro: Ao assinar o documento - [exceção] | DLL | - |
21 | Erro: O ano deve ter 2 posições | DLL | - |
22 | Erro: CNPJ informado inválido | DLL | - |
23 | Erro: Modelo inválido diferente de 57 | DLL | - |
24 | Erro: Serie inválida | DLL | - |
25 | Erro: Número inicial da faixa inválido | DLL | - |
26 | Erro: Número Final da faixa inválido | DLL | - |
27 | Erro: Número Final menor que número inicial da faixa | DLL | - |
28 | Erro: A justificativa deve ter pelo menos 15 posições | DLL | - |
29 | Erro: O nome do titular do certificado deve ser informado | DLL | - |
30 | Erro: O CNPJ informado tem tamanho diferente de 14 : [CNPJ] | DLL | - |
31 | Erro: A licença informada tem tamanho diferente de 128 - [ chave informada] | DLL | - |
32 | Erro: Número inicial [número] inválido - zeros a esquerda 2009/01/28 | DLL | - |
33 | Erro: Número final [número] inválido - zeros a esquerda 2009/01/28 | DLL | - |
34 | Erro: Versao informada é inválida - versao 2009/09/01 | DLL | - |
102 | Inutilização de número homologado | WS | - |
108 | Serviço Paralisado Momentaneamente (curto prazo) | WS | B03 |
109 | Serviço Paralisado sem Previsão | WS | B04 |
201 | Rejeição: O numero máximo de numeração de CT-e a inutilizar ultrapassou o limite | WS | I04 |
203 | Rejeição: Emissor não habilitado para emissão do CT-e | WS | G062 |
213 | Rejeição: CNPJ-Base do Emitente difere do CNPJ-Base do Certificado Digital | WS | F03 |
214 | Rejeição: Tamanho da mensagem excedeu o limite estabelecido | WS | B01 |
215 | Rejeição: Falha no schema XML | WS | D01 |
224 | Rejeição: A faixa inicial é maior que a faixa final | WS | I03 |
227 | Rejeição: Erro na composição do Campo ID | WS | G005 |
238 | Rejeição: Cabeçalho - Versão do arquivo XML superior a Versão vigente | WS | C05 |
239 | Rejeição: Cabeçalho - Versão do arquivo XML não suportada | WS | C06 |
240 | Rejeição: Cancelamento/Inutilização - Irregularidade Fiscal do Emitente | WS | H05 |
241 | Rejeição: Um número da faixa já foi utilizado | WS | I08 |
242 | Rejeição: Elemento cteCabecMsg inexistente no SOAP Header | WS | C01 |
243 | Rejeição: XML Mal Formado | WS | B02 |
244 | Rejeição: CNPJ do Certificado Digital difere do CNPJ da Matriz e do CNPJ do Emitente | WS | F04 |
250 | Rejeição: UF diverge da UF autorizadora | WS | I02 |
252 | Rejeição: Ambiente informado diverge do Ambiente de recebimento | WS | G001 |
256 | Rejeição: Um número de CT-e da faixa já está inutilizado na Base de dados da SEFAZ | WS | I07 |
280 | Rejeição: Certificado Transmissor inválido | WS | A01 |
281 | Rejeição: Certificado Transmissor Data Validade | WS | A02 |
282 | Rejeição: Certificado Transmissor sem CNPJ | WS | A07 |
283 | Rejeição: Certificado Transmissor - erro Cadeia de Certificação | WS | A03 |
284 | Rejeição: Certificado Transmissor revogado | WS | A05 |
285 | Rejeição: Certificado Transmissor difere ICP-Brasil | WS | A06 |
286 | Rejeição: Certificado Transmissor erro no acesso a LCR | WS | A04 |
290 | Rejeição: Certificado Assinatura inválido | WS | E01 |
291 | Rejeição: Certificado Assinatura Data Validade | WS | E02 |
292 | Rejeição: Certificado Assinatura sem CNPJ | WS | E03 |
293 | Rejeição: Certificado Assinatura - erro Cadeia de Certificação | WS | E04 |
294 | Rejeição: Certificado Assinatura revogado | WS | E06 |
295 | Rejeição: Certificado Assinatura difere ICP-Brasil | WS | E07 |
296 | Rejeição: Certificado Assinatura erro no acesso a LCR | WS | E05 |
297 | Rejeição: Assinatura difere do calculado | WS | F02 |
298 | Rejeição: Assinatura difere do padrão do Projeto | WS | F01 |
402 | Rejeição: XML da área de dados com codificação diferente de UTF-8 | WS | D03 |
404 | Rejeição: Uso de prefixo de namespace não permitido | WS | D02 |
409 | Rejeição: Campo cUF inexistente no elemento cteCabecMsg do SOAP Header | WS | C02 |
410 | Rejeição: UF informada no campo cUF não é atendida pelo WebService | WS | C03 |
411 | Rejeição: Campo versaoDados inexistente no elemento cteCabecMsg do SOAP Header | WS | C04 |
471 | Rejeição: Ano de inutilização não pode ser superior ao Ano atual | WS | I02a |
472 | Rejeição: Ano de inutilização não pode ser inferior a 2008 | WS | I02b |
Histórico de atualização:
- Versão inicial.
- 2011-02-18 - correção da observação do procInut
- 2011-12-16 - Acréscimo do código exemplo em VB 6.0.
- 2013-01-16 - Revisão de texto da siglaWS
- 2013-05-29 - Revisão de código de exemplo VB 6.0
- 2013-06-20 - Revisão de código de exemplo VB 6.0
- 2017-01-12 - Alteração para suportar a versão 3.00 (CT-e e CT-e OS)
Mensagens XML - versão 1.04:
Exemplo de Mensagem de Pedido de Inutilização
<?xml version="1.0" encoding="UTF-8"?> <inutCTe xmlns="http://www.portalfiscal.inf.br/cte" versao="1.04"> <infInut Id="ID310000000000019157000000001234000001234"> <tpAmb>2</tpAmb> <xServ>INUTILIZAR</xServ> <cUF>31</cUF> <ano>13</ano> <CNPJ>00000000000191</CNPJ> <mod>57</mod> <serie>0</serie> <nCTIni>1234</nCTIni> <nCTFin>1234</nCTFin> <xJust>TESTE DE INUTILIZACAO</xJust> </infInut> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> (...) </Signature> </inutCTe>
Exemplo de Mensagem de Retorno do WS de pedido homologado
<retInutCTe xmlns="http://www.portalfiscal.inf.br/cte" versao="1.04"> <infInut Id="ID131130000863123"> <tpAmb>2</tpAmb> <verAplic>0_2_06</verAplic> <cStat>102</cStat> <xMotivo>Inutilizacao de numero homologado</xMotivo> <cUF>31</cUF> <ano>13</ano> <CNPJ>00000000000191</CNPJ> <mod>57</mod> <serie>0</serie> <nCTIni>1234</nCTIni> <nCTFin>1234</nCTFin> <dhRecbto>2013-06-20T14:10:43</dhRecbto> <nProt>131130000863123</nProt> </infInut> </retInutCTe>
Exemplos de uso:
Visual Basic 6.0
' ' ' declaração das variáveis que serão utilizadas na passagem de parâmetros da DLL ' Dim msgDados As String ' retorna a mensagem XML enviada para o WS Dim msgRetWS As String ' retorna a mensagem XML de resposta do WS Dim msgResultado As String ' retorna o resultado da chamada da funcionalidade, se o WS acessado com sucesso será devolvido o cStat da resposta do WS Dim siglaUF As String ' informar a sigla da UF do emissor Dim siglaWS As String ' informar a sigla do WS de envio: ' . sigla da UF, caso a UF tenha aplicação própria (MG, MS, MT, PR, RS e SP). ' . RS, caso a UF seja usuária da SVRS - SEFAZ Virtual do RS (AM, BA, CE, DF, ES, ' GO, MA, RJ, RN, RO, SC, SE, e TO); ' . SP, caso a UF seja usuária da SVSP - SEFAZ Virtual de SP (AP, PE e RR); ' . RS quando desejar acessar a SVC-RS (AP, MT, MS, PE, RR e SP); ' . SP quando desejar acessar a SVC-SP (AM, BA, CE, DF, ES, GO, MA, MG, PA, RJ, ' RN, RO, RS, SC, SE, e TO); Dim nomeCertificado As String ' informar nome do titular do certificado a ser utilizado na assinatura e conexão SSL ' ' As variáveis do proxy devem ser informadas se necessário ' ' proxy deve ser informado com o endereço da url : porta, ex: 192.168.15.1:443 ' Dim proxy As String ' informar 'http://proxyserver:port' quando existir uso de proxy no ambiente. verificar com o cliente qual é o endereço do servidor proxy e a porta https, a porta padrão do https é 443, assim teríamos algo do tipo 'http://192.168.15.1:443' Dim usuario As String ' informar o usuário para autenticação no proxy se necessário Dim senha As String ' informar a senha de autenticação no proxy se necessário Dim licenca As String ' informar a chave da licença de uso, esta funcionalidade pode ser utilizada sem qualquer restrição no ambiente de homologação. O uso em ambiente de produção requer o licenciamento ou registro, para maiores detalhes veja as [condições de uso](https://www.flexdocs.net/cte_util.htm "condições de uso") Dim tipoAmbiente As Long ' informar o código do ambiente desejado: 1- produção ou 2-homologação ' ' define as variáveis que passam/recebem informações importantes ' Dim cUF As String ' código da UF do solicitante - Tabela IBGE Dim Ano As String ' ano de inutilizalção da numeração Dim CNPJ As String ' CNPJ do emitente Dim modelo As String ' modelo da CT-e (sempre 57) Dim serie As String ' serie do CT-e (sem zeros a esquerda) Dim nroCTeInicial As String ' número inicial da faixa a ser inutilizada (sem zeros a esquerda) Dim nroCTeFinal As String ' número final da faixa a ser inutilizada (sem zeros a esquerda) ' Observações ' só é permitida a inutilização de até 1000 números por vez ' se a inutilização for de um único número nroCTeInicial e nroCTeFinal devem ' ser iguais Dim justificativa As String ' justificativa de cancelamento Dim procInut As String ' estrturura XML que contém o pedido de inutilização e a homologação da inutilização, ' que deve ser mantido pelo emissor. Dim versao As String ' utilizado para escolha da versão do WS - 1.03 / 1.04 Dim cStat As Long ' retorna o código do resultado da chamada do WS ' ' ' IMPORTANTE: todas as variáveis utilizadas como parâmetro da DLL devem ser inicializadas ' ' proxy = "" ' informar 'http://proxyserver:port' quando existir uso de proxy no ambiente. verificar com o cliente qual é o endereço do servidor proxy e a porta https, a porta padrão do https é 443, assim teríamos algo do tipo 'http://192.168.15.1:443' usuario = "" ' informar o usuário para autenticação no proxy se necessário senha = "" ' informar a senha de autenticação no proxy se necessário licenca = "" ' informar a chave da licença de uso, esta funcionalidade pode ser utilizada sem qualquer restrição no ambiente de homologação. O uso em ambiente de produção requer o licenciamento ou registro, para maiores detalhes veja as [condições de uso](https://www.flexdocs.net/cte_util.htm "condições de uso") msgDados = "" ' retorna a mensagem XML enviada para o WS msgRetWS = "" ' retorna a mensagem XML de resposta do WS msgResultado = "" ' retorna o resultado da chamada da funcionalidade, se o WS acessado com sucesso será devolvido o cStat da resposta do WS procInut = "" ' retorna o XML do ***procInutCTe*** que é composto pelo pedido de inutilização da numeração de CT-e e respectivo do protocolo da homologação da inutilização da numeração do CT-e.<BR> O emissor deve manter o arquivo deste XML. nomeCertificado = "CN=NFe - Associacao NF-e:99999090910270, C=BR, L=PORTO ALEGRE, O=Teste Projeto NFe RS, OU=Teste Projeto NFe RS, S=RS" ' informar com o assunto da certificado digital ' Ex.: "CN=NFe - Associacao NF-e:99999090910270, C=BR, L=PORTO ALEGRE, O=Teste Projeto NFe RS, OU=Teste Projeto NFe RS, S=RS" siglaWS = "RS" ' SEFFAZ/RS siglaUF = "RS" ' informar a sigla da UF ' ' Solicita os parâmetros da inutilização ' ' o modelo da CT-e é sempre fixo em 57 modelo = "57" ' ' converte a sigla da UF no código da UF da tabela do IBGE ' cUF = "35" ' ' CNPJ = "99999090910270" ' informar o CNPJ do emissor Ano = "11" ' informar o ano, considerar o ano em tenha ocorrida a quebrada da sequência, se o problema ocorreu em dezembro/2009, mesmo que a inutilização seja solicitada em 2010, o ano deve ser 2009, importante: informar o ano no formato aa, ex. 2010 = 10 serie = "1" ' informar a série, a informação da serie com zeros não significativos provoca Falha de Schema, assim informe 1 ao invés de 001 nroCTeInicial = "1" ' informar o número do CT-e inicial a ser inutilizada, a informação do número com zeros não significativos provoca Falha de Schema, assim informe 1 ao invés de 000000001. No caso de inutilização de um único número, o número inicial e final devem ser iguais nroCTeFinal = "1" ' informar o número do CT-e final a ser inutilizada, a informação do número com zeros não significativos provoca Falha de Schema, assim informe 1 ao invés de 000000001. No caso de inutilização de um único número, o número inicial e final devem ser iguais justificativa = "Quebra de sequencia da numeracao" ' informar a justificativa de inutilização com pelo menos 15 caracteres versao = "1.04" ' versão do Web Service, a versão anterior é 1.03, a versão nova é 1.04 tipoAmbiente = 2 'informar o código do ambiente desejado: 1- produção ou 2-homologação cStat = 0 ' retorna o código do resultado da chamada do WS ' ' ' referenciando a DLL em late binding ' não é necessário fazer o reference da DLL ' o intelisense não funciona ' Dim objCTeUtil As Object Set objCTeUtil = CreateObject("CTe_Util.Util") ' ' ' ' ' Screen.MousePointer = vbHourglass ' ampulheta ' ' cStat = objCTeUtil.InutilizaNroCT(siglaWS, siglaUF, tipoAmbiente, nomeCertificado, versao, msgDados, msgRetWS, msgResultado, procInut, cUF, Ano, CNPJ, modelo, serie, nroCTeInicial, nroCTeFinal, justificativa, proxy, usuario, senha, licenca) ' ' ' ' Screen.MousePointer = vbDefault ' normal ' If cStat = 102 Then ' ' grava InutilizaCT ' ' nomeArquivo = "InutilizaCT.xml" Open nomeArquivo For Output As #1 Print #1, procInut Close #1 ' ' Pega o conteúdo das tag nProt e dhRecbto da resposta do WS ' Dim nProtocoloInut As String ' número do protocolo de homomologação de Inutilização de numeraçãp devolvido pela SEFA Dim dProtocoloInut As String ' data e hora de homologação da Inutilização de numeração Dim Posicao As Integer ' posicao inicial a ser considerada no pegaConteudoTag Posicao = 1 nProtocoloInut = pegaConteudoTag("nProt", Posicao, msgRetWS) dProtocoloInut = pegaConteudoTag("dhRecbto", Posicao, msgRetWS) ' ' ' mostra mensagem XML enviada ' MsgBox msgDados, vbInformation, "Mensagem XML do Pedido de Inutilização de numeração do CT-e" ' ' mostra mensagem XML da mensagem de retorno do WS ' MsgBox msgResultado + Chr(13) + Chr(13) + msgRetWS, vbInformation, "Resultado da chamada do WS" Else MsgBox cStat + Chr(13) + Chr(13) + msgResultado, vbInformation, "Falha na Inutilização de numeração" ' End If ' ' libera classe ' Set objNFeUtil = Nothing Function pegaConteudoTag(tag As String, Posicao As Integer, XML As String) As String ' posicao = a partir de onde deve procurar a tag , vai ser util no caso de existir mais de uma tag com o mesmo nome Dim posIni As Integer Dim posFim As Integer Dim tamTag As Integer Dim tagIni As String Dim tagVaz As String Dim tagFim As String tagIni = "<" + Trim(tag) + ">" tagFim = "</" + Trim(tag) + ">" tagVaz = "<" + Trim(tag) + "/>" pegaConteudoTag = "" posIni = InStr(Posicao, XML, tagIni) posFim = InStr(Posicao, XML, tagFim) If InStr(Posicao, XML, tagVaz) > 0 Then ' tag sem conteudo Exit Function End If If posIni = 0 Then ' nao existe tag de inicio Exit Function End If If posFim = 0 Then ' nao existe tag de fim Exit Function End If pegaConteudoTag = Mid(XML, posIni + Len(tagIni), posFim - posIni - Len(tagIni)) End Function
- 10.5. InutilizaNroCT [v3.00]
10. Web Service do CT-e [v3.00] - « Anterior
10.4. Envia GTV-e [NT2020/02] - Próximo »
10.6. WS de Consulta