Applies to: Catalog API
Learn how to create pricing rules for discounts based on the number of products, a combination of items, or a specific time period.
You can use the Catalog API to configure pricing rules to enable the automatic application of discounts to orders completed with Square POS applications or the Orders API. These applications include Square for Retail, Square for Restaurants, and Square Appointments. For information about automatically applying discounts with the Orders API version 2020-07-22 or higher, see Square-applied Order Discounts
The discount can be a volume discount like a Buy One Get One (BOGO), a minimum order discount, or an exact quantity purchase discount. It can be a bundled discount applying to a combination of categories of purchased items. It can also be a time-based discount applied over a specified period of time, like a happy hour.
- Pricing rule-based discounts aren't supported in the Reader SDK or the Checkout API.
- Pricing rules created through the Catalog API aren't editable in Square Point of Sale.
Pricing rule-based discounts can be applied based on:
- Specific items (or categories of items) purchased.
- The time of day, the day of the week, or the duration of a promotion.
To set pricing rules to enable the automatic application of discounts, you typically use the following types of CatalogObject instances:
- Product Set - Represents a collection of catalog products. Product sets can be a collection of different Catalog object types, such as an
ITEM
,CATEGORY
, orITEM_VARIATION
. You can also specify whether one or all products must be present and in what quantity. - Pricing Rule - Represents a set of conditions under which a discount or fixed price applies to a product set.
- Time Period - Represents a (potentially recurring) time period. Dates and times use the iCal Date-Time Format.
Important
Square Point of Sale applications must be version 5.15 or later to take advantage of pricing rules. For questions or feedback, contact Support.
To complete the following discount exercises, you must have a Drinks category and a Meal category created in your catalog:
- Create Volume Discounts
- Create Bundled Discounts
- Create Time-Based Discounts
- Create Customer Group Discounts
Follow the example to create the Drinks category. Make sure you copy the ID of the resulting CatalogObject
of the CATEGORY
type. You need the ID later.
Upsert catalog object
The "id": "#drinks"
key-value pair is optional. It's required only if the Drinks category object is referenced elsewhere in the same request payload.
The successful operation returns a 200 OK
response with the payload similar to the following:
{
"catalog_object": {
"type": "CATEGORY",
"id": "GXFTT46M3RCBR6LV54HKALC6",
"updated_at": "2020-06-01T18:17:18.159Z",
"version": 1591035438159,
"is_deleted": false,
"present_at_all_locations": true,
"category_data": {
"name": "Drinks"
}
},
"id_mappings": [
{
"client_object_id": "#drinks",
"object_id": "GXFTT46M3RCBR6LV54HKALC6"
}
]
}
Follow the example to create the Meal category. Make sure you copy the ID of the resulting CatalogObject
of the CATEGORY
type. You need the ID later.
Upsert catalog object
The "id": "#meal_category"
key-value pair is optional. It's required only if the Meal category is referenced elsewhere in the same request payload.
The successful operation returns a 200 OK
response with the payload similar to the following:
{
"catalog_object": {
"type": "CATEGORY",
"id": "GCCTVZOTCOPI246SREKXNMYX",
"updated_at": "2020-06-02T00:15:13.884Z",
"version": 1591056913884,
"is_deleted": false,
"present_at_all_locations": true,
"category_data": {
"name": "Meal"
}
},
"id_mappings": [
{
"client_object_id": "#meal_category",
"object_id": "GCCTVZOTCOPI246SREKXNMYX"
}
]
}