*MCP › Reference › Finance › Supplier invoices*

# Void a supplier invoice

> Voids an already VALIDATED received invoice with a reason, which is required and is kept.

> **Not reversible:** Voiding takes the document to `voided`, and no operation undoes it.

> **Requires human confirmation:** Put this tool on your client's “ask before running” list. The annotations are hints that the server declares, not guarantees: do not decide the approval from `destructiveHint` alone. The server flags this tool with `_meta["anthropic/requiresUserInteraction"]`, which clients that honor it use to ask a person before every call.

It keeps its internal number —voiding does not release the numbering— and moves to `voided`. Only from `validated`: a draft is deleted from the application, not voided. It does not touch the treasury payment that may have paid it or the purchase order that originated it. It requires the purchases add-on (402 without it). Returns the full invoice, the same projection as its GET.

TOOL `filmo_supplier_invoices_void` · `supplier-invoices:write` · 120/min · May need an add-on · Server annotation: Destructive · Requires human confirmation · Not reversible

## Arguments

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `supplierInvoiceId` | string | Yes | Supplier invoice identifier. |
| `reason` | string | Yes | Reason for voiding. It is stored on the invoice and in its history. |
| `idempotencyKey` | string | No | Idempotency key chosen by the client (a UUID is recommended). Repeating the same key with the same arguments within 24 h returns the stored response without executing again; with different arguments it responds 422. It is the safe way to retry after a network failure. |
| `ifMatch` | string | No | Optimistic locking: the meta.etag you got from the detail read of this resource (or "*"). If the resource changed since, the call fails with 412 precondition_failed before writing anything; read it again and retry. Omit it to write unconditionally. |

## Result

On success the result carries `structuredContent` with `data` and `meta`. These are the attributes of `data`.

| Name | Type | Description |
| --- | --- | --- |
| `id` | string | Supplier invoice identifier. |
| `supplierInvoiceNumber` | string | Number the supplier put on the invoice; null if it was not recorded. |
| `status` | string | Status of the invoice within the purchasing cycle. |
| `createdAt` | string<date-time> | Creation date in ISO 8601 UTC. |
| `updatedAt` | string<date-time> | Last modification date in ISO 8601 UTC. |

*Call · filmo_supplier_invoices_void*

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "filmo_supplier_invoices_void",
    "arguments": {
      "supplierInvoiceId": "supp_8f2a1c",
      "reason": "<reason>"
    }
  }
}
```

*Result (generated from the schema)*

```json
{
  "structuredContent": {
    "data": {
      "id": "id_8f2a1c",
      "supplierInvoiceNumber": "<supplierInvoiceNumber>",
      "status": "<status>",
      "createdAt": "2026-09-01T08:00:00Z",
      "updatedAt": "2026-09-01T08:00:00Z"
    },
    "meta": {
      "idempotencyKey": "<the key you sent, or the one the server generated>",
      "rateLimit": {
        "limit": 120,
        "remaining": 119,
        "reset": 42
      }
    }
  }
}
```

## The same operation by REST

This tool runs [`POST /api/v1/supplier-invoices/{supplierInvoiceId}/void`](https://docs.filmo.io/rest-api/endpoint-reference/supplier-invoices/void-a-supplier-invoice).

---

Canonical URL: https://docs.filmo.io/mcp/tools/supplier-invoices/filmo-supplier-invoices-void  
Last updated: 2026-10-25