# Point of Sale

> Sell products and services at a branch register: unlock with a PIN, run shifts, hold tickets, take split payments, print receipts, and handle returns.

The Point of Sale (POS) turns a browser on a counter computer or tablet into a cash register. Cashiers unlock it with a personal 6-digit PIN, ring up products and services, take payment, and print or email a receipt. Every completed sale becomes a paid [invoice](https://workstation.repzo.com/docs/commerce/invoices) with its [payments](https://workstation.repzo.com/docs/commerce/payments), and stock is updated at the branch.

Point of Sale is part of the Pro plan. See [Plans & Add-ons](https://workstation.repzo.com/docs/commerce/plans-and-add-ons).

The **Point of Sale** section of the sidebar has three pages:

| Page | Purpose | Permission |
|---|---|---|
| **POS Console** | The register screen, at `/pos` | `pos.access` |
| **Reports** | Sales, payments, taxes, discounts, and shifts. See [POS Reports](https://workstation.repzo.com/docs/pos/reports). | `pos.view_sales` |
| **Time cards** | Staff clock-ins and hours. See [Time Cards](https://workstation.repzo.com/docs/pos/time-cards). | `pos.manage_time_entries` |

## Before you start

An admin needs to set up three things. See [Point of Sale Settings](https://workstation.repzo.com/docs/pos/settings) for each step.

1. **A branch with POS turned on**, with at least one active register.
2. **Cashiers** with POS access, the branch assigned, and a POS PIN.
3. **Products** to sell, with prices, tax rates, and stock at the branch.

## Open the register

1. Open **POS Console**. The register opens full screen.
2. **Choose your store** and **Choose your register**. Either step is skipped when there is only one choice, and your last choice is remembered on this browser.
3. In **Unlock register**, pick the **Register operator** (when there is more than one) and enter your 6-digit PIN.
4. If an admin gave you a temporary PIN, choose a new one.
5. If the branch uses the time clock, you can **Clock in** before you **Start selling**. See [Time Cards](https://workstation.repzo.com/docs/pos/time-cards).

Five wrong PINs lock that PIN for 15 minutes. After 15 idle minutes the register locks itself; the current sale stays in place until you unlock again. To switch cashiers, click **Lock** and unlock as the other operator.

The header shows the store and register, whether a shift is open, the operator, and an **Online**/**Offline** indicator. The register needs a connection to sell; it does not queue sales offline. If the connection drops while you complete a sale, the register checks the server and recovers the sale instead of charging twice.

## Shifts and the cash drawer

When the branch has **Require an open shift** on, the register asks you to open a shift before selling.

- **Open shift**: count the cash in the drawer and enter it as **Opening cash**. The currency you choose is locked for the whole shift.
- **Cash movement**: record **Paid in** or **Paid out** cash during the shift, with a reason.
- **Current shift report**: a printable summary of the shift so far.
- **Close shift**: count the drawer and enter **Counted closing cash**. Workstation produces the final closing report.

These actions are in the **More actions** menu. The shift report shows opening cash, cash sales and refunds, paid in and out, gross sales, discounts, taxes, expected cash, closing cash, the difference, and a breakdown by payment method. With **Blind cash close** on, expected cash and the difference are hidden from cashiers without `pos.view_expected_cash`, so they count the drawer without knowing the target.

## Ring up a sale

Search by name, SKU, or barcode, or tap a tile. Barcode scanners type straight into the search box. Products with variants ask you to pick one, unless you scanned the variant's own barcode.

By default the catalog has **All**, **Products**, **Services**, and **Memberships** tabs. Admins can design a custom layout of up to three tabs of tiles for the branch.

In the **Current sale** panel:

- Change quantities with **+** and **−**. The trash button removes a line, with **Undo**.
- **Items sold by weight** (for example kg or lb) ask for the weight when you add them. Each weighing is its own line. A **scale barcode** printed by a deli or produce scale adds the item with its weight or price already filled in.
- **Open prices**: authorized operators can type a different unit price when the branch allows it.
- Stock warnings show **Out of stock** or how many are short. What happens when you charge depends on the branch's **Negative stock** setting.
- Pick the customer with the customer button. Leave it as **Walk-in customer** if the branch allows walk-in sales, or create a new client.

On phones and tablets, the cart opens as a sheet from **View cart**.

### Discounts

- Choose a **preset discount** for one line or for the whole sale (the **Cart discount**).
- Choose **Custom** to enter a percentage or fixed amount, with an optional reason.

Some presets need **Manager approval**, and so does a custom discount from someone without `pos.approve_override`. A manager assigned to the branch enters their email and POS PIN to approve that exact cart once. Presets that don't allow combining can't be used with other discounts.

### Held tickets

Use **Hold** to park a sale and serve the next customer. Give the ticket a name, such as a table or a pickup spot. If the branch has predefined ticket names, they appear as chips, and names already in use are disabled.

**Held tickets** in the header lists open tickets at the branch. You can **Resume** a ticket, merge it into another one, move it to another register at the same store, or delete it. Prices, tax, stock, and approvals are checked again when a ticket is resumed.

## Take payment

Click **Charge**. The **Take payment** screen shows the amount due and, when set up for the branch:

- **Sale details**: invoice fields the branch asks cashiers to fill in. Required ones must be filled before completing.
- **Tip**: the branch's suggested percentages, or a custom amount.
- **Loyalty rewards**: redeem the customer's points for a reward. See [Client Loyalty](https://workstation.repzo.com/docs/operations/client-loyalty).
- **Gift card or store credit**: enter a gift card code and click **Check**, or **Use store credit**. See [Gift Cards](https://workstation.repzo.com/docs/commerce/gift-cards).
- **Cash rounding**, when the whole sale is paid in cash and the branch rounds cash.

Choose the **Payment method**. For cash, enter the amount tendered (or tap a quick amount) to see the change due. Use **Split payment** to add several tenders. A sale can stay partly unpaid only when the branch allows **Partial payments**. Click **Complete sale**.

### What a sale creates

- A **paid invoice** (or open, if partly paid) numbered with the branch's receipt prefix, for example `MAIN-000123`.
- One **payment** per tender. Gift card and store credit balances are reduced.
- **Stock movements** at the branch.
- A **membership**, if one was sold.
- Loyalty points earned or redeemed.
- **Journal entries**, when [Accounting](https://workstation.repzo.com/docs/commerce/accounting) is enabled.

On a contact's record, POS sales are listed separately from other invoices.

## Receipts

After a sale, **Sale complete** shows the receipt with **Print**, **Email**, and **New sale**. Receipts include the branch details, VAT and CR numbers, items, taxes, tenders, change, and the ZATCA QR code when [ZATCA](https://workstation.repzo.com/docs/commerce/invoices#zatca-e-invoicing) is connected. To email, leave the address blank to use the customer's saved email.

Receipts print through the browser on 58 mm, 80 mm, or 4-inch paper, set per branch.

## Returns and voids

Open **Sales** from the **More actions** menu to see recent sales. Cashiers see their own sales unless they have `pos.view_all_sales`. From a sale you can **Reprint**, **Email**, **Return**, or **Void sale**.

- **Return** credits everything still returnable, restocks it where inventory is tracked, and refunds the original payment methods. It needs a reason and an open shift. Workstation creates a credit note linked to the original invoice.
- **Void sale** reverses the sale and restores stock. It is only possible during the sale's original shift, before anything is returned, and not while ZATCA is connected. After the shift closes, use a return.

Gift card and store credit payments go back onto the original card.

## Permissions

POS permissions are checked twice: against the signed-in user and against the operator who unlocked the register with their PIN. The operator also needs POS access and the branch assigned.

| Permission | Allows |
|---|---|
| `pos.access` | Open the POS Console |
| `pos.sell` | Ring up and complete sales |
| `pos.view_sales` / `pos.view_all_sales` | See own sales and POS Reports / see everyone's sales |
| `pos.view_customers` / `pos.create_customers` | Find customers / create new clients at the register |
| `pos.hold_ticket` / `pos.manage_all_held_tickets` | Hold tickets / manage and reassign any cashier's tickets |
| `pos.apply_discount` / `pos.override_price` / `pos.approve_override` | Apply discounts / enter open prices / approve manager-only discounts |
| `pos.sell_negative_stock` | Sell past zero stock when the branch requires authority |
| `pos.return`, `pos.refund`, `pos.void` | Return, refund, and void sales |
| `pos.open_shift`, `pos.view_shift`, `pos.close_shift`, `pos.cash_movement` | Run shifts and the cash drawer |
| `pos.view_expected_cash` | See expected cash with blind cash close on |
| `pos.reprint_receipt` / `pos.send_receipt` | Reprint / email receipts |
| `pos.time_clock` / `pos.manage_time_entries` | Clock in and out / view and correct time cards |
| `pos.manage_settings`, `pos.manage_devices`, `pos.manage_layout`, `pos.reset_member_pin` | Manage branch POS settings, registers, the register layout, and PINs |

By default, Managers have every POS permission except managing settings, registers, and the layout. Users can sell, hold tickets, apply discounts, run shifts and the cash drawer, view their own sales, and reprint or email receipts.

## Related pages

- [Point of Sale Settings](https://workstation.repzo.com/docs/pos/settings)
- [POS Reports](https://workstation.repzo.com/docs/pos/reports)
- [Time Cards](https://workstation.repzo.com/docs/pos/time-cards)
- [Invoices](https://workstation.repzo.com/docs/commerce/invoices)
- [Gift Cards](https://workstation.repzo.com/docs/commerce/gift-cards)
- [Appointment Checkout](https://workstation.repzo.com/docs/engagement/appointment-checkout)
