Que erro é este? Validation failed for entity TNfseEntity

Prezados há alguns dias eu perguntei sobre um fluxo para usar com a API, alguns não tem tanta experiência com API, eu tenho alguma mais nem de longe me considero um expert, observo que existem muitos status para gerir , processando, erro, pendente entre outras.
Eu criei um registro no meu ERP e tentei simular um erro, dai informei codigo_tributacao_municipio = 100, fiz o consumo e Ok recebi um json com o status erro e um objeto mensagens um array com um elemento.
Ok consegui o que eu queria que era simular um erro.
Sabemos que a Prefeitura ela envia diversas mensagens e sugestões qdo existe alguma coisa errada com a nota, a titulo de exemplo segue abaixo algumas que eu já tive oportunidade de ver

<EnviarLoteRpsResposta xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd">
	<ListaMensagemRetorno>
		<MensagemRetorno>
			<Codigo>A3</Codigo>
			<Mensagem>Item da lista de serviço informado para a operação não permite tributação fora do município</Mensagem>
			<Correcao>Consulte a legislação vigente para saber se o item informado permite a tributação fora do município (Foi informada a Natureza da Operação "2") (RPS Número: 6736 Série: 1S)</Correcao>
		</MensagemRetorno>
		<MensagemRetorno>
			<Codigo>E982</Codigo>
			<Mensagem>Item de serviço não corresponde à atividade informada na NFS-e</Mensagem>
			<Correcao>(RPS Número: 6736 Série: 1S)</Correcao>
		</MensagemRetorno>
		<MensagemRetorno>
			<Codigo>A1</Codigo>
			<Mensagem>Item da lista de serviço, código CNAE ou código de tributação informado para a operação não está cadastrado para o prestador de serviço</Mensagem>
			<Correcao>Verifique se o item ou código informado está correto. Se estiver, proceda a atualização cadastral junto à Prefeitura assim que possível, pois o item ou código informado não está cadastrado para a sua </Correcao>
		</MensagemRetorno>
	</ListaMensagemRetorno>
</EnviarLoteRpsResposta>

Mais seguindo, logo que recebi o json, alterei o meu código e no mesmo registro que meu ERP produziu enviei novamente agora com codigo_tributacao_municipio = 101
recebi a seguinte mensagem

Código: 400 Erro: ValidationFailed Descrição: Validation failed for entity TNfseEntity
como eu devo proceder???
como o dev deve proceder e interagir para a próxima requisição com os status que exigem alguma alteração para fazer um envio e ou consulta até que a nota seja autorizada?

Obs. notei que o json ele vem com um ID o que faço com este ID? entendo que ele representa um registro meu na sua base de dados mais na API não existe alteração PUT de uma nota, não existe exclusão qual seria o proposito de uso deste ID? eu a principio estou fazendo uso dele usando o seguinte fluxo de execução,
a) envio uma nota , recebo o json de retorno e se processando , atualizo minha base de dados com o id
b) consulto a api/nota pelo id e verifico o status se houve alguma mudança

o que entendo pela validação TNFSeEntity e sabendo o que eu fiz deve ter havido alguma duplicidade porque a nota era a mesma, eu enviei a primeira vez simulei um erro, em seguida enviei ela novamente mais em um ambiente de produção qdo ocorre um erro o usuario enviou uma nota , ocorreu um erro , ele faz alguma correção e dai envia novamente não iria ocorrer o mesmo erro?
eu estou também fazendo uso de um campo no json chamado referencia, no qual envio o meu ID de Registro , deveria não mais envialo?

Olá @prorisc.info,
As notas são emitidas de forma assíncrona. Ou seja, você pede pra emitir uma nota, e como retorno você recebe a informação de que o pedido foi “aceito”, e a Nuvem Fiscal irá processar e em breve você terá o resultado.

Nesse processo ele lhe retorna um id. Esse id é justamente pra você rastrear esse processo, ou seja, consultar na Nuvem Fiscal qual é a situação dessa nota que você pediu pra emitir. Pra essa consulta, você usa esse id. Em outras palavras, você pode considerar que o id retornado é o id do “pedido de emissão”.

