# Checkout Settings

The Checkout Settings page (`WP Admin > POS > Settings > Checkout`) controls which payment gateways appear in the POS, how orders are processed, and which notification emails fire for POS sales.

## Email Notifications[​](#email-notifications "Direct link to Email Notifications")

At the top of the page are three groups of email toggles — **Admin emails**, **Customer emails**, and **Cashier emails** — that control which WooCommerce notification emails are sent for POS orders, independently of your site-wide WooCommerce email settings.

See **[Email Notifications](/settings/wp-admin/email-notifications.md)** for the full reference, including per-email toggle defaults, the cashier-recipient model, common scenarios, and developer hooks.

## Payment Gateways[​](#payment-gateways "Direct link to Payment Gateways")

This section lists all WooCommerce payment gateways installed on your site. Each gateway can be independently enabled or disabled for the POS.

| Column           | Description                                                                                                 |
| ---------------- | ----------------------------------------------------------------------------------------------------------- |
| **Default**      | Choose which gateway is pre-selected when a cashier opens the checkout                                      |
| **Gateway**      | The payment gateway name                                                                                    |
| **Gateway ID**   | The WooCommerce gateway identifier (useful for developers)                                                  |
| **Enabled**      | Toggle the gateway on or off for POS checkout                                                               |
| **Order Status** | The status a POS order is set to when it's paid with this gateway (see [Order Status](#order-status) below) |

Each row also has a menu (⋮) with **POS settings** — change the gateway's POS-only **Title** and **Description** — and **WooCommerce settings**, which deep-links to the gateway's full settings in WooCommerce.

### Enabling a Gateway[​](#enabling-a-gateway "Direct link to Enabling a Gateway")

1. Find the gateway in the list
2. Toggle the **Enabled** switch on
3. The gateway will appear at POS checkout on the next page load

Free vs Pro

In the free version only the built-in **Cash** and **Card** gateways are editable. Enabling other installed WooCommerce gateways for the POS requires [WCPOS Pro](/getting-started/pro-license.md).

### Reordering Gateways[​](#reordering-gateways "Direct link to Reordering Gateways")

Drag gateways to change their display order in the POS checkout. Use the **Default** column to pick which gateway is pre-selected when a cashier opens the checkout modal.

### POS vs Online Store[​](#pos-vs-online-store "Direct link to POS vs Online Store")

Gateway settings here are **independent** of your WooCommerce payment settings. A gateway can be:

* **Enabled for POS, disabled online** — useful for cash payments which don't apply to web orders
* **Enabled online, disabled for POS** — useful for gateways like PayPal that aren't practical for in-person sales
* **Enabled for both** — the gateway works everywhere

note

A gateway must first be installed and active in `WP Admin > WooCommerce > Settings > Payments` before it appears in the POS checkout settings list. If a gateway is missing, check that the plugin is installed and the gateway is enabled in WooCommerce.

## Order Status[​](#order-status "Direct link to Order Status")

Order status is set **per gateway**, from the **Order Status** column in the gateways table — so a sale can resolve differently depending on how it was paid:

* **Cash** and **Card** default to **Completed**, since payment is collected at the point of sale.
* Gateways where the money arrives later — such as **BACS** (direct bank transfer) or **Cheque** — default to **On hold**.

Pick any WooCommerce order status for each gateway. (Older versions used a single global default; that value was migrated onto each gateway when you upgraded.)

## Prevent Overselling[​](#prevent-overselling "Direct link to Prevent Overselling")

The **Prevent overselling** toggle stops POS sales of items that don't have enough stock. It is **off by default** — until you enable it, checkout behaves exactly as before.

WooCommerce's REST API doesn't validate stock when orders are created, so a busy till (or a stale product list) could sell more units than you have. With the toggle on, WCPOS checks stock in two places:

1. **At the till** — the cashier can't add an item to the cart (or raise its quantity) beyond the available stock. The POS shows the quantity that *is* available, e.g. *"Only 3 available for Hoodie – Blue, M"*.
2. **At checkout, on your server** — the order itself is validated before payment completes. Even if the till's local data was out of date, an order that would oversell is rejected and the cashier is shown exactly which items are short and how many are available. The POS then refreshes stock for those items so the cart can be corrected with accurate numbers.

Open carts are never blocked from syncing — validation only runs at the moment of checkout.

### How stock is decided[​](#prevent-overselling-stock-rules "Direct link to How stock is decided")

| Product setup                             | Behavior when the toggle is on                                                                                |
| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| **Manages stock** (a quantity is tracked) | Sales are limited to the stock quantity. Multiple cart lines of the same product count toward the same limit. |
| **Variation tracks its own stock**        | The limit applies per variation.                                                                              |
| **Variation uses the parent's stock**     | All of that product's variations share the parent's quantity.                                                 |
| **Doesn't manage stock**                  | The product's stock status decides: *Out of stock* can't be sold; *In stock* and *On backorder* can.          |

### Backorders still win[​](#prevent-overselling-backorders "Direct link to Backorders still win")

Per-product **backorder settings take priority** — this is how you allow overselling for specific products while the toggle is on:

* **Do not allow** — sales stop when stock runs out (this is what the toggle enforces).
* **Allow** — the product can always be sold, even below zero stock.
* **Allow, but notify customer** — the product can always be sold; the cashier sees a *"will be backordered"* note when a sale dips below available stock.

### Prevent Overselling vs. "Show out of stock"[​](#prevent-overselling-vs-display "Direct link to Prevent Overselling vs. \"Show out of stock\"")

These two settings are independent:

* **Prevent overselling** (this page) controls whether out-of-stock items can be **sold**.
* **Show out of stock products** (a display setting in the POS product panel) controls whether out-of-stock products and variations are **visible**. When hidden, out-of-stock variations disappear from product lists and their options grey out in the variations popup.

You can show out-of-stock items for visibility while Prevent overselling blocks their sale — the cashier sees the item with an *Out of Stock* badge and a disabled add-to-cart.

note

Changing the toggle reaches open POS sessions the next time a cashier logs in or the app revalidates — the server-side check applies immediately.

## Related Documentation[​](#related-documentation "Direct link to Related Documentation")

* [Email Notifications](/settings/wp-admin/email-notifications.md) — per-email toggles for admin, customer, and cashier notifications
* [Payment Methods](/payment/.md) — overview of available gateways
* [Checkout](/pos/checkout/.md) — the POS checkout experience
* [Variations](/pos/product-panel/variations.md) — how variation stock appears in the product panel
* [Custom Gateways](/payment/gateways/.md) — building custom payment integrations
