Offers

Screenshots and Final Touches Coming Soon Images and final formatting are still being added to this guide.

Offers is the flexible rules engine for promotions in Paimnt. You define triggers (conditions that must be met) and actions (what happens when those conditions are met). This covers bundles, buy-X-get-Y deals, sale-total discounts, automatic voucher issuance, and more.

Happy Hours and Time Period Promos Apply First: Anything configured in Happy Hours or Time Periods is always applied before any Offer-based discounts. If a product already has a Happy Hours or Time Period promo applied, keep this in mind when configuring your triggers and actions.

[Screenshot: Offers list page showing the full table with Group, Name, Label, Trigger, Actions, Start, End, Available At, Active Periods, Auto, and Enabled columns]

Your created offers display in a table. Use the top-left column selector to hide columns and simplify the view.


Offer Groups

What Offer Groups are and why they are required

Required: You must create at least one Offer Group before you can create an offer.

Offer Groups serve two purposes:

  1. Best-price logic — offers within the same group compete with each other. The engine picks the combination that gives the customer the lowest price.
  2. Stacking — offers in different groups stack. Each group applies in sequence, in the order you set.

Within a Group vs Across Groups

Within a group, the engine selects whichever combination results in the best price for the customer. If you want two discounts to both apply regardless (a double discount), they must be in separate groups.

How to set up Offer Groups

Press Manage Groups (top right of the Offers page).

[Screenshot: Manage Groups popup showing existing groups listed with drag handles and a + button to add new groups]

In the popup:

  1. Press + to create a new group and give it a name
  2. Drag groups to set their priority order
  3. Press Save to confirm

Recommended Structure for Most Venues

OrderGroup NamePurpose
1Item DiscountsPer-item deals, bundles, and matched-set pricing
2Sale DiscountsWhole-of-sale discounts, applied after item discounts are resolved
3Voucher IssuesAutomatically issue a voucher when a trigger is met

Why this order matters:

Say you have three offers in Group 1 (Item Discounts): 20% off all beer, a 2 beers + pizza bundle for $35, and buy 1 get 1 free on beer. A customer adds 5 beers and 3 pizzas. The engine works out the best combination: 2x “2 beers + 1 pizza for $35” + 1 beer at 20% off + 1 pizza. Item discounts are now fully resolved and the subtotal lands at around $80.

Group 2 (Sale Discounts) then runs. There is an offer: 10% off sales over $50. The subtotal is $80, so this triggers and a further 10% is applied to the whole sale.

Group 3 (Voucher Issues) runs last. An offer is set: buy 3 pizzas and get a free pizza voucher. The customer bought 3 pizzas, so a 100% off pizza voucher is automatically issued at sale finalisation.

Keeping these in separate groups prevents the engine from evaluating sale-level discounts before item bundles are resolved, and ensures vouchers issue cleanly at the end.


How to create an offer

Press + Create Offer (top right of the Offers page). A 3-panel view opens: General | Trigger | Actions

[Screenshot: Create Offer 3-panel view with the General, Trigger, and Actions tabs visible across the top]


General

[Screenshot: General panel with all fields visible — Name, Label, Group, Start Date, End Date, Automatic toggle, Enabled toggle, Max Uses Per Sale, Places, and Periods]

FieldRequiredDetails
NameYesInternal name for this offer
LabelNoDisplayed on the POS at the till
GroupYesSelect from your created Offer Groups
Start DateYesDD/MM/YYYY HH:MM AM/PM
End DateYesDD/MM/YYYY HH:MM AM/PM
AutomaticNoSee callout below
EnabledNoDefault: off. Toggle on to make the offer active.
Max Uses Per SaleNoLimits how many times this offer can apply in a single transaction. E.g. set to 2 for a buy-1-get-1 on alcoholic drinks to prevent over-serving.
PlacesNoPress + to add: included sites, excluded sites, included locations, excluded locations. Each filter can only be added once but all 4 can coexist. Default: all sites and locations.
PeriodsNoPress + to add a day-of-week selection and time range (24hr format). Default: all times.

Automatic vs Manual Offers

SettingBehaviourUse when
Automatic (ticked)Fires as soon as the trigger is met — no staff action neededSelf-applying discounts, auto-issued vouchers
Manual (unticked)Requires a Voucher to be applied at the tillPrinted vouchers, member vouchers, keyboard-applied discounts

A Manual Offer must have a Voucher created for it in HQ > Promotions > Vouchers before it can be used at the till.

Example — Places: An offer for “Friday Night Special” can be set to apply only at your city venue (included site) and exclude the takeaway counter (excluded location). All four filter types can coexist on the same offer.


Trigger

[Screenshot: Trigger panel showing the trigger type selector dropdown with available trigger types listed]

Change the Default Trigger Before Saving: Every new offer defaults to a trigger of Always — this must be changed. Never select Never either. Both are engine baseline values that will be updated in a future UI revision.

The trigger defines the condition(s) that must be met for the offer to fire. You have 7 usable trigger types:

TriggerWhat it does
ChanceSets a % probability the action fires
GroupWraps multiple triggers together with AND or OR logic
Is GuestFires if the customer is not a member
Is MemberFires if the customer is a member
Item MatcherMatches specific products using filters
Loyalty TierFires for customers in a specific loyalty tier
Sale ValueFires based on the sale total amount

Tip — Combining Triggers: Use Group to combine multiple triggers. For example: wrap “Is Member” AND “Chance 60%” in one sub-group, and “Is Guest” AND “Chance 40%” in another, with the outer group set to OR. The action — say, a $20 voucher at end of sale — then fires with a 60% chance for members and a 40% chance for guests.


Chance

Enter a percentage value. That is the probability the action will fire for any qualifying sale.