Bem resumidamente, o fluxo é esse:

1. Solicitar uma emissão de nota pelo endpoint EmitirNfe.

Esse “pedido de emissão” pode falhar imediatamente por algum motivo. Por exemplo, JSON incorreto. Nesses casos, ele já vai retornar um status HTTP de erro (400-499 ou 500-599) e no JSON de resposta estarão todas as informações sobre os motivos da falha.

Se o pedido de emissão foi aceito, o endpoint retorna 200, e aí sim, lhe informa o id desse pedido, para você rastreá-lo.

2. Acompanhar o pedido usando o endpoint ConsultarNfe.

Para isso você deve passar o id obtido em um pedido de emissão realizado com sucesso, no item anterior.

Nesse momento, a API retorna pra você, entre outras informações, o status da nota, que pode ser:

pendente: A nota ainda será processada pela Nuvem Fiscal, está na fila, e você deve fazer uma nova consulta em breve pra saber se o status mudou. É possível que a Nuvem Fiscal já tenha feito uma tentativa de emissão, mas houve um erro temporário, e ela ainda tentará uma nova emissão.

autorizado: A nota fiscal foi enviada à SEFAZ, autorizada e portanto emitida.

rejeitado: A nota fiscal foi enviada à SEFAZ, mas foi rejeitada.

denegado: A nota fiscal foi enviada à SEFAZ, mas teve seu uso denegado.

encerrado: Evento de encerramento de MDF-e que foi registrado com sucesso na SEFAZ.

cancelado: Evento de cancelamento foi registrado com sucesso na SEFAZ.

erro: Ocorreu um erro antes da emissão da nota (falha na validação do schema, por exemplo) ou foi realizada uma tentativa de envio, porém a SEFAZ não aceitou receber a solicitação de emissão/evento. Não serão feitas novas tentativas de emissão.

Olá meu caro, sim entendi o fluxo mais no meu caso
fiz o envio recebi o json com status erro, digamos que eu tenha feito a correção dai enviei novamente e como resposta veio TNfseEntity o que fazer a partir desta resposta?
como mencionei o motivo deste erro observei que é porque eu estou enviando uma informação que é o meu Id de registro do meu banco, isto esta sendo enviado no json na propriedade referencia
mais o processo que eu segui acredito que não fiz nada que fuja ao fluxo que foi enviar, receber uma mensagem, ver que houve um erro , “corrigir” e enviar novamente

Talvez o que eu deva fazer seria não enviar nada em referencia

Fiquei um pouco confuso com o seu texto, mas se entendi bem, você recebeu um erro da Nuvem Fiscal dizendo que o campo referência não pode ser duplicado.

Sim, a propriedade referencia é opcional, e serve apenas para o seu uso. Se você enviar a propriedade referencia no seu JSON, a Nuvem Fiscal irá rejeitar pedidos de emissão que tenham o mesmo número de referencia. Sabendo dessa informação, fica a seu critério como montar e usar o campo referencia da forma que fique mais adequado ao seu sistema e ao seu fluxo.

Olá @prorisc.info,

O envio de um valor duplicado da propriedade referencia não deveria provocar um erro de TNfseEntity. Assim, para que possamos depurarmos melhor, você poderia nos fornecer o id da nota ou lote retornado pela API ou o JSON enviado na requisição que resultou nesse erro?

segue as informações, o retorno da API assim que fiz o primeiro envio foi este abaixo, como vc pode ver o status foi processando

