> ## Documentation Index
> Fetch the complete documentation index at: https://docs.spedy.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Manifestação

> Confirmar ou rejeitar uma NFS-e tomada perante o ambiente nacional, e o caráter definitivo da decisão.

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.

<Note>
  A manifestação não altera a disponibilidade do XML. Diferente da
  [NF-e recebida](/guides/notas-recebidas/nfe/manifestacao), 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.
</Note>

## Manifestações aceitas

O padrão nacional da NFS-e reconhece **dois** atos do tomador:

| `status`    | Nome                   | Aplicação                                    | Motivo          | Justificativa |
| ----------- | ---------------------- | -------------------------------------------- | --------------- | ------------- |
| `confirmed` | Confirmação do Tomador | A operação ocorreu conforme descrita na nota | Não aceito      | Não aceita    |
| `rejected`  | Rejeição do Tomador    | A nota é contestada pelo tomador             | **Obrigatório** | Opcional      |

<Warning>
  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.
</Warning>

## 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

```json POST /v1/inbound-service-invoices/{id}/manifest theme={null}
{
  "status": "confirmed"
}
```

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:

```json POST /v1/inbound-service-invoices/{id}/manifest theme={null}
{
  "status": "rejected",
  "reasonCode": "valueServiceOrDateError",
  "justification": "Valor cobrado diverge do contrato firmado para o serviço."
}
```

### Motivos da rejeição

O `reasonCode` pertence a uma lista fechada do padrão nacional:

| `reasonCode`              | Motivo                                                                                      |
| ------------------------- | ------------------------------------------------------------------------------------------- |
| `duplicate`               | NFS-e em duplicidade                                                                        |
| `alreadyIssuedByTaker`    | NFS-e já emitida pelo tomador                                                               |
| `noTriggeringEvent`       | Não ocorrência do fato gerador                                                              |
| `taxLiabilityError`       | Erro quanto à responsabilidade tributária                                                   |
| `valueServiceOrDateError` | Erro quanto ao valor do serviço, às deduções, ao serviço prestado ou à data do fato gerador |
| `other`                   | Outros motivos                                                                              |

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.

<Note>
  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.
</Note>

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

<Steps>
  <Step title="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.
  </Step>

  <Step title="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.
  </Step>

  <Step title="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.
  </Step>
</Steps>

<Note>
  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.
</Note>