Example: Set to 50% — half of all sales that meet the other conditions will receive the action.


Group

Wraps multiple conditions together. Set the connection to:

  • AND — all conditions must be met to trigger the action
  • OR — any one condition is enough to trigger the action

Example (AND): Item Matcher on beer AND Item Matcher on pizza = both must be on the sale (bundle trigger).

Example (OR): Item Matcher on beer OR Item Matcher on pizza = either product alone triggers the action.


Is Guest / Is Member

Use these within a Group trigger to apply different conditions depending on whether the customer is a member or a guest.


Item Matcher

[Screenshot: Item Matcher trigger expanded, showing the Item Filters, Set Condition, and Group By sub-sections]

Item Matcher filters which products are involved in the trigger. It has three sub-sections: Item Filters, Set Condition, and Group By.

Item Filters

Use these to define which products qualify. Multiple filters can be combined:

FilterWhat it doesIncluded / Not Included
TagMatch products by tag (e.g. all items tagged Beer)Yes
ProductMatch a specific productYes
SizeNarrow further by size (e.g. schooner, medium)Yes
Has InstructionsOnly triggers if the product has add-ons or modifications
No InstructionsOnly triggers if the product has no modifications
No DiscountsOnly triggers if no discount is already applied to the product

Example — Has Instructions: Offer is “10% off a large pepperoni pizza when extra toppings are added.” Set Item Matcher to: Product = Pepperoni Pizza, Size = Large, Has Instructions. The 10% only fires if extra toppings were added.

Example — No Discounts: Offer is “buy a large pizza and get a free small pizza voucher.” If the large pizza already has a Happy Hours 15% discount applied, you don’t want the free small pizza to also trigger. Add “No Discounts” to prevent the offer firing on an already-discounted pizza.

Tip: The Bulk Tag Products feature in HQ > Products > Product Tags is useful for tagging products in bulk before setting up tag-based filters here.

Set Condition

OptionWhen to use
NoneNo quantity condition needed — e.g. 20% off any alcoholic drink
Sets ofA specific quantity must be met to trigger — e.g. buy 2 beers to get the discount
Min QtyMinimum quantity required — use when your item filters are already specific enough
Min PriceTrigger only if item(s) meet a minimum spend amount

When using Sets of, configure the following:

Sub-fieldDetails
Qty per setThe quantity required (e.g. 2)
StrategyHow the engine selects which products to discount — see below

Strategy options:

StrategyBehaviourExample
Cheapest FirstSorts qualifying products by price ascending and discounts the cheapest firstBuy 6 wines get 10% off — customer buys 8 bottles. The 6 cheapest are discounted.
Evenly DistributedPairs cheapest and most expensive products into sets and discounts each pair evenlyBuy 6 wines get 10% off — customer buys 8 bottles. Cheap and expensive bottles are paired into sets so the discount spreads evenly.

Group By

OptionWhen to useExample
AnyDiscount applies broadly across different products with the same tag20% off all beer — a Peroni Lager and a Stone and Wood both count toward the trigger quantity
ProductRequires the same product in multiplesBuy 2 Peroni Lagers — must be the same SKU, not just any beer

Loyalty Tier

Press + Add Tier and select from tiers configured in HQ > Customers > Loyalty Tiers.

Set as Included (this tier qualifies for the offer) or Not Included (this tier is excluded).


Sale Value

Set a dollar amount and an operator to define when the trigger fires:

OperatorTrigger fires when…
EqualsSale total exactly equals the amount
Less ThanSale total is below the amount
More ThanSale total exceeds the amount
Less Than or EqualsSale total is at or below the amount
More Than or EqualsSale total is at or above the amount

Best Practice: Put Sale Value offers in your “Sale Discounts” Offer Group — separate from item-level offers. This ensures item discounts are fully resolved before the sale total is evaluated.


Actions

[Screenshot: Actions panel with the four action type options visible — Item Discount, Sale Discount, Set Price, Issue Voucher]

Actions define what actually happens when the trigger is met. You have four options:

ActionWhat it does
Item DiscountDiscounts specific matching products
Sale DiscountDiscounts the entire sale total
Set PriceSets a fixed price for matched items or sets
Issue VoucherIssues a voucher at sale finalisation

Item Discount

FieldRequiredDetails
TypeYesFixed ($ amount) or Percent (%)
ValueYesThe dollar or percentage amount
Discount QtyNoLimits how many matching items get discounted. Default (blank): all matching items.

Example — Discount Qty: Offer is “buy 5 coffees, get 1 at 50% off.” Item Matcher has Qty Per Set = 5. If Discount Qty is left blank, all coffees get 50% off once 5 are in the sale — which is not the intention. Set Discount Qty = 1 so only 1 coffee is discounted at 50%.

Item Filters on the Action side work the same as in the Trigger — use them to further narrow which of the matched products actually receive the discount (tag, product, size, has instructions, no instructions, no discounts).


Sale Discount

FieldRequiredDetails
TypeYesFixed ($ amount) or Percent (%)
ValueYesThe dollar or percentage amount

Set Price

SourceWhen to useExample
Matched SetsBundle pricing for a group of trigger products2 beers + 1 pizza set at $35
Matched ItemsFlat price per individual matching itemAll tap beer schooners set at $8

Issue Voucher

Best Practice: Place Issue Voucher actions in a dedicated Voucher Issues Offer Group, separate from your discount groups.

Select from vouchers already created in HQ > Promotions > Vouchers.

Timing: Voucher issuance happens at sale finalisation — not mid-sale when the trigger is first met. The voucher can be configured to print or attach to a member account. Both options are set on the voucher itself — see Vouchers.

rate_review

Was this page helpful?

Help us keep the docs accurate and useful for your whole team.