{
    "id": "3a084426-c5f7-43c3-bfc5-059273661773",
    "created_at": "2022-12-19T23:59:01.080Z",
    "status": "processando",
    "ambiente": "homologacao",
    "referencia": "15",
    "declaracao_prestacao_servico": {
        "rps": {
            "data_emissao": "2022-12-19T16:28Z"
        },
        "competencia": "2022-12-19",
        "natureza_tributacao": 1,
        "prestador": {
            "cpf_cnpj": "42334956000170",
            "inscricao_municipal": "140018992021",
            "nome_razao_social": "DF CAR LTDA",
            "nome_fantasia": "DF CAR",
            "fone": "6635922237",
            "email": "DFCAR.AUTOELETRICA@HOTMAIL.COM",
            "endereco": {
                "logradouro": "RUA JACARANDÁ",
                "numero": "265",
                "bairro": "CENTRO",
                "codigo_municipio": "5101902",
                "cidade": "BRASNORTE",
                "uf": "MT",
                "codigo_pais": "1058",
                "pais": "BRASIL",
                "cep": "78350000"
            },
            "optante_simples_nacional": true,
            "regime_tributacao": 1,
            "regime_especial_tributacao": 6,
            "incentivo_fiscal": true,
            "incentivador_cultural": false
        },
        "tomador": {
            "cpf_cnpj": "311.734.320-27",
            "nome_razao_social": "THIAGO FONSECA",
            "email": "delphoserp@gmail.com",
            "endereco": {
                "logradouro": "RUA JACARANDÁ",
                "numero": "265",
                "bairro": "CENTRO",
                "codigo_municipio": "5101902",
                "cidade": "BRASNORTE",
                "uf": "MT",
                "codigo_pais": "1058",
                "pais": "BRASIL",
                "cep": "78350000"
            }
        },
        "servicos": [{
                "iss_retido": false,
                "responsavel_retencao": 1,
                "item_lista_servico": "14.01",
                "codigo_cnae": "4520001",
                "codigo_tributacao_municipio": "100",
                "discriminacao": "ACAI G 1 LITRO 1  VL. UNIT. 10,99 DESC  0,00 VL. TOTAL  10,99",
                "codigo_municipio": "5101902",
                "tipo_tributacao": 6,
                "exigibilidade_iss": 1,
                "codigo_municipio_incidencia": "5101902",
                "quantidade": 1,
                "valores": {
                    "valor_unitario": 10.99,
                    "valor_servicos": 10.99,
                    "valor_iss": 0.22,
                    "valor_liquido": 10.99,
                    "aliquota_iss": 2
                }
            }
        ]
    },
    "mensagens": []
}

Dai o meu sistema segue o fluxo que é fazer uma consulta que retornou este json onde o status indica erro

{
    " id ": "3a084426-c5f7-43c3-bfc5-059273661773",
    " created_at ": "2022-12-19T23:59:01.080Z",
    " status ": "erro",
    " ambiente ": "homologacao ",
    " referencia ": "15",
    " declaracao_prestacao_servico ": {
        " rps ": {
            " identificacao_rps ": {
                " numero ": "20",
                " serie ": "1"
            },
            " data_emissao ": "2022-12-19T16:28Z"
        },
        " competencia ": " 2022-12-19",
        " natureza_tributacao ": 1,
        " prestador ": {
            " cpf_cnpj ": "42334956000170",
            " inscricao_municipal ": "140018992021 ",
            " nome_razao_social ": "DF CAR LTDA ",
            " nome_fantasia ": "DF CAR ",
            " fone ": "6635922237 ",
            " email ": "DFCAR.AUTOELETRICA @ HOTMAIL.COM ",
            " endereco ": {
                " logradouro ": "RUA JACARANDÁ ",
                " numero ": "265 ",
                " bairro ": "CENTRO",
                " codigo_municipio ": "5101902 ",
                " cidade ": "BRASNORTE",
                " uf ": "MT",
                " codigo_pais ": "1058",
                " pais ": "BRASIL",
                " cep ": "78350000"
            },
            " optante_simples_nacional ": true,
            " regime_tributacao ": 1,
            " regime_especial_tributacao ": 6,
            " incentivo_fiscal ": true,
            " incentivador_cultural ": false
        },
        " tomador ": {
            " cpf_cnpj ": "311.734.320-27",
            " nome_razao_social ": "THIAGO FONSECA ",
            " email ": " delphoserp @ gmail.com ",
            " endereco ": {
                " logradouro ": "RUA JACARANDÁ ",
                " numero ": "265",
                " bairro ": "CENTRO ",
                " codigo_municipio ": "5101902 ",
                " cidade ": "BRASNORTE",
                " uf ": "MT",
                " codigo_pais ": "1058",
                " pais ": "BRASIL",
                " cep ": "78350000"
            }
        },
        " servicos ": [{
                " iss_retido ": false,
                " responsavel_retencao ": 1,
                " item_lista_servico ": "14.01",
                " codigo_cnae ": "4520001",
                " codigo_tributacao_municipio ": "100",
                " discriminacao ": "ACAI G 1 LITRO 1 VL.UNIT. 10,99 DESC 0,00 VL.TOTAL 10,99",
                " codigo_municipio ": "5101902 ",
                " tipo_tributacao ": 6,
                " exigibilidade_iss ": 1,
                " codigo_municipio_incidencia ": "5101902",
                " quantidade ": 1,
                " valores ": {
                    " valor_unitario ": 10.99,
                    " valor_servicos ": 10.99,
                    " valor_iss ": 0.22,
                    " valor_liquido ": 10.99,
                    " aliquota_iss ": 2
                }
            }
        ]
    },
    " mensagens ": [{
            " codigo ": " 999 ",
            " descricao ": " Erro ao enviar o lote."
        }
    ]
}

