Customers & loyalty

Regulars: keeping their details, letting them run a tab, holding credit for them, and rewarding them for coming back.

The Customers page

Customers — "Browse profiles, filter as you type, edit details, store credit, and purchase history." The list shows Name, Code, Email, Phones, Tax ID and Created; the Search box matches "Name, email, phone, or code" as you type. Clicking a row opens that customer's drawer.

Create a customer

  1. Press Create customer.
  2. Fill in Display name — the only required field.
  3. Add contact details and, if you deliver, the address.
  4. Press Create customer.

Leave Customer code blank and one is assigned automatically ("Auto-assigned if blank").

What you can record

SectionFields
Basics Display name (required), First name, Last name, Company / trade name, Customer code
Contact Email, Phone, Phone (alt), Preferred contact — No preference / Email / Phone / Alt phone
Address Address line 1 and 2, City, region and postal-code labels that follow the country, Country. "Delivery / billing address for grocery & café orders."
More details
(collapsed — "Tax, prefs, tags")
Tax ID, Customer type (Retail / Wholesale), Language / locale, Tags, Marketing opt-in, Notes

Tags

Tags is a plain text box — type them separated by commas, e.g. "vip, delivery, catering". They are stored on the customer and come through the CSV import.

You cannot search or filter by tag

There is no tag picker, no list of existing tags, and the customer search covers name, email, phone and code only. A tag is a note you can read on the record, not a way to pull up "all my VIPs". The same applies to Marketing opt-in: it is captured, but nothing exports or segments on it.

Importing customers

Import CSV opens Customer import. Only display_name is required; leave customer_code blank to auto-assign; an address needs address_line1 once any address field is filled. Tags may be separated by semicolons, commas or pipes. As everywhere else: Dry run first, then Commit import.

The customer drawer

Opening a customer gives you five sections: Profile, Store credit, House account, Subscriptions and Purchase history, with three summary tiles across the top — Store credit balance, Loyalty ("Enrolled · N pts" or "Not enrolled"), and House account ("Balance … / limit …").

Store credit

Store credit is money the shop is holding for a customer — a goodwill credit, or the value of a return given back as credit rather than cash.

  1. Open the customer and find the Store credit section.
  2. Type an Amount.
  3. Choose an Action: Add (issue), Redeem, Adjustment (+) or Refund credit.
  4. Press Post credit. The result reads "Posted 20.00. Balance 45.00."

Only Redeem subtracts; the other three add. Redeeming more than the balance is refused: "Insufficient store credit balance".

A refund can go straight onto the balance

Refund mode on the till offers Store credit as a tender where the shop issues it. Because credit belongs to a named person, the refund needs a customer — the one on the original sale, or somebody named at the returns desk — and is refused without one. The till shows the new balance before posting, and the refund receipt prints it. Full detail on Refunds & returns.

There is no Store credit button on the sale side

A finished sale can be settled out of store credit — the balance is taken under a lock in the same transaction that moves the stock, and spending more than the balance is refused — but that path is API-only. The retail till's tender buttons are cash, card, gift card, points and pay later; there is no screen anywhere that spends a store-credit balance on a sale.

At the counter today, redeeming is a back-office action: press Redeem on the customer drawer and settle the sale by another means. Note also that the balance is held per store, so credit issued at one branch is not visible at another.

Settling an existing pay later tab out of store credit is refused outright: that path is not wired to the ledger, and recording the tender anyway would clear the debt while leaving the balance untouched.

House accounts — letting a customer run a tab

A house account is the local shop's oldest feature: the customer takes the goods now and pays at the end of the month.

Charging to the account

Two ways:

The credit limit cannot be changed later

Credit limit (new) only applies when the account is created — there is no field anywhere to raise or lower an existing limit. Worse, an account created automatically by a Pay later sale at the till is opened with a hard-coded limit of 10,000, not the 500 the drawer suggests. If you care about limits, create the account from the drawer before the customer's first pay-later sale.

Settling the account

There is no way to take the payment in the app

Unpaid sales are listed under Orders → Unpaid (pay later), but no screen collects the money and clears the balance. The settle operation exists in the API and has no button. In practice you can build up house-account debt in tech-pos but must clear it in your own books.

There are also no customer statements, no ageing of what customers owe, and no list of house-account balances — the balance is visible one customer at a time on the drawer.

