# Checkout protection

Two customers can look at the same free day at once. DueBack makes sure only one of them gets it: dates are held when they go into the cart, and a check at checkout refuses dates that are full, invalid or missing their deposit.

## Turn it on

The check is turned on for you when you save your first rental product. Its status is under **Settings → Checkout protection**, on the **Rental date check** card: **On**, **Turned off** or **Not set up**. Click **Turn on** or **Set up now** if it isn't on.

## What it checks

At each checkout step, every rental line must have:

- dates chosen in the date picker, unchanged since they were added;
- a start date that still respects your minimum notice, and an end date inside **Book up to**;
- days that are not fully booked;
- your rental terms accepted;
- a deposit line with the same quantity, when the product has a deposit.

A deposit line without its rental is refused too.

## What customers see

Checkout shows a message and the customer can't pay until they fix the cart, for example:

- *Choose rental dates for Silk gown on its product page, then add it to the cart again.*
- *Silk gown is no longer available from 14 Nov to 16 Nov. Remove it and choose other dates.*
- *The deposit for Silk gown is missing. Remove it and add it again from its product page.*
- *Accept the rental terms for Silk gown on its product page, then add it to the cart again.*

## How it knows what's booked

Checkout can't call DueBack directly, so DueBack keeps a list of fully booked days on each rental product (in an app metafield). The list is refreshed within about a minute of every change, and every product is refreshed again at least twice a day. It covers the next 180 days or so.

The list counts bookings and blocked dates. Dates held in other carts aren't in it: those are protected by the 30-minute hold when the customer adds to cart.

## If the check fails

If the check itself errors, Shopify lets the order through rather than stopping a sale. DueBack still books the order and flags any clash as a conflict on Home. See [Bookings](https://dueback.misoapps.com/docs/bookings#conflicts).

## Orders that skip checkout

Orders from POS, draft orders and order edits don't go through the online checkout, so the check doesn't run. DueBack still books them; if their dates are full, the booking is marked as a conflict and you get an email.