é que como eu queria sumular mais erros ( era o meu intento para poder capturar mais informações no objeto mensagens ) eu alterei e fiz o envio do mesmo registro segue o meu envio, veja que a alteração foi colocar 101 em codigo_tributacao_municipio

{
    "ambiente": "homologacao",
    "rps": {
        "referencia": "15",
        "data_emissao": "2022-12-19T16:28:00",
        "competencia": "2022-12-19",
        "natureza_tributacao": 1,
        "prestador": {
            "cpf_cnpj": "42334956000170"
        },
        "tomador": {
            "cpf_cnpj": "311.734.320-27",
            "nome_razao_social": "THIAGO FONSECA",
            "fone": null,
            "email": "delphoserp@gmail.com",
            "endereco": {
                "logradouro": "RUA JACARANDÁ",
                "numero": "265",
                "bairro": "CENTRO",
                "codigo_municipio": "5101902",
                "cidade": "BRASNORTE",
                "uf": "MT",
                "codigo_pais": "1058",
                "pais": "BRASIL",
                "cep": "78350000"
            }
        },
        "servicos": [{
                "iss_retido": false,
                "responsavel_retencao": 1,
                "item_lista_servico": "14.01",
                "codigo_cnae": "4520001",
                "codigo_tributacao_municipio": "101",
                "discriminacao": "ACAI G 1 LITRO 1  VL. UNIT. 10,99 DESC  0,00 VL. TOTAL  10,99",
                "codigo_municipio": "5101902",
                "exigibilidade_iss": 1,
                "codigo_municipio_incidencia": "5101902",
                "valores": {
                    "valor_unitario": 10.99,
                    "valor_servicos": 10.99,
                    "valor_deducoes": 0.0,
                    "valor_pis": 0.0,
                    "valor_cofins": 0.0,
                    "valor_inss": 0.0,
                    "valor_ir": 0.0,
                    "valor_csll": 0.0,
                    "valor_outras_retencoes": 0.0,
                    "valor_iss": 0.22,
                    "valor_iss_retido": 0.0,
                    "valor_liquido": 10.99,
                    "aliquota_iss": 2.0,
                    "desconto_incondicionado": 0.0,
                    "desconto_condicionado": 0.0
                }
            }
        ]
    }
}


isto resultou neste retorno abaixo e o codigo http 400

{
" error ": {
" code ": " ValidationFailed ",
" message ": " Validation failed for entity TNfseEntity ",
" errors ": [{
" code ": " ValidationError ",
" message ": " Field ‘referencia’ must be unique "
}, {
" message ": " Field ‘referencia’ must be unique "
}
]
}
}



@prorisc.info,

É, o problema é realmente por causa de valor duplicado na propriedade referencia. No caso, basta seguir as orientações que o @wlandgraf lhe passou.