*MCP › Reference › Finance › Proformas*

# Get a proforma

> Returns a proforma by its identifier, the same card as `GET /api/v1/proformas`: number, lifecycle and commercial status, customer, source order, project, currency and amounts.

It shares scope with invoices because a proforma is the invoice that is not one yet.

TOOL `filmo_proformas_get` · `invoices:read` · 120/min · Server annotation: Read-only · Server annotation: Idempotent

## Arguments

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `proformaId` | string | Yes | Proforma identifier. |

## Result

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

| Name | Type | Description |
| --- | --- | --- |
| `id` | string | Proforma identifier. |
| `proformaNumber` | string | Proforma number; null while it is a draft. |
| `status` | string | Document lifecycle status. |
| `operativeStatus` | string | Commercial status: pending (awaiting an answer), confirmed (accepted by the customer) or cancelled; null if not recorded. |
| `issueDate` | string<date-time> | Issue date in ISO 8601 UTC; null while it has none. |
| `currency` | string | Currency of the amounts, as an ISO 4217 code. |
| `contact` | object | Contact the proforma is issued to; null if not recorded. |
| `contact.id` | string | Contact identifier. |
| `contact.name` | string | Contact name. |
| `orderId` | string | Source order of the proforma; null if it does not come from one. |
| `orderNumber` | string | Number of that order; null if it does not come from one. |
| `projectId` | string | Project linked to the proforma; null if none. |
| `subTotal` | string | Subtotal before discounts and taxes, as a decimal string. |
| `discountTotal` | string | Total discounts, as a decimal string. |
| `taxesPrice` | string | Tax total, as a decimal string. |
| `netPrice` | string | Taxable base, as a decimal string. |
| `grossPrice` | string | Total including taxes, as a decimal string. |
| `totalPaid` | string | Advance payments received against the proforma, as a decimal string; null if none recorded. |
| `createdAt` | string<date-time> | Creation date in ISO 8601 UTC. |
| `updatedAt` | string<date-time> | Last modification date in ISO 8601 UTC. |

*Call · filmo_proformas_get*

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "filmo_proformas_get",
    "arguments": {
      "proformaId": "prof_8f2a1c"
    }
  }
}
```

*Result (generated from the schema)*

```json
{
  "structuredContent": {
    "data": {
      "id": "id_8f2a1c",
      "proformaNumber": "<proformaNumber>",
      "status": "<status>",
      "operativeStatus": "<operativeStatus>",
      "issueDate": "2026-09-01T08:00:00Z",
      "currency": "EUR",
      "contact": {
        "id": "id_8f2a1c",
        "name": "Example"
      },
      "orderId": "orde_8f2a1c",
      "orderNumber": "<orderNumber>",
      "projectId": "proj_8f2a1c",
      "subTotal": "1234.50",
      "discountTotal": "1234.50",
      "taxesPrice": "1234.50",
      "netPrice": "1234.50",
      "grossPrice": "1234.50",
      "totalPaid": "1234.50",
      "createdAt": "2026-09-01T08:00:00Z",
      "updatedAt": "2026-09-01T08:00:00Z"
    },
    "meta": {
      "rateLimit": {
        "limit": 120,
        "remaining": 119,
        "reset": 42
      },
      "etag": "\"3sT3d9pBvZq4h2N0w8x1YkLmQ7c\""
    }
  }
}
```

## The same operation by REST

This tool runs [`GET /api/v1/proformas/{proformaId}`](https://docs.filmo.io/rest-api/endpoint-reference/proformas/get-a-proforma).

---

Canonical URL: https://docs.filmo.io/mcp/tools/proformas/filmo-proformas-get  
Last updated: 2026-10-25