---
title: "Void an order form"
method: POST
path: "/order_forms/{lago_id}/void"
tags: ["order_forms"]
---

# Void an order form

`POST /order_forms/{lago_id}/void`

## Request

- Base URL: `https://api.getlago.com/api/v1`
- URL: `https://api.getlago.com/api/v1/order_forms/{lago_id}/void`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/getlago/apis/lago-api-documentation/docs/order_forms/:lago_id/void/post.ts> (a function with typed inputs; its response is checked against the schema)

This endpoint voids an order form, with the `manual` reason, and cascades to the quote version it was generated from, which is voided with the `cascade_of_voided` reason.
Only a `generated` order form can be voided, so a `422` is returned once the order form has been signed, has expired or has already been voided.
A concurrent write on the same quote is reported as a `422` rather than retried, so a duplicated call can fail while the first one is still in flight.
This is a premium feature.

## Response `200`

Order form voided

- OrderForm
  - `order_form` OrderFormObject, required
    - `lago_id` string, uuid, required: Unique identifier of the order form, created by Lago.
    - `number` string, required: The unique number assigned to the order form by Lago.
    - `status` 'generated' | 'signed' | 'expired' | 'voided', required: The status of the order form. It can be any of the following values: - `generated`: the order form is waiting for the customer's signature. - `signed`: the customer has signed, and an order has been created from the order form. - `expired`: the order form reached its `expires_at` without being signed. - `voided`: the order form has been voided before being signed. Only a `generated` order form is actionable. Reaching `expired` or `voided` also voids the quote version the order form was generated from; signing does not, since the deal it quotes goes on to be executed.
    - `void_reason` 'null' | 'manual' | 'expired' | 'invalid', nullable, required: The reason why the order form is no longer actionable. It is `null` unless the `status` is `voided` or `expired`. It can be any of the following values: - `manual`: the order form has been voided explicitly, through the API or the Lago user interface. - `expired`: the order form reached its `expires_at` without being signed. - `invalid`: reserved for an order form Lago voids because it can no longer be executed. No flow writes it yet.
    - `expires_at` string, date-time, nullable, required: The date and time in UTC (ISO 8601) after which the order form is meant to expire. It is `null` when the order form never expires. It is validated when the quote is approved, where a value on or after the day the quoted deal stops being executable is rejected rather than clamped. Expiry is then swept hourly and compared by calendar date, so signing keeps succeeding until the sweep moves the order form to `expired`.
    - `signed_at` string, date-time, nullable, required: The date and time in UTC (ISO 8601) when the order form was marked as signed. It is `null` unless the `status` is `signed`.
    - `voided_at` string, date-time, nullable, required: The date and time in UTC (ISO 8601) when the order form stopped being actionable. It is set both when the order form is voided and when it expires, and is `null` otherwise.
    - `signed_document_url` string, uri, nullable, required: The URL of the signed document attached to the order form. It is `null` when no document was uploaded.
    - `lago_organization_id` string, uuid, required: Unique identifier of the organization, created by Lago.
    - `lago_customer_id` string, uuid, required: Unique identifier of the customer the order form is addressed to, created by Lago.
    - `lago_quote_id` string, uuid, required: Unique identifier of the quote the order form comes from, created by Lago.
    - `lago_quote_version_id` string, uuid, required: Unique identifier of the approved quote version the order form was generated from, created by Lago. A quote version carries at most one order form.
    - `created_at` string, date-time, required: The date and time in UTC (ISO 8601) when the order form was created.
    - `updated_at` string, date-time, required: The date and time in UTC (ISO 8601) when the order form was last updated.

## Other responses

- `401`: Unauthorized error
- `403`: Forbidden
- `404`: Not Found error
- `422`: Unprocessable entity error

## Changes

- **2026-11-03** `5d26657495a3`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/getlago/apis/lago-api-documentation/changes/order_forms/:lago_id/void/post.md)

---

[API](https://skmtc.dev/getlago/apis/lago-api-documentation.md) - [All operations](https://skmtc.dev/getlago/apis/lago-api-documentation/llms.txt) - [OpenAPI document](https://skmtc.dev/getlago/apis/lago-api-documentation/revisions/b216574b9612?raw)
