NFS-e
Manifestar sobre NFS-e recebida
Registra a manifestação oficial de confirmação ou rejeição em uma NFS-e recebida; assíncrono, 200 com recibo de aceitação.
/openapi/v2/empresas/{empresaId}/nfse/recebidas/{chaveAcesso}/manifestartoken, timestamp e sign, veja Autenticação.Esta empresa age como tomadora ou intermediária e se manifesta formalmente sobre uma NFS-e recebida: tipo escolhe entre Confirmacao e Rejeicao, e na rejeição o corpo leva ainda o código oficial do motivo. A aceitação é assíncrona, e o resultado chega pelos webhooks nfse.inbound.manifested / nfse.inbound.manifest_failed, que exigem assinatura explícita, ou é lido no bloco manifestacao do detalhe da NFS-e recebida. Cada parte manifesta uma única vez por nota: uma chamada após confirmação, rejeição ou confirmação tácita devolve 10018042.
Parâmetros de caminho
empresaId* | string | Identificador da empresa |
chaveAcesso* | string | Chave de acesso |
* Campo obrigatório
Corpo da requisição
tipo* | string | Tipo da manifestação |
codigoMotivo*obrigatório na rejeição | string | Código do motivo da rejeição |
motivo | string | Descrição da rejeição |
* Campo obrigatório
nfse.inbound.manifested / nfse.inbound.manifest_failed, ou pelo bloco manifestacao no detalhe da NFS-e recebida.nfseTaskId | int | Id da tarefa na plataforma |
status | int | Status da tarefa |
reused | bool | Tarefa reaproveitada |
createTime | string | Momento da aceitação |
A plataforma escolhe o código do evento pelo papel desta empresa na nota, o chamador não envia código nenhum: tomador confirma com 203202 e rejeita com 203206; intermediário confirma com 204203 e rejeita com 204207. O evento é registrado no emissor nacional e volta a todas as partes da nota pela distribuição nacional.
Confirmar
Só tipo. Enviar codigoMotivo ou motivo junto é recusado com 10018001.
{ "tipo": "Confirmacao" }
tipo* | string | Tipo da manifestação |
* Campo obrigatório
Rejeitar
tipo mais o código oficial do motivo; a descrição é opcional.
{"tipo": "Rejeicao","codigoMotivo": "3","motivo": "Servico nao prestado ao tomador"}
tipo* | string | Tipo da manifestação |
codigoMotivo* | string | Código do motivo |
motivo | string | Descrição |
* Campo obrigatório
O HTTP 200 é só o recibo de aceitação; reenviar a mesma nota enquanto a tarefa original está em andamento devolve reused=true. O resultado chega pelos webhooks nfse.inbound.manifested / nfse.inbound.manifest_failed, que exigem assinatura explícita em Registrar webhook, ou é lido no bloco manifestacao do detalhe da NFS-e recebida. A falha importa: sem manifestação no prazo, o município registra confirmação tácita, então repita a manifestação antes do prazo.
Registrada: nfse.inbound.manifested
Envelope de evento; data mostrado abaixo. Confirmação e rejeição chegam pelo mesmo evento, distinguidas por tipo.
{"version": "1.0","event_id": "1950000000000004","event_type": "nfse.inbound.manifested","occurred_at": "2026-09-21T14:00:05Z","data": {"inbound_id": "1950000000000777","chave": "35503082406730610001340000000000000000000000000077","tipo": "Rejeicao","evento": "203206","codigo_motivo": "3","motivo": "Servico nao prestado ao tomador","protocolo": "3550308000000000000000000000000000000000000000000001"}}
inbound_id* | string | Id da nota recebida na plataforma |
chave* | string | Chave de acesso |
tipo* | string | Tipo da manifestação registrada |
evento* | string | Código oficial do evento registrado |
codigo_motivo | string | Código do motivo |
motivo | string | Descrição do motivo |
protocolo* | string | Protocolo da autoridade |
* Campo obrigatório
Falhou: nfse.inbound.manifest_failed
A autoridade recusou o evento ou a mensagem não passou na validação do formato oficial (10018064). O bloco manifestacao continua null; repita a manifestação antes do prazo.
{"version": "1.0","event_id": "1950000000000006","event_type": "nfse.inbound.manifest_failed","occurred_at": "2026-09-21T14:00:05Z","data": {"chave": "35503082406730610001340000000000000000000000000077","tipo": "Rejeicao","codigo": "E0231","motivo": "Evento nao permitido para o tipo de autor"}}
chave* | string | Chave de acesso |
tipo* | string | Tipo da manifestação tentada |
codigo | string | Código da falha |
motivo* | string | Motivo da falha |
* Campo obrigatório
Bloco manifestacao no detalhe
Mesmo formato no detalhe e nos itens da lista; null enquanto não houver manifestação.
{"manifestacao": {"status": "Confirmada","codigoEvento": "203202","codigoMotivo": null,"motivo": null,"protocolo": "3550308000000000000000000000000000000000000000000001","data": "2026-09-21T14:00:00-03:00","linkXml": "https://api.v2.tffiscal.com/openapi/files/xml/9102?token=..."}}
status* | string | Estado da manifestação |
codigoEvento | string | Código oficial do evento |
codigoMotivo | string | Código do motivo da rejeição |
motivo | string | Descrição do motivo |
protocolo | string | Protocolo da autoridade |
data | string | Momento do registro |
linkXml | string | Link da mensagem do evento |
* Campo obrigatório
O status da nota recebida continua sendo Autorizada / Cancelada / Substituida; a manifestação desta empresa é guardada à parte no bloco manifestacao, e cada parte manifesta uma única vez por nota. A confirmação tácita 205204 e a anulação de rejeição 205208 do município chegam pela distribuição nacional e atualizam o bloco do mesmo jeito. Uma empresa de São Paulo também pode manifestar sobre notas do padrão nacional: a manifestação passa pelo emissor nacional, independentemente do canal de emissão da própria empresa.
Pendente ──┬──► Confirmada│├──► Rejeitada ──► RejeicaoAnulada│└──► ConfirmacaoTacita
tipoTipo da manifestação
| Valores | Significado |
|---|---|
| Confirmacao | Confirma a nota; evento 203202 (tomador) ou 204203 (intermediário) |
| Rejeicao | Rejeita a nota com um código de motivo; evento 203206 (tomador) ou 204207 (intermediário) |
codigoMotivoCódigo do motivo da rejeição
Obrigatório com tipo=Rejeicao; com tipo=Confirmacao não pode ser enviado.
| Valores | Significado |
|---|---|
| 1 | Nota em duplicidade |
| 2 | O tomador já emitiu a nota por conta própria |
| 3 | O fato gerador não ocorreu, o serviço não foi prestado |
| 4 | Parte responsável errada |
| 5 | Valor ou dados incorretos |
| 9 | Outros; explique em motivo |
statusStatus da tarefa
| Valores | Significado |
|---|---|
| 0 | Pendente, aguardando processamento |
| 1 | Em processamento |
| 2 | Sucesso |
| 3 | Falha |
manifestacao.statusEstado da manifestação
null no campo significa sem manifestação; no filtro da lista esse caso é Pendente.
| Valores | Significado |
|---|---|
| Confirmada | Confirmada por esta empresa (203202 / 204203); terminal |
| Rejeitada | Rejeitada por esta empresa (203206 / 204207); o município ainda pode anular |
| ConfirmacaoTacita | Confirmação tácita do município por falta de manifestação no prazo (205204); terminal |
| RejeicaoAnulada | O município anulou a rejeição desta empresa (205208); terminal |
manifestacao.codigoEventoCódigo do evento de manifestação
| Valores | Significado |
|---|---|
| 203202 | Confirmação pelo tomador |
| 204203 | Confirmação pelo intermediário |
| 203206 | Rejeição pelo tomador |
| 204207 | Rejeição pelo intermediário |
| 205204 | Confirmação tácita pelo município |
| 205208 | Rejeição anulada pelo município |
| Código | HTTP | |
|---|---|---|
| 10018001 | 400 | Parâmetros recusados na aceitação: tipo fora de Confirmacao / Rejeicao, codigoMotivo ausente ou fora da enumeração numa rejeição, codigoMotivo / motivo enviados com uma confirmação, ou motivo fora de 15 a 255 caracteres. A mensagem diz o motivo exato. |
| 10018003 | 404 | Documento não encontrado: a chave de acesso não está entre as NFS-e recebidas desta empresa. Confira chaveAcesso e empresaId. |
| 10018042 | 400 | A manifestação não é permitida no estado atual: a nota está cancelada ou substituída, já existe uma manifestação desta empresa (confirmada, rejeitada ou confirmação tácita), ou esta empresa não é o tomador nem o intermediário da nota. |
