Skip to main content
A manifestação do tomador registra a posição da sua empresa sobre uma NFS-e emitida contra o seu CNPJ: a confirmação de que a operação ocorreu ou a contestação da nota. Ela é enviada ao ambiente nacional, que a devolve posteriormente como evento vinculado à nota.
A manifestação não altera a disponibilidade do XML. Diferente da NF-e recebida, em que manifestar é o que libera o XML autorizado, na NFS-e o XML e o DANFSe estão disponíveis desde a importação. Aqui a manifestação tem função exclusivamente declaratória.

Manifestações aceitas

O padrão nacional da NFS-e reconhece dois atos do tomador:
O padrão nacional não prevê a Ciência da operação. Os valores acknowledged, unknown e notPerformed, válidos na NF-e, são recusados na NFS-e.

Caráter definitivo

A primeira manifestação é definitiva. Registrada a Confirmação ou a Rejeição, não é possível manifestar novamente sobre a mesma nota: o padrão não prevê substituição nem desfazimento pelo tomador. O comportamento é mais restritivo que o da NF-e, em que a Ciência pode ser sucedida por uma manifestação definitiva. Na NFS-e não existe etapa reversível, o que torna a conferência prévia da nota parte necessária do fluxo. A manifestação também é recusada em duas situações:
  • Nota já manifestada, inclusive quando a manifestação registrada foi a confirmação tácita emitida pela administração por decurso de prazo.
  • Nota cancelada.

Como manifestar

POST /v1/inbound-service-invoices/{id}/manifest
A Confirmação não admite acompanhamento: o leiaute nacional não prevê motivo nem justificativa para esse evento, e o envio de qualquer um dos dois é recusado. Na Rejeição, o reasonCode é obrigatório:
POST /v1/inbound-service-invoices/{id}/manifest

Motivos da rejeição

O reasonCode pertence a uma lista fechada do padrão nacional: Valores fora dessa lista são recusados.

Justificativa

A justificativa é opcional na Rejeição. Quando informada, precisa ter entre 15 e 255 caracteres — o limite inferior é validado tanto quanto o superior. Use other acompanhado de justificativa quando nenhum dos motivos específicos descrever o caso.

Resposta e efeitos

A resposta é síncrona: a Spedy envia a manifestação ao ambiente nacional e aguarda o retorno. Em caso de recusa, a requisição retorna erro com o motivo e nada é gravado — a nota permanece sem manifestação e a operação pode ser repetida.
A rejeição não cancela a nota. Ela permanece authorized no ambiente nacional, apenas contestada. O cancelamento é ato do prestador ou da autoridade tributária, registrado por evento próprio.
Registrada a manifestação, o ambiente nacional a devolve pela distribuição como evento da nota. A partir desse momento:
  • o evento consta em events, com type: "manifestation";
  • o webhook inbound_invoice.event é disparado;
  • manifestation, no detalhe da nota, reflete o que foi registrado.
A reconciliação não é imediata: depende do ciclo de distribuição seguinte. Reagir ao webhook é preferível a consultar a nota repetidamente após manifestar.

Fluxo recomendado

1

A nota é importada completa

A chegada é sinalizada pelo webhook inbound_invoice.detected, com isComplete: true. O XML e o DANFSe já podem ser obtidos para conferência de prestador, valor, descrição do serviço e data.
2

Conferência e decisão

Confirme (confirmed) quando a operação tiver ocorrido conforme descrita, ou rejeite (rejected, com reasonCode) quando houver o que contestar. Como não há reversão, a manifestação deve ocorrer após a conferência.
3

A manifestação retorna como evento

No ciclo de distribuição seguinte, o evento registrado retorna e dispara inbound_invoice.event. A partir daí, manifestation no detalhe da nota apresenta o status, a data, o motivo e a justificativa.
Na ausência de manifestação, a administração pode registrar a confirmação tácita por decurso de prazo. A nota passa a manifestation.status: "confirmed" sem ação do tomador e, a partir daí, não admite manifestação.