## TL;DR

Expired quotes cannot be accepted, but you can clone or extend them: update the expires_at to a future date to revive the same quote, or duplicate it as a new quote if terms changed. Re-send the quote link to the customer after extending. Set expiries deliberately going forward so quotes do not die silently mid-negotiation.

## Steps

1. Retrieve the quote and confirm status expired and the terms are still valid.
   Expected output: You know the deal on the table is still the right one.
2. If terms are unchanged, update expires_at to a new future date.
   Expected output: The same quote revives with its history intact.
3. If pricing or lines changed, clone the quote into a new draft, edit, and finalize.
   Expected output: The customer sees accurate new terms.
4. Re-send the quote URL to the customer and confirm receipt.
   Expected output: The customer can act on the live quote.
5. Set a reminder before the new expiry so sales follows up in time.
   Expected output: No more silent expiries.

## When to use

- A quote expired before acceptance
- The customer still wants the quoted deal
- You need to revive vs recreate guidance

## When not to use

- The quote was accepted (it converts, not extends)
- Terms changed significantly (clone fresh instead)
- You want to edit lines on the expired quote (clone it)

## Compatibility

Stripe Quotes API; expires_at on quote objects. Dashboard quote actions mirror the API.

## Variant phrasings

### ### Stripe extend expired quote

### ### quote expired cannot accept Stripe

### ### revive Stripe quote expires_at

## Root cause

Expiry exists so stale pricing cannot be accepted after costs move; Stripe enforces it strictly rather than warning, because a silently honored expired quote is a margin leak. Revival is explicit (new date or new quote) so the seller re-approves the terms.

## Edge cases

- Accepted-then-expired is impossible; expiry only gates acceptance
- Webhook quote.finalized vs expired: listen for status changes to alert sales
- Very old expired quotes may reference archived prices; cloning surfaces that

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_WwOAmsEGiCV_EEPQ009SRA
