- 10.3. Cancelamento e Inutilização de CT-e
10.3.1. CancelaCT - 10.3. Cancelamento e Inutilização de CT-e
« Anterior - 10.3.2. InutilizaNroCT
Próximo »
10.3.1. CancelaCT
Cancelamento de CT-e
Assinatura
int CancelaCT(string siglaWS, string siglaUF, int tipoAmbiente, string nomeCertificado, string versao, out string msgDados, out string msgRetWS, out string msgResultado, out string procCanc, string chaveCTe, string nProtocolo, string justificativa, string proxy, string usuario, string senha, string licenca)
Descrição:
Funcionalidade para Cancelamento de CT-e.
Os principais parâmetros de cancelamento são:
- chave de acesso do CT-e;
- número do protocolo de autorização de uso do CT-e;
- justificativa do cancelamento com pelo menos 15 caracteres.
A identificação do WS de acessado deverá ser informada no parâmetro siglaWS.
Os emissores localizados em UF usuárias da SEFAZ Virtual (AM, BA, CE, ES, GO, MA, PR, RJ, RN, RO, SC, SE, e TO) devem informar a sigla RS; caso a UF tenha aplicação própria (MG, MS, MT, RS e SP), informar a sigla da própria UF.
Condições para Cancelamento
- CT-e autorizado, o usuário deve utilizar a inutilização de numeração se o CT-e não estiver autorizado;
- CT-e autorizado em até 60 dias;
- Possuir o número do protocolo de autorização de uso;
- O CT-e não pode ter a confirmação da prestação do serviço;
- Inexistência da Circulação da Mercadoria;
- Inexistência da Carta de Correção;
Prazo de cancelamento
Em até 60 dias da autorização de uso do CT-e objeto do cancelamento.
Número do Protocolo de Autorização de Uso
Alguns usuários confundem o número do recibo do envio do lote com o número da autorização de uso e não conseguem cancelar o CT-e.
Preenchimento da siglaWS
a sigla RS, caso a UF seja usuária da SEFAZ Virtual (AM, BA, CE, ES, GO, MA, PR, RJ, RN, RO, SC, SE, e TO);
a sigla da UF, caso a UF tenha aplicação própria (MG, MS, MT, RS e SP).
Preenchimento do nomeCertificado
Informar o Nome do titular (campo Assunto) do certificado digital a ser utilizado na conexão SSL.
Parâmetros:
| nome | tipo | fluxo | descrição |
|---|---|---|---|
| siglaWS | string | entrada | informar a sigla do WS de envio, informar a sigla RS, caso a UF seja usuária da SEFAZ Virtual (AM, BA, CE, ES, GO, MA, PR, RJ, RN, RO, SC, SE, e TO); caso a UF tenha aplicação própria (MG, MS, MT, RS e SP), informar a sigla da própria UF. |
| siglaUF | string | entrada | informar a sigla da UF |
| tipoAmbiente | inteiro | entrada | informar o código do ambiente a ser consultado: 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 da mensagem do WS - 1.03 / 1.04 |
| msgDados | string | saída | retorna a mensagem XML do pedido de cancelamento 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 |
| procCanc | string | saída | retorna o XML do procCancCTe, composto pelo pedido de cancelamento do CT-e e respectivo protocolo de homologação de cancelamento do CT-e. O emissor deve manter este XML, na NF-e existe a obrigação de envia-lo para o tomador do NF-e cancelado. |
| chaveCTe | string | entrada | informar chave de Acesso do CT-e desejado |
| nProtocolo | string | entrada | informar o número do protocolo de autorização de uso do CT-e objeto do cancelamento |
| justificativa | string | entrada | informar a justificativa do cancelamento 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 licenca 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 CancelaCT é 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 número do protocolo deve ter 15 posições | DLL | - |
| 22 | Erro: A chave de acesso deve ter 44 posições | DLL | - |
| 23 | Erro: A justificativa deve ter pelo menos 15 posições | DLL | - |
| 24 | Erro: O nome do titular do certificado deve ser informado | DLL | - |
| 25 | Erro: A licença informada tem tamanho diferente de 128 - [chave informada] - [tamanho] | DLL | - |
| 108 | Serviço Paralisado Momentaneamente (curto prazo) | WS | B03 |
| 109 | Serviço Paralisado sem Previsão | WS | B04 |
| 203 | Rejeição: Emissor não habilitado para emissão do CT-e | WS | G062 |
| 205 | Rejeição: CT-e está denegado na base de dados da SEFAZ | WS | G112 |
| 205 | Rejeição: CT-e está denegado na base de dados da SEFAZ | WS | G117 |
| 205 | Rejeição: CT-e está denegado na base de dados da SEFAZ | WS | G076 |
| 205 | Rejeição: CT-e está denegado na base de dados da SEFAZ | WS | G085 |
| 205 | Rejeição: CT-e está denegado na base de dados da SEFAZ | WS | G094 |
| 205 | Rejeição: CT-e está denegado na base de dados da SEFAZ | WS | G103 |
| 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 |
| 218 | Rejeição: CT-e já está cancelada na base de dados da SEFAZ | WS | G116 |
| 219 | Rejeição: Circulação da CT-e verificada | WS | H13 |
| 220 | Rejeição: CT-e autorizada há mais de 60 dias | WS | H10 |
| 221 | Rejeição: Confirmado a prestação do serviço do CT-e pelo destinatário | WS | H12 |
| 222 | Rejeição: Protocolo de Autorização de Uso difere do cadastrado | WS | H11 |
| 227 | Rejeição: Erro na composição do Campo ID | WS | G005 |
| 236 | Rejeição: Chave de Acesso com dígito verificador inválido | WS | H03 |
| 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 |
| 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 |
| 249 | Rejeição: UF da Chave de Acesso diverge da UF autorizadora | WS | H02 |
| 252 | Rejeição: Ambiente informado diverge do Ambiente de recebimento | WS | G001 |
| 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 |
| 495 | Rejeição: CT-e possui Carta de Correção | WS | H14 |
| 574 | Rejeição: Vedado o cancelamento de CT-e do tipo substituto (tipo=3) | WS | H16 |
| 575 | Rejeição: Vedado o cancelamento se possuir CT-e de Anulação associado | WS | H17 |
| 576 | Rejeição: Vedado o cancelamento se possuir CT-e de Substituição associado | WS | H19 |
Histórico de atualização:
- Versão inicial.
- 2011-02-18 - correção do texto da observação do parâmetro procCanc
- 2011-12-16 - Acréscimo do código exemplo em VB 6.0.
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 que deseja consultar, RS - SEFAZ Virtual do Rio Grande do Sul (AM, BA, GO, PR, RJ, e SC), caso a UF seja usuário da SEFAZ Virtual, em caso contrário informar a sigla da UF (MG, MS, MT, RS e SP) 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](http://www.flexdocs.com.br/cte_util.htm "condições de uso") Dim tipoAmbiente As Integer ' 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 chaveCTe As String ' chave do CT-e objeto de cancelamento Dim justificativa As String ' justificativa de cancelamento Dim procCanc As String ' estrturura XML que contém o pedido de cancelamento e a homologação do cancelamento ' que deve ser mantido pelo emissor e distribuído ao destinatário. Dim nProtocolo As String ' número do protocolo de homomologação de cancelamento devolvido pela SEFA Dim versao As String ' utilizado para escolha da versão do WS - 1.03 / 1.04 Dim cStat As Long ' status da chamada, veja os valores em http://www.flexdocs.com.br/guiaCTe/WS.canc.cancelaCT.html ' ' ' 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](http://www.flexdocs.com.br/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 procCanc = "" ' retorna o XML do ***procCancCTe***, composto pelo pedido de cancelamento do CT-e e respectivo protocolo de homologação de cancelamento do CT-e.<BR>O emissor deve manter este XML, na NF-e existe a obrigação de envia-lo para o tomador do NF-e cancelado. 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" ' informar a sigla do WS que deseja consultar, RS - SEFAZ Virtual do Rio Grande do Sul (AM, BA, GO, PR, RJ, e SC), caso a UF seja usuário da SEFAZ Virtual, em caso contrário informar a sigla da UF (MG, MS, MT, RS e SP) siglaUF = "RS" ' informar a sigla da UF do emissor chaveCTe = "35100700000000000191570011234567891876543210" ' chave do CT-e objeto de cancelamento nProtocolo = "133100021635462" ' número do protocolo de homomologação de cancelamento devolvido pela SEFA justificativa = "CTe emitido com valor incorreto" ' informar a justificativa do cancelamento com pelo menos 15 caracteres versao = "1.04" ' utilizado para escolha da versão do WS - 1.03 / 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.CancelaCT(siglaWS, siglaUF, tipoAmbiente, nomeCertificado, versao, msgDados, msgRetWS, msgResultado, procCanc, chaveCTe, nProtocolo, justificativa, proxy, usuario, senha, licenca) ' Screen.MousePointer = vbDefault ' normal ' If cStat = 101 Then ' ' grava CancelaCT ' nomeArquivo = "CancelaCT.xml" Open nomeArquivo For Output As #1 Print #1, msgRetWS Close #1 ' ' MsgBox msgDados, vbInformation, "Mensagem XML do Pedido de Cancelamento de CT-e" ' ' mostra mensagem XML da mensagem de retorno do WS ' MsgBox msgResultado + Chr(13) + Chr(13) + msgRetWS, vbInformation, "Resultado da chamada do Web Service" Else MsgBox cStat + Chr(13) + Chr(13) + msgResultado, vbInformation, "Falha no Cancelamento do CT-e" End If ' ' libera classe ' Set objNFeUtil = Nothing
- 10.3.1. CancelaCT
10.3. Cancelamento e Inutilização de CT-e - « Anterior
10.3. Cancelamento e Inutilização de CT-e - Próximo »
10.3.2. InutilizaNroCT