Nos estados onde há contingência offline para NFCe, se a SEFAZ ficar fora do ar, a emissão é feita automaticamente via contingência offline. A nota é efetivada quando a SEFAZ volta a ficar disponível. Em algumas situações, a SEFAZ fica instável e autoriza a nota sem nosso conhecimento, dando erro de “timeout” na conexão. Nesses casos a API cancela automaticamente a nota em duplicidade.
O problema ainda existia em estados que não possuem contingência offline, como São Paulo. Nestes casos poderia haver erro de duplicidade se a SEFAZ tivesse um erro de “timeout” no momento de autorização da nota.
Alteramos o comportamento da API agora para agendar uma correção no caso de suspeita de erro de timeout. Nossa API faz uma consulta da nota, e caso ela esteja autorizada, cancelamos automaticamente a nota com a mensagem “NFCe cancelada devido a erro de timeout na tentativa original”. A nota com erro de timeout é sempre cancelada, mesmo que não tenha nenhuma nota autorizada com a mesma referência.
Acrescentamos uma nova chave na consulta de uma NFCe, chamada “tentativas_anteriores” que devolve um array de notas com todas as tentativas anteriores que resultaram em timeout e que foram canceladas (pois pode ter havido mais de uma tentativa na mesma referência). Abaixo segue um exemplo possível de retorno:
{
"cnpj_emitente": "28999399000136",
"ref": "46262079",
"status": "autorizado",
"status_sefaz": "100",
"mensagem_sefaz": "Autorizado o uso da NF-e",
"chave_nfe": "NFe35230428199999000136650010009920901420209841",
"numero": "90",
"serie": "1",
"protocolo": "135230310999953",
"caminho_xml_nota_fiscal": "/arquivos/28999399000136/202304/XMLs/35230428199999000136650010009920901420209841-nfe.xml",
"caminho_danfe": "/notas_fiscais_consumidor/NFe35230428199999000136650010009920901420209841.html",
"qrcode_url": "https://www.nfce.fazenda.sp.gov.br/?p=NFe35230428199999000136650010009920901420209841",
"url_consulta_nf": "https://www.nfce.fazenda.sp.gov.br/consulta",
"tentativas_anteriores": [
{
"status": "cancelado",
"chave_nfe": "NFe35230999999999000136650010009920881211857222",
"numero": "88",
"serie": "1",
"protocolo": "135230310368696",
"caminho_xml_nota_fiscal": "/arquivos/28165341000136/202304/XMLs/35230999999999000136650010009920881211857222-nfe.xml",
"caminho_xml_cancelamento": "/arquivos/28165341000136/202304/XMLs/35230999999999000136650010009920881211857222-can.xml"
}
]
}
Caso você queira acompanhar as notas canceladas nesta situação, é possível criar um webhook com o tipo “nfce_correcao_timeout” que sua aplicação será notificada de cada cancelamento que acontecer nesta situação.