An order form has expired

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.

postWebhookorder_form_expired

Headers

X-Lago-Signaturestring required
Example:AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8=

Signature of the webhook payload. The format depends on X-Lago-Signature-Algorithm: hmac is the Base64 encoding of an HMAC-SHA256 digest of the payload, jwt is an RS256 JSON Web Token (a string starting with eyJ).

X-Lago-Signature-Algorithm'jwt' | 'hmac' required
Example:hmac

Algorithm used to generate the signature

X-Lago-Unique-Keystring uuid required
Example:1a901a90-1a90-1a90-1a90-1a901a901a90

Unique id of the webhook. It can be used for idempotency

Payload

webhook_type'order_form.expired' required
object_type'order_form' required
organization_idstring uuid required

Unique identifier of the organization, created by Lago.

Example payload

{
  "organization_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
  "order_form": {
    "lago_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
    "number": "OF-2026-0001",
    "status": "generated",
    "void_reason": "manual",
    "expires_at": "2026-06-30T23:59:59Z",
    "signed_at": "2026-04-29T08:59:51Z",
    "voided_at": "2026-04-29T08:59:51Z",
    "signed_document_url": "https://api.getlago.com/rails/active_storage/blobs/redirect/eyJfcmFpbHMi/OF-2026-0001",
    "lago_organization_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
    "lago_customer_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
    "lago_quote_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
    "lago_quote_version_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
    "created_at": "2026-04-29T08:59:51Z",
    "updated_at": "2026-04-29T08:59:51Z"
  }
}

Response

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

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.