Groups and standing discounts

Some customers always pay less. A garment shop's trade accounts get 10%, staff get 25%, a wholesale buyer has agreed terms. That is not a promotion — a promotion runs until Sunday. It belongs to the person.

Customers → Groups & discounts is where you say so. A group is a name and a percentage. Open a customer, pick their group under Standing discount, and from then on the till takes the percentage off by itself the moment their name goes on a ticket — including items already on it — and puts it back if they are taken off.

Who can do this

A cashier can see the groups — the till has to be able to explain why a ticket went cheaper — but cannot create or change one. Setting a percentage is a pricing decision, so it needs a manager.

Loyalty

Loyalty is an add-on — "Enroll customers, check balances, redeem points, and set the earn rate." The banner states the model plainly: "Points earn automatically on finalize when a customer is attached at POS. Use this page to enroll, check balances, redeem at the counter, or change the earn rate."

How points are earned

A failed accrual is silent by design

If anything goes wrong awarding points, checkout still completes and nothing is shown — loyalty is never allowed to break a sale. If a customer says points are missing, check the sale completed with them attached.

Enrol, check, redeem

  1. Open Loyalty and search the customer by name, phone or email, then click the match. Enroll stays disabled until one is selected.
  2. The Points balance block shows "N pts" and the earn rate, or "Not enrolled yet — tap Enroll in loyalty below."
  3. Press Enroll in loyalty if needed.
  4. To reward at the counter, type Points to redeem and press Redeem points.

Setting the earn and redeem rates

The Earn and redeem rates panel on the right holds four settings, and Save rate writes them all:

FieldWhat it doesDefault
Points per {currency} The earn side. Points earned = sale total × this. 1
Points to buy 1 {currency} The redeem side — what points are worth when spent at the till. At 100, a 500-point balance is worth 5.00. 100
Minimum balance before points can be spent A floor. Under it the till refuses the whole balance rather than part of it. 0 means no floor. 0
Points may also pay tax and fees Off, points buy goods only. On, they can settle a whole ticket including tax. Only turn it on if your jurisdiction treats points as a payment instrument. off

These belong to the programme, and the programme belongs to the company — so a rate set here applies at every branch.

Points at the till

Points are a tender. Attach the customer, tap Use points, and the till shows the balance and what it is worth before anything is committed; the money comes off the sale and the balance falls in the same movement. Splitting is the normal case — $30 as $5 of points and $25 cash. Step-by-step at The retail till; what a refund does to a balance is on Refunds & returns.

Redeem points on this page is not a sale

Redeem points on the Loyalty page only subtracts from the balance — it is for a reward handed over at the counter and recorded here. It does not take money off a ticket, and it refuses to be pointed at a sale: ask it to redeem against an order number and it says so, because recording a sale it reduced by nothing is exactly the bug the points tender was built to close.

What the programme still does not do

No tiers, no points expiry, no bonus rates by product or category, no rewards catalogue, and no loyalty card or barcode. Points cannot settle an existing pay later tab either — the collect-payment path does not move a balance, so accepting the tender would clear the tab and leave the points where they were.

What the cashier sees at the till

The till has a Customer panel — "No customer on this sale yet. Search, then tap a name to attach — or create a new one." Search by name, email or phone; or press + New customer and enter a name (phone and email optional) to Create & attach in one step. Clear customer takes them off the sale.

Once attached, the ticket shows a chip: Customer · {name}.

The cashier sees a name, and one number

The one thing the register will tell a cashier about an attached customer is their points: the Use points button carries what the balance is worth, and opening it reads out 640 points — worth $6.40. That is there because points are spendable at the counter and the number has to be sayable before the customer decides.

Everything else is still back-office only — store credit, house-account balance and limit, tags and purchase history are not shown at the register. A points balance is also printed on the receipt after a sale that moved it, which is the only place the customer can check it on their way out.

Screenshot to come: the customer drawer showing the Store credit, Loyalty and House account tiles side by side.
Everything the shop is holding for one customer, on one screen.

Purchase history and subscriptions

Purchase history lists recent completed sales for that customer — Sale #, When, Status, Total. Subscriptions lists plans sold at the register ("Sell a subscription SKU with this customer attached to create one").

Limits worth knowing