# Set Up Auto-Expire (/how-to/payments/set-up-auto-expire)



Auto-expire lets you set a deadline on a booking. When the deadline passes without payment, Resytech automatically changes the booking status. This is useful for holding time slots while waiting for a deposit or invoice payment, without the risk of indefinitely blocking your calendar.

Prerequisites [#prerequisites]

* An existing booking in **draft** or **pending** status.
* The booking's location must have a configured time zone (used to calculate the exact expiration moment).

Set Up Auto-Expire on a Booking [#set-up-auto-expire-on-a-booking]

1. Open the booking from **Dashboard > Bookings** or the calendar.
2. Click the **Auto-Expire** option (or navigate to the auto-expire settings for the booking).
3. Configure the expiration:

| Field               | Required | Description                                                                                                                |
| ------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------- |
| **Expire Date**     | Yes      | The date when the booking should expire if unpaid.                                                                         |
| **Expire Time**     | Yes      | The time of day for expiration. Combined with the date, this is the exact deadline.                                        |
| **Expire Status**   | Yes      | The status the booking will change to when it expires. Typically **Canceled**, but can be set to any valid booking status. |
| **Notify Customer** | Yes      | Whether to send the customer an email notification when the booking expires.                                               |

4. Click **Save**.

Valid Booking Statuses for Expiration Target [#valid-booking-statuses-for-expiration-target]

| Status     | Description                                                           |
| ---------- | --------------------------------------------------------------------- |
| `canceled` | The booking is canceled and the time slot is freed up (most common)   |
| `pending`  | Change from draft to pending (less common, used for staged workflows) |
| `draft`    | Revert to draft status                                                |

How It Works [#how-it-works]

When you set an auto-expire:

1. Resytech calculates the exact UTC expiration time using the date, time, and the location's time zone.
2. A background job is scheduled for that exact moment.
3. If a previous auto-expire was set on this booking, the old job is canceled and replaced.
4. When the job fires:
   * The booking status is changed to the specified target status.
   * An `expired` event is logged in the booking's audit trail.
   * If notification is enabled, the customer receives an email.

Modify or Remove Auto-Expire [#modify-or-remove-auto-expire]

Change the Deadline [#change-the-deadline]

Simply set a new expiration date and time. The old scheduled job is automatically canceled and replaced with the new one.

Remove Auto-Expire [#remove-auto-expire]

To remove auto-expire entirely, clear the expiration settings on the booking. The scheduled background job is deleted.

Combining Auto-Expire with Invoices [#combining-auto-expire-with-invoices]

A common workflow:

1. Create a booking in **Draft** status.
2. Send an [invoice](/how-to/payments/create-an-invoice) for a deposit with **Confirm on Pay** enabled.
3. Set auto-expire for 48 hours from now with target status **Canceled** and customer notification enabled.

If the customer pays the invoice within 48 hours:

* The payment updates the balance.
* The booking is confirmed automatically (because Confirm on Pay is set).
* The auto-expire is still technically scheduled but has no effect since the booking is already confirmed.

If the customer does not pay:

* The booking is canceled at the deadline.
* The time slot is freed for other customers.
* The customer receives a notification that their booking has expired.

Combining Auto-Expire with Down Payments [#combining-auto-expire-with-down-payments]

Activities can be configured with down payment settings:

| Setting                          | Description                                                                             |
| -------------------------------- | --------------------------------------------------------------------------------------- |
| **Down Payment Enabled**         | Whether this activity requires a down payment                                           |
| **Down Payment Percent**         | Percentage of the total required upfront (e.g., 50%)                                    |
| **Down Payment Collection Days** | Number of days before the booking date by which the remaining balance must be collected |

When down payments are enabled, you can use auto-expire to enforce the collection deadline. For example, if the remaining balance is due 14 days before the activity date, set the auto-expire to that date.

Audit Trail [#audit-trail]

Auto-expire actions are recorded in the booking's event log:

* **auto\_expire\_change**: Logged when auto-expire is set or modified. Includes the scheduled expiration date.
* **expired**: Logged when the booking actually expires and the status changes.

Tips [#tips]

* **Always set the expire time to business hours** so that if a customer tries to call to make payment just before the deadline, your team is available.
* **Use customer notifications** so the customer is aware their booking was canceled. This avoids surprises and potential disputes.
* **Auto-expire does not process refunds.** If the booking had partial payments, those remain on the booking after expiration. You may need to [issue a refund](/how-to/payments/issue-a-refund) separately.
* **Time zone matters.** The expiration is calculated using the location's time zone. A booking in a New York location set to expire at 5:00 PM expires at 5:00 PM Eastern, regardless of where the staff member is.

What to Do Next [#what-to-do-next]

* [Create an Invoice](/how-to/payments/create-an-invoice) -- pair auto-expire with an invoice for a deposit workflow.
* [Issue a Refund](/how-to/payments/issue-a-refund) -- refund partial payments on expired bookings if needed.
