> For the complete documentation index, see [llms.txt](https://docs.podplay.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.podplay.app/payments/promo-codes/choose-products-and-services-for-a-pos-promo-code.md).

# Promo Codes for POS/Shop

### Overview

A Promo Code can discount products, services, or both in a POS/[Shop](https://docs.podplay.app/payments/the-shop-page) purchase. When creating the code, the Admin picks what the code can discount, then picks which items qualify: every matching item, specific items, or (for products only) [Categories and Subcategories](https://docs.podplay.app/payments/the-shop-page/add-to-the-product-catalog#categories-and-subcategories). An item receives the discount only when it matches that targeting and is sold at a location the Promo Code allows.

POS targeting is set once, when the Promo Code is created. After that it is read-only. To discount different items, create a new Promo Code.

{% hint style="info" %}
POS Promo Codes created before this targeting was introduced keep their previous targeting behavior.
{% endhint %}

### Targeting options

The first choice, **What can this Promo Code discount?**, sets the item type. The second, **Which items qualify?**, sets the targeting method. The methods available depend on the item type.

| Item type             | All items                   | Specific items      | Categories or subcategories |
| --------------------- | --------------------------- | ------------------- | --------------------------- |
| Products              | `All products`              | `Specific products` | Available                   |
| Services              | `All services`              | `Specific services` | Not available               |
| Products and services | `All products and services` | `Specific items`    | Not available               |

A Promo Code uses one targeting method at a time.

### Create a POS Promo Code

1. Open the Promo Codes page of the Dashboard.
2. Click **Create Promo Code**.
3. Under **Promo Code Details**, enter the code, description, allowed areas, and discount value.
4. Under **Applicable to**, select **POS**. The **POS Settings** group opens below the details.

<figure><img src="https://29730733-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvxoNuJiMibWwb1kotX38%2Fuploads%2FUMRdoG9JEle24T9KkYm9%2FScreenshot%202026-10-02%20at%2011.14.09.png?alt=media&#x26;token=7f134359-8221-4177-90e9-5b897684685c" alt="POS Settings in the Create Promo Code drawer"><figcaption></figcaption></figure>

5. Under **What can this Promo Code discount?**, choose **Products**, **Services**, or **Products and services**.

<figure><img src="https://29730733-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvxoNuJiMibWwb1kotX38%2Fuploads%2FTBsyj2T4Letv6nQ2l9kx%2FScreenshot%202026-10-14%20at%2015.00.06.png?alt=media&amp;token=d1724136-732a-4aaa-bd83-088ed86be227" alt=""><figcaption></figcaption></figure>

6. Under **Which items qualify?**, choose a targeting method.

<figure><img src="https://29730733-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvxoNuJiMibWwb1kotX38%2Fuploads%2FVd0XL5U7gDuTeCi95XLb%2FScreenshot%202026-10-14%20at%2015.00.15.png?alt=media&amp;token=b1fdcb9d-2303-4312-b38b-2fb6246ad938" alt=""><figcaption></figcaption></figure>

7. If the method needs targets, select the Categories or Catalog items (see the sections below).
8. Check the summary in **POS Settings**. It shows the current targeting and the allowed locations.
9. Click **Create**.

**Needs setup** appears in the **POS Settings** heading while a required choice or target is missing, or while the category list is still loading. Complete the group before clicking **Create**.

#### Discount every matching item

Choose **All products**, **All services**, or **All products and services**. The Promo Code applies to every eligible catalog item of that type at the allowed locations. No targets are needed.

#### Discount specific items

1. Choose **Specific products**, **Specific services**, or **Specific items**.
2. Search by item name or SKU.
3. Select each item from the results.

The selector labels each item as a **Product** or **Service**, and as **Active** or **Inactive**. Both Active and Inactive items can be selected. Selected items stay listed while you search for more.

A catalog item target follows that item to every location where it has a purchasable offering. The Promo Code's allowed locations still apply.

{% hint style="warning" %}
**With Products and services plus Specific items, only the selected items qualify.** Selecting two products does not add every service just because the item type allows services. Read the targets rather than assuming both types are discounted.
{% endhint %}

#### Discount product categories or subcategories

1. Under **What can this Promo Code discount?**, choose **Products**.
2. Under **Which items qualify?**, choose [Categories or Subcategories](https://docs.podplay.app/payments/the-shop-page/add-to-the-product-catalog#categories-and-subcategories).
3. Under **POS categories**, select at least one category or subcategory.

Categories are available only for products. To discount every product instead, choose **All products**.

<figure><img src="https://29730733-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvxoNuJiMibWwb1kotX38%2Fuploads%2FwwSXbQRTvjE8XGa3xt7k%2FScreenshot%202026-10-02%20at%2011.14.41.png?alt=media&#x26;token=0e98da95-be8f-4361-b861-0ceb17443263" alt="POS categories selector"><figcaption></figcaption></figure>

### Change the item type or targeting method during creation

Changes are possible only before the Promo Code is created.

If a change would clear selected items or Categories, the drawer asks for confirmation:

* Choose **Cancel** to keep the current choice and selections.
* Choose **Change item type** or **Change targeting** to clear the selections and continue.

Other behavior to know:

* Changing from **Categories or subcategories** to **Services** or **Products and services** switches the method to **Specific items** with nothing selected. Select the new items before clicking **Create**.
* Changing the item type while an **All** method is selected does not ask for confirmation. The summary updates to show the new scope.
* Removing **POS** under **Applicable to** clears the item type, targeting method, and targets, and hides **POS Settings**. If POS is selected again, choose the item type again.

### Review a saved POS Promo Code

1. Open the Promo Code (the **Manage Promo Code** drawer).
2. In **Promo Code Details**, read **Locations** to see where the code can be used.
3. Expand **POS Settings**.
4. Read **Targeting** to see the method: all products, all services, all products and services, selected items, or Categories.
5. For selected items or Categories, read **Targets** to see exactly what qualifies.

Saved targets can show these labels:

| Label                          | Meaning                                                                                                |
| ------------------------------ | ------------------------------------------------------------------------------------------------------ |
| **Product** / **Service**      | The item type of each saved target.                                                                    |
| **Unavailable**                | The target was deleted. It does not qualify at checkout, and it cannot be removed from the Promo Code. |
| **Outside selected item type** | The item's current type no longer matches the item type saved on the Promo Code.                       |

If every target on a Promo Code is **Unavailable**, the code does not apply to any item.

### Edit a saved POS Promo Code

The targeting method and targets are read-only while editing. Other fields can still change.

{% hint style="danger" %}
**Removing POS under Applicable to while editing can erase the saved targeting.** Removing POS is a draft change until you click **Update**. Select POS again before clicking **Update** to keep the saved targeting. If you click **Update** while POS is not selected, the POS eligibility and targeting are cleared. If POS was the only type selected, the drawer selects **Reservations** as the fallback.
{% endhint %}

To discount different items, create a new Promo Code with the intended targeting. Deactivate the earlier code if Customers should no longer use it.

### First Time Booking and POS

`First Time Booking` cannot be used with POS. That setting depends on a Customer's booking history, so the drawer does not allow POS when `First Time Booking` is on.

If an older Promo Code has both settings, create a replacement code with valid settings.

### Cancel a failed POS order

If an immediate payment for a POS order fails, the Promo Code stays reserved on that order until the order is cancelled.

1. Open the order details.
2. Open the actions menu.
3. Choose **Cancel order**.

This cancels the failed order and releases the Promo Code, so the code's remaining uses are available again.

### Common issues

* **Checkout says the Promo Code does not apply to any items:** No item in the order matches the code's targeting, or the item is not sold at an allowed location. Review **Targeting**, **Targets**, and **Locations** on the saved code.
* **A service was not discounted on a Products and services code:** The code uses **Specific items** and only products were selected. Create a new code that includes the service.
* **Categories are not available:** Categories work only with **Products**. Change the item type to **Products**, or select specific items.
* **The Create button does not work and POS Settings shows Needs setup:** A required choice or target is missing, or the category list is still loading.
* **A target cannot be removed from a saved code:** Saved targeting is read-only. Create a new Promo Code and deactivate the old one.
* **A Promo Code has fewer remaining uses than expected:** A failed POS order may still be holding a use. Cancel the failed order to release it.
* **POS is not available under Applicable to:** `First Time Booking` is on. Turn it off, or create a separate Promo Code for POS.

### FAQs

<details>

<summary>Can I change which items a POS Promo Code discounts after creating it?</summary>

No. The targeting method and targets are read-only after creation. Create a new Promo Code with the intended targeting and deactivate the earlier one.

</details>

<details>

<summary>Can I target an Inactive product?</summary>

Yes. Both Active and Inactive catalog items can be selected. Whether the item can be bought depends on its purchasable offering.

</details>

<details>

<summary>What happens if a targeted product is deleted?</summary>

The target stays on the Promo Code labeled **Unavailable** and no longer matches items at checkout. It cannot be removed from the saved code.

</details>

<details>

<summary>Does a POS Promo Code work at every location?</summary>

No. An item must match the targeting and be sold at a location the Promo Code allows. The allowed locations appear under **Locations** in **Promo Code Details**.

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.podplay.app/payments/promo-codes/choose-products-and-services-for-a-pos-promo-code.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
