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.
Headers
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).
Algorithm used to generate the signature
Unique id of the webhook. It can be used for idempotency
Payload
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.