---
title: "An order form has expired"
method: POST
path: "order_form_expired"
---

# An order form has expired

`POST order_form_expired` (webhook)

An order form reached its `expires_at` without being signed, and is no longer actionable. Expiry is detected by an hourly job comparing calendar dates in the customer's timezone, falling back to the billing entity's and then to UTC, so the event is emitted during the day the order form expires rather than at the exact `expires_at` time. It cascades to the quote version the order form was generated from, so a `quote.voided` event with the `cascade_of_expired` reason follows.
This is a premium feature.

## Headers

- `X-Lago-Signature` string, required
- `X-Lago-Signature-Algorithm` 'jwt' | 'hmac', required
- `X-Lago-Unique-Key` string, uuid, required

## Payload

- object
  - `webhook_type` 'order_form.expired', required
  - `object_type` 'order_form', required
  - `organization_id` string, uuid, required: Unique identifier of the organization, created by Lago.
  - `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.

## Acknowledgement `200`

Return a 200 status to indicate that the data was received successfully

---

[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)
