# Sofra documentation (full text) > Complete Sofra restaurant management documentation. Per-page markdown: https://sofra.tablixai.com/docs-md/.md. Index: https://sofra.tablixai.com/llms.txt --- # Introduction > Sofra runs the whole restaurant day, from the first booking to the last bill, in one cloud platform. Source: https://sofra.tablixai.com/docs ## What is Sofra? Sofra is a cloud restaurant management platform built by TablixAI. It replaces the mix of a POS, a kitchen screen, a booking book, stock spreadsheets and a printer utility with **one system that shares one set of data**. An order taken at the counter fires a ticket to the right kitchen station, deducts ingredients from stock, prints on the right printer, produces a numbered receipt and shows up in your reports without anyone re-typing it. It works for a single café and for a group with several restaurants and many branches. You start with one restaurant and one branch and add more as you grow, all under one owner account. _Screenshot: The Sofra dashboard: today’s revenue, active orders and table occupancy for the selected branch._ ## What you can do with Sofra - **Take orders** for dine-in, takeaway, delivery, counter, phone, online and QR channels from one POS, with item notes, modifiers, discounts, coupons, split payments and refunds. - **Run the kitchen** with a live kitchen display, prep stations, step-by-step prep workflows, rush priorities and course firing. - **Print silently** on thermal printers: kitchen, bar, pickup and packing tickets, driven by print rules and a small print agent on the branch PC. - **Manage the floor** with floor areas, a drag-and-drop floor plan, live table status, table merging and an availability timeline. - **Take bookings** from staff or from a public booking page, with deposits for risky guests, automatic no-show handling and email reminders. - **Handle walk-ins and the waitlist** with quoted waits and one-click seating when a table frees up. - **Control stock** with ingredients, warehouses, stock movements, low-stock alerts and recipes that deduct ingredients automatically. - **Issue customer documents** (bills, receipts, invoices) with gap-free numbering, frozen snapshots and customizable templates. - **Control access** with roles, per-permission switches, branch-level access and department grouping. - **Run many restaurants** from the owner portal, each with its own address, branches, plan and optional custom domain. ## How Sofra is organized Sofra has two places you will use: | Place | Who uses it | What it is for | |---|---|---| | Owner portal (`app.sofra.tablixai.com`) | The account owner | Create restaurants, publish them, manage domains, view usage and manage the subscription and your profile. | | Restaurant app (`.sofra.tablixai.com` or your own domain) | Owner and staff | The day-to-day product: orders, kitchen, tables, bookings, inventory, reports and settings. | Inside a restaurant, your data is arranged as **Restaurant → Branches**. Menus, taxes and recipes are defined once at restaurant level; tables, floor areas, stock, printers, staff access and reservations belong to a branch. ## How to read these docs The documentation follows the order in which you will actually set Sofra up and then use it day to day. - [1. Get started](https://sofra.tablixai.com/docs/quickstart): Quickstart, core concepts and plan limits. - [2. Set up your restaurant](https://sofra.tablixai.com/docs/account-portal): Account, branches, tables, menu, taxes, payments and staff. - [Customization](https://sofra.tablixai.com/docs/customization-overview): Restaurant-wide vs branch settings, with the plan for each. - [3. Run service](https://sofra.tablixai.com/docs/pos-orders): POS, kitchen, bookings, walk-ins, documents and printing. - [4. Back office](https://sofra.tablixai.com/docs/inventory): Inventory, recipes, customers, reports and billing. - [Reference](https://sofra.tablixai.com/docs/permissions-reference): Permissions, statuses, FAQ and support. > **Plans are shown on every page:** Each feature page tells you which plan it needs. Features above your plan remain visible, locked, with an upgrade prompt, so you can see what you would gain. --- # Quickstart > From sign-up to your first paid order, in the order Sofra expects you to do things. Source: https://sofra.tablixai.com/docs/quickstart This walkthrough takes a brand-new account to a working restaurant. Allow around an hour. Each step links to the full guide. > **Start on Free:** The Free plan never expires and includes the POS, menu, tables, kitchen screen and bills. You can upgrade at any time and nothing you create is lost. ## Before you start - An email address you can open (a verification link is sent to it). - Your restaurant’s name, country and currency. - A rough list of your menu, tables and staff (you can add more later). ## Set up in nine steps 1. **Create your owner account.** Open the Sofra portal and choose **Sign up**. Enter your name, email, a password of at least 8 characters, country, phone number with country code, and accept the terms. See [Account & owner portal](https://sofra.tablixai.com/docs/account-portal). 2. **Verify your email.** Click the link in the email we send (valid for 24 hours). Until you verify, you can only view your account or ask for a new link. 3. **Add your restaurant.** In the portal choose **Add new restaurant**. Enter the name, pick a free subdomain (3 to 30 letters, numbers or dashes), your country and currency. Sofra creates the restaurant as a **draft** with one default branch called *Main Branch*. 4. **Publish and open it.** Choose **Publish** to make the restaurant live, then **Open** to sign in to it as the owner. Until you publish, your address shows a coming-soon page and staff cannot sign in. 5. **Set up your branch and floor.** Fill in the branch details (hours, timezone, order prefix), add floor areas and tables, and arrange them on the floor plan. See [Branches](https://sofra.tablixai.com/docs/branches) and [Floor areas, tables & floor plan](https://sofra.tablixai.com/docs/floor-tables). 6. **Build your menu.** Create a menu, add categories, then items with prices, and add modifier groups for sizes and extras. See [Menu catalog](https://sofra.tablixai.com/docs/menu-catalog). 7. **Configure money rules.** Add taxes, service charges and payment methods (Basic and above). See [Taxes & service charges](https://sofra.tablixai.com/docs/taxes-charges) and [Payment methods](https://sofra.tablixai.com/docs/payment-methods). 8. **Invite your team.** Add staff, choose a role for each, and give them access to the right branches. See [Staff, roles & departments](https://sofra.tablixai.com/docs/staff-roles). 9. **Take your first order.** Open **Orders → New order**, pick a table, add items, send to the kitchen, then take payment. See [POS & orders](https://sofra.tablixai.com/docs/pos-orders). _Screenshot: The owner portal after sign-up: your restaurants, with Publish and Open actions on each card._ ## Your first order, end to end 1. **Choose the channel.** Pick **Dine-In** and select a table. (For other channels see [POS & orders](https://sofra.tablixai.com/docs/pos-orders).) 2. **Add items.** Tap items. If an item has modifier groups, choose the options; add a note such as “no onions”. 3. **Send to the kitchen.** Choose **Send to Kitchen**. Items appear on the kitchen screen and, if you configured print rules, print on the right printer. 4. **Request the bill and pay.** When the guests are done, request the bill, then **Pay**. Split between several payment methods if needed. 5. **Print the receipt.** The order completes, the table frees up and the sale is recorded. Print the receipt from the order page. ## What to set up next - [Printing](https://sofra.tablixai.com/docs/printing): Silent kitchen tickets on thermal printers. - [Inventory & recipes](https://sofra.tablixai.com/docs/inventory): Auto-deduct ingredients per sale. - [Reservations](https://sofra.tablixai.com/docs/reservations): Bookings, deposits and the public booking page. - [Reports](https://sofra.tablixai.com/docs/reports-dashboard): Sales, top items and branch comparison. --- # Core concepts > The vocabulary behind every Sofra screen. Source: https://sofra.tablixai.com/docs/core-concepts A handful of ideas explain how almost everything in Sofra behaves. Learn them once and the rest of the product becomes predictable. ## Owner account and restaurant An **owner account** is you. It signs in to the portal and can own any number of restaurants. A **restaurant** (also called a tenant) is one business: its own address, plan, subscription, staff, menu and data. Data from one restaurant is never visible to another. The same email can own several restaurants. The owner signs in once to the portal and uses **Open** on any restaurant to enter it without typing a password again. ## Branches A **branch** is a physical location. The first branch is always the **head office**. Branches can have a parent branch, forming a hierarchy. Tables, floor areas, warehouses, printers, shifts and reservations are branch-level. Whatever you do in Sofra, you do it **in the context of one branch**, chosen in the branch selector at the top of the app. ## Global catalog vs branch overrides Your menu is defined **once** (the global catalog): menus, categories, items, modifier groups and tax definitions. Each branch can then override how that catalog behaves locally: which menus are assigned, which items are sold, the price, channel prices, availability windows and tax rules. Branch overrides are a Pro feature; without them every branch sells the whole catalog at base price. ## Order channels Every order has a **fulfilment type** (dine-in, takeaway, delivery) and a **source** (POS, counter, website, mobile app, QR, phone, third party). The POS offers eight ready-made channels that combine the two: | Channel | Fulfilment | Source | |---|---|---| | Dine-In | Dine-in | POS | | Takeaway | Takeaway | POS | | Counter | Takeaway | Counter | | Delivery | Delivery | POS | | Online | Delivery | Website | | QR Order | Dine-in | QR | | Phone | Delivery | Phone | | Quick Sale | Takeaway | Counter | ## Roles and permissions Every staff member has a **role**, and a role is a list of permissions such as `orders:refund` or `inventory:write`. A role can also cap the discount percentage its holder may give. Staff can be limited to specific branches, and can hold a different role in each branch. See [Staff, roles & departments](https://sofra.tablixai.com/docs/staff-roles). ## Plans and feature gates Your plan decides which modules are switched on and what limits apply (staff accounts, menu items, tables, storage). If your subscription becomes inactive, gated features return a clear “subscription inactive” message instead of failing silently. Your data is never deleted when you change plan. See [Plans & limits](https://sofra.tablixai.com/docs/plans-and-limits). ## Time and currency Each branch has its own **timezone** and operating hours. Reservation times, no-show expiry, reminders and “today” on the floor all use the branch’s timezone, not the server’s. The restaurant has a currency chosen at creation, and each branch can show its own. --- # Plans & limits > What each plan includes and how limits behave. Source: https://sofra.tablixai.com/docs/plans-and-limits Sofra has a free plan that never expires, plus three paid plans. Prices are in USD and exclude tax; annual billing gives two months free. ## Prices and limits | | Free | Basic | Pro | Pro Plus | |---|---|---|---|---| | Price / month | Free | $15 | $39 | $99 | | Price / year | Free | $150 | $390 | $990 | | Staff accounts | 2 | 10 | 50 | Unlimited | | Menu items | 20 | 100 | 500 | Unlimited | | Tables | 5 | 20 | 50 | Unlimited | | Storage | 0.5 GB | 2 GB | 10 GB | 100 GB | “Unlimited” on Pro Plus is subject to fair use. ## Feature by plan | Feature | Free | Basic | Pro | Pro Plus | |---|---|---|---|---| | POS, orders, menu, tables, kitchen screen | Yes | Yes | Yes | Yes | | Bills and receipts, manual kitchen printing | Yes | Yes | Yes | Yes | | Multiple branches | | Yes | Yes | Yes | | Inventory, ingredients, recipes | | Yes | Yes | Yes | | Customers and departments | | Yes | Yes | Yes | | Taxes, discounts, coupons, service charges, payment methods | | Yes | Yes | Yes | | Reservations, walk-ins, waitlist, table merging | | Yes | Yes | Yes | | A4 invoices and template selection | | Yes | Yes | Yes | | Reports and analytics | | | Yes | Yes | | Custom roles | | | Yes | Yes | | Staff scheduling and attendance | | | Yes | Yes | | Prep stations, workflows and profiles | | | Yes | Yes | | Advanced orders (refund, split order, merge, duplicate) | | | Yes | Yes | | Online booking page | | | Yes | Yes | | Automatic printing (printers, print rules, print agent) | | | Yes | Yes | | Custom document templates | | | Yes | Yes | | Per-branch menu customization | | | Yes | Yes | | Advanced print routing (station-move tickets, course and source routing) | | | | Yes | | API access, white-label (no Sofra watermark), custom domain, dedicated database | | | | Yes | ## How limits work - Limits cap the **creation** of new records. Hitting a limit never deletes or hides existing data. - When you reach a limit, the action is blocked with a message showing your current usage and the limit, and an upgrade prompt. - Usage is tracked live. You can see staff, menu items, tables and storage against your limits on the **Usage** tab of a restaurant in the portal and on the **Billing** page. - If your subscription becomes inactive (for example a failed payment), gated features pause until it is renewed. ## Changing or cancelling - **Upgrades** apply immediately, prorated. - **Downgrades** are scheduled for the end of your billing period, and are blocked while your usage is above the lower plan’s limits (you are told which limits). - **Cancelling** takes effect at the end of the period. You keep access until then. You can undo a scheduled downgrade or cancellation before it takes effect. - Your first payment on a paid plan is refundable within 14 days. Prices exclude VAT, GST or sales tax, which is added at checkout where required. Details are in [Billing & subscription](https://sofra.tablixai.com/docs/subscription-billing). --- # Account & owner portal > Sign up, verify your email, create and publish restaurants, and manage your profile. Source: https://sofra.tablixai.com/docs/account-portal The **owner portal** is where you create and manage your restaurants. It is separate from the restaurant app that your staff use every day. You sign in to the portal with your owner account; you then **Open** a restaurant to enter it. ## Create your owner account 1. **Open the sign-up page.** From the Sofra website choose **Start free**. 2. **Enter your details.** Name, email, a password of at least 8 characters, an optional company name, your country, your phone number with country code (6 to 14 digits), and accept the terms. 3. **Verify your email.** We email you a link valid for 24 hours. Until you verify, the portal only lets you view your account or request a new link. You can request a new link once every 60 seconds. > **One email, many restaurants:** An email can own several restaurants, and the same email can also be used as a staff login inside different restaurants. Staff accounts are separate for each restaurant. ## The portal home After you sign in, the portal lists your restaurants as cards. A header shows how many are live and how many are drafts. Use the search box to filter by name, domain, plan or status. - **Publish** appears on draft restaurants. It makes the restaurant live. - **Open** signs you in to the restaurant app in a new tab, as the owner, using a one-minute handoff link. You do not retype a password. - Selecting a restaurant opens its management page with the tabs **Domains**, **Subscription**, **Usage** and **Billing**. _Screenshot: Portal home with restaurant cards, status badges and Publish / Open buttons._ ## Add a restaurant Choose **Add new restaurant** and fill in: | Field | Rules | |---|---| | Restaurant name | Required. | | Subdomain | 3 to 30 letters, numbers or dashes. Your address becomes `.sofra.tablixai.com`. Some names (such as `app`, `api`, `www`, `admin`, `mail`, `docs`) are reserved, and each subdomain can be used by only one restaurant. | | Country | Two-letter country code. | | Currency | Three-letter code such as USD. Defaults to USD. | Sofra creates the restaurant in **draft** status on the Free plan, creates your owner login inside it, seeds the standard roles (Owner, Manager, Branch Manager, Cashier, Waiter, Kitchen) and creates a first branch called **Main Branch**, marked as head office. ## Draft and published - A **draft** restaurant is only reachable by its owner. Visitors to its address see a coming-soon page showing the restaurant name and logo, and staff cannot sign in. - **Publish** switches it to published: the address becomes live and staff can sign in. > **Build first, publish later:** Draft is the safe place to set up branches, menu and staff. Publish when you are ready for your team to log in. ## How staff sign in Staff do not use the portal. They go to your restaurant’s address (the subdomain or your custom domain) and sign in with the email and password you created for them. Sofra decides which restaurant they belong to from the address they visited. If an email exists in several restaurants and no address is available, sign-in asks them to use their restaurant’s own domain. Staff can use **Forgot password** on the sign-in page. A reset token valid for one hour is generated and used to set a new password. ## Your profile Open **Profile** in the portal to change your name, company, country and phone, or to change your password (current password required, new password at least 8 characters). Your email is your sign-in identity and cannot be changed here. Changing your name also updates your name on the owner row inside each of your restaurants. ## Usage tab Each restaurant’s **Usage** tab shows consumption against your plan limits (staff accounts, menu items, tables, storage), the number of branches, orders all time and in the last 30 days, revenue for the last 30 days, and a daily chart of orders and revenue. _Screenshot: The Usage tab with limits and a 30-day chart._ --- # Domains > Change your free subdomain or connect your own domain with DNS verification. Source: https://sofra.tablixai.com/docs/domains Every restaurant gets a free address on `sofra.tablixai.com`. You manage addresses on the **Domains** tab of the restaurant in the portal. ## Change your subdomain - Pick a new name of 3 to 30 letters, numbers or dashes. It cannot start or end with a dash. - Reserved names and names used by another restaurant are rejected. - The new address replaces the old Sofra address immediately. Any custom domains you have connected are kept. ## Connect your own domain > **Available on Pro Plus and above:** Custom domains require the Pro Plus plan and an active subscription. 1. **Add the domain.** Enter a domain such as `orders.myrestaurant.com`. Addresses under `sofra.tablixai.com` are managed with the subdomain setting instead. You can have up to five domains waiting for verification. 2. **Add the TXT record.** Sofra shows a TXT record to create at your DNS provider: the name is `_sofra-verify.` and the value is a unique token. 3. **Point the domain at Sofra.** Create a CNAME for your domain to the target shown on the page (by default `app.sofra.tablixai.com`). 4. **Verify.** Choose **Verify**. Sofra looks up the TXT record. If it is not found yet, you are told DNS changes can take a few minutes to propagate; try again shortly. When it matches, the domain becomes active. > **Note:** A restaurant must always keep at least one domain. To remove its last real domain, add another first. A pending domain can be removed at any time. > **Where your branding shows:** Staff sign in on whichever domain you use. The public booking page and coming-soon page also use the restaurant’s name and logo. --- # Branches > Locations with their own hours, tax defaults, floor, stock, staff and prefixes. Source: https://sofra.tablixai.com/docs/branches A branch is a physical location. You always have at least one: the **head office** created when the restaurant was made. Only owners can add, edit or deactivate branches. > **Available on Basic and above:** The Free plan has a single branch. Multiple branches are available from Basic. ## Add a branch 1. **Open Branches.** Go to **Management → Branches** and choose **Add Branch**. 2. **Enter the basics.** Name (required), code, parent branch (optional, to build a hierarchy), contact person, phone and email. 3. **Add address and GPS.** Street, city, state, country, ZIP, and optional latitude and longitude. 4. **Set hours and timezone.** Opening and closing time, timezone and currency. Overnight service is supported (for example 18:00 to 02:00). Hours drive reservation availability. 5. **Set operations.** Seating capacity, number of tables, assigned kitchens and warehouses (as free text names), and delivery zones. 6. **Set document defaults.** Order prefix (for example `ORD`), invoice prefix (`INV`), receipt header and footer, tax rate and service charge rate defaults, and whether online orders are allowed. _Screenshot: The branch form: details, hours, tax and billing defaults._ ## The branch page Open a branch to see a profile page with these sections: - **Details**: contact, location and operations, plus receipt and invoice information. - **Floor areas**, **Departments** and **Roles** that belong to this branch. - **Staff with branch access**: assign staff to the branch and set their role here. See [Staff, roles & departments](https://sofra.tablixai.com/docs/staff-roles). - **Branch tax rules**: assign taxes and set which order channels each applies to. See [Taxes & service charges](https://sofra.tablixai.com/docs/taxes-charges). - **Branch menu config**: assign menus and override items. See [Branch menu customization](https://sofra.tablixai.com/docs/branch-menu). ## Closed days A branch can be closed on certain **weekdays** and on specific **dates** (with a reason, such as a holiday). Reservations cannot be booked on closed days, and the public booking page reflects them. ## Deactivating a branch - The head office cannot be deleted. - A branch with active child branches cannot be deactivated until the children are. - Deactivating hides the branch; it does not erase its orders or history. ## Working in a branch The **branch selector** at the top of the app sets the branch you are working in. Orders, tables, reservations, stock and printing all follow it. Owners and all-branch staff can switch between branches; branch-limited staff see only the branches they have been given. --- # Floor areas, tables & floor plan > Model your dining room, set capacities and see live table status. Source: https://sofra.tablixai.com/docs/floor-tables You describe your room as **floor areas** (such as Indoor, Patio, VIP) that contain **tables**. Everything is per branch. ## Floor areas Go to **Floor & Tables → Floor Areas** and add an area with a name, description, colour and sort order. Colours are used on the floor plan and in reservation views. An area can also be **closed on specific dates** (for example a private event or maintenance); no bookings are taken for it on those dates. _Screenshot: Floor areas with colours and closed-date rules._ ## Tables Go to **Floor & Tables → Tables** and add tables one by one. For each table you can set: | Field | What it does | |---|---| | Table name | For example T1 or VIP-A. | | Section | Free-text grouping such as Indoor or Patio. | | Floor area | Assign to one of your floor areas. | | Table type | Standard, booth, bar, high-top or outdoor. | | Shape | Square, round or rectangle (used on the floor plan). | | Capacity | Seats. Required. | | Min and max capacity, flexible | Optional bounds for parties that fit a range of sizes. | | Cleaning buffer | Minutes a table is held after a reservation before the next one can start. Default 15. | You cannot shrink a table below the size of a booking already placed on it. _Screenshot: The Tables page with status badges and the add-table form._ > **Table limits:** Table counts are capped by plan: Free 5, Basic 20, Pro 50, Pro Plus unlimited. Tables and the floor are available on every plan. ## Floor plan **Floor & Tables → Floor Plan** draws your tables on a canvas. Normally the plan shows **live status** and refreshes every 15 seconds. Choose **Edit Layout**, drag tables to match your real room, and the positions are saved as you drop them. _Screenshot: The floor plan with coloured tables showing live status._ ## Table statuses | Status | Meaning | |---|---| | Available | Free to seat. | | Reserved | Held for an upcoming booking. | | Occupied | Guests seated. | | Waiting order | Seated, no order placed yet. | | Order placed | An order has been created or confirmed. | | Being served | Food is ready or being served. | | Bill requested | The guests asked for the bill. | | Waiting cleaning / Cleaning | Being reset for the next party. | | Blocked | Temporarily unavailable, with a reason and optional end time. | | Out of service | Taken out of use. | Status normally follows the order automatically: placing an order marks the table *Order placed*, preparing marks it *Occupied*, ready or served marks it *Being served*, requesting the bill marks it *Bill requested*, and completing the order releases it. You can also set a status by hand. ### Blocking a table - Only managers (those who can see all tables) can **block** a table or take it **out of service**. - You can give a reason and an end time. A block that has run out releases the table by itself. - Blocking a table flags any upcoming bookings on it as **needing reassignment**, and warns if a party is currently seated. - A table cannot be shown as free while an order is still open on it. ## Availability timeline **Floor & Tables → Availability** shows, for a chosen date, each table across the day as a timeline of available, reserved, cleaning and blocked slots, taking into account reservations and the cleaning buffer. _Screenshot: Availability timeline for the day._ > **Plan note:** The availability timeline uses the reservations engine and is available from Basic. --- # Menu catalog > Menus, categories, items, modifier groups and per-channel prices. Source: https://sofra.tablixai.com/docs/menu-catalog You build your menu once, in the **global catalog**, and every branch can use it. The catalog has four building blocks: **menus**, **categories**, **menu items** and **modifier groups**. _Screenshot: Catalog overview: menus, categories and items._ ## Menus A **menu** is a top-level collection such as *All Day*, *Breakfast* or *Ramadan Specials*. Go to **Catalog → Menus** and choose **New Menu**: give it a name and description. Branches are then assigned the menus they sell (see [Branch menu customization](https://sofra.tablixai.com/docs/branch-menu)). Without branch customization, every active menu is shown. ## Categories Open a menu and choose **Add Category** to organise it into sections such as Starters, Mains or Drinks. A category has a name, description, image and sort order. Categories belong to one menu. ## Menu items Go to **Catalog → Menu Items** and choose **Add Item**. | Field | Notes | |---|---| | Name, description, images | Shown on the POS and tickets. | | Category | Required. | | Base price | The selling price. Required. | | Cost price | What the item costs you. | | SKU | Your own stock-keeping code. | | Type | Food, drink, combo or other. | | Prep time (min) and calories | Informational. | | Tags and allergens | Free-text lists. | | Modifier groups | Which option groups apply to this item. | | Default taxes | Tax definitions attached to the item. | | Per-channel prices | Separate Dine-in, Takeaway, Delivery, Online and QR prices (set through branch configuration). | _Screenshot: The Add Item form._ > **Menu item limits:** Plans cap the number of menu items: Free 20, Basic 100, Pro 500, Pro Plus unlimited. ## Modifier groups and modifiers A **modifier group** is a set of options a guest chooses from: for example *Size*, *Cheese*, *Cooking temperature*. Each option inside is a **modifier** with its own price (which may be zero). | Group setting | Meaning | |---|---| | Selection type | Single (pick one) or multiple. | | Required | Whether the guest must choose. | | Min select / Max select | How many options may be picked. | Attach groups to the items that need them. At the POS, choosing an item with groups opens a picker, and the order will not be placed until required groups are satisfied. ### Modifiers that change preparation A modifier can also change how the kitchen prepares the item: it can **inject extra prep steps** after a given step (a quality check, a packing step, a hold) or **override the station** for the whole item. See [Prep stations & workflows](https://sofra.tablixai.com/docs/prep-workflows). ## Recipes From a menu item you can open its **Recipe** to link ingredients so stock is deducted when it sells. See [Recipes](https://sofra.tablixai.com/docs/recipes). ## Who can edit the catalog Reading the catalog needs `catalog:read`; creating and editing needs `catalog:write`; deleting needs `catalog:delete`. By default owners and managers have all three. --- # Branch menu customization > Assign menus to branches and override items, prices, channels, schedules and taxes per branch. Source: https://sofra.tablixai.com/docs/branch-menu Branch customization lets the same global catalog behave differently in each location without duplicating anything. > **Available on Pro and above:** Without this feature a branch shows every active menu, category and item at base price and ignores branch overrides. ## Where to configure it Select a branch in the branch selector, then open **Catalog → Menus** or **Catalog → Menu Items**. The branch tab shows each menu or item with controls to enable it, override it or mark it temporarily out. You can also open a branch’s page and choose **Branch Menu Config**. _Screenshot: Branch menu config: enable, override price and mark temporarily out._ ## Menu assignment - Choose which menus a branch sells and their display order. - Give a menu a **start date and end date** for seasonal or special menus. - Limit a menu to certain **channels** (dine-in, takeaway, delivery, online, QR). ## Category overrides - Disable a category in this branch, or mark it **temporarily unavailable**. - Change its display order or give it a **custom name** for this branch. - Restrict it to certain channels and set a **time window and days** (for example Breakfast 07:00 to 11:00). ## Item overrides | Override | Effect | |---|---| | Sold at this branch (enabled) | Permanently on or off for this branch. | | Available | Live availability toggle. | | Temporarily out of stock | Manual “out of stock today”; hides it from the POS until restored. | | Branch override price | Replaces the base price for this branch. | | Per-channel prices | Dine-in, Takeaway, Delivery, Online and QR prices; a channel price wins over the override price. | | Channels | Show the item on only some channels. | | Available from / until, days | Time-of-day and weekday window. | | Taxes | Branch-specific tax IDs for the item. | | Modifier overrides | Per-branch price and availability for individual modifiers. | ## What the POS shows The POS asks the server for the **resolved menu** for the branch and channel. An item appears only if its menu is assigned and within its dates, its category and the item are enabled and not temporarily unavailable, it is visible on the current channel, and the current time and weekday fall inside any schedule. The price shown is the channel price, else the branch override, else the base price. > **Tip:** Use **Temporarily out** for “we ran out today” instead of disabling an item, so tomorrow it returns without any edits. --- # Taxes & service charges > Define tax rates, assign them to branches by channel, and add automatic service charges. Source: https://sofra.tablixai.com/docs/taxes-charges Sofra computes tax and service charge for every order automatically from the rules you set. Rules can differ by branch and by order channel. > **Available on Basic and above:** The Taxes, Discounts, Coupons, Service Charges and Payment Methods settings are available from Basic. ## Tax definitions Go to **Settings → Taxes** and choose **Add Tax**. Each definition has: | Field | Options | |---|---| | Name | For example VAT, GST, Delivery fee. | | Rate and type | Percentage (%) or a fixed amount. | | Category | Tax (VAT, GST), Service charge, or Fee (such as a delivery fee). | | Applies to | Per order, per item or both. | | Description | Optional. | _Screenshot: Global tax definitions._ ## Assigning taxes to a branch A tax only applies once it is assigned to a branch. Select the branch, open **Settings → Taxes** (or the branch’s **Tax rules** page) and choose **Add Tax Rule**. Pick the tax and **Applies to**: all channels, dine-in only, takeaway only or delivery only. Rules can be enabled or disabled without deleting them. > **Fallback when no rules exist:** If a branch has no tax rules, Sofra falls back to the **tax rate** and **service charge rate** in the branch settings (and then the restaurant defaults). ## How an order total is calculated 1. **Subtotal.** Sum of (item price + modifier prices) × quantity. 2. **Discounts and coupon.** The order discount is taken off first, then the coupon is applied to what remains. 3. **Taxable base.** Subtotal minus discounts and coupon. 4. **Taxes.** Each tax rule for the branch and channel is applied to the taxable base. Percentage rules multiply; fixed rules add a flat amount. 5. **Service charges.** Automatic service charges matching the channel and minimum order are added. 6. **Fees and tip.** Delivery fee, packaging fee, tip and any additional charges are added. 7. **Total.** Taxable base + taxes + service charge + delivery fee + packaging fee + tip + additional charges. The POS shows these figures live as you build an order, before it is saved. ## Service charges Go to **Settings → Service Charges** and choose **Add Charge**. | Field | Options | |---|---| | Name | For example Service 10%. | | Type and value | Percentage or fixed amount. | | Applies to | All order types, dine-in only, takeaway only, delivery only, online only or counter only. | | Minimum order amount | Only triggers when the subtotal reaches this amount. | | Application | **Automatic** (added to every matching order) or **Manual** (a cashier applies it). | | Branch | A specific branch or all branches. | > **Note:** If you define service charges here, they take over from any service charge defined as a tax rule, so a guest is not charged twice. --- # Discounts & coupons > Reusable discount rules with role limits, and promo codes with caps and expiry. Source: https://sofra.tablixai.com/docs/discounts-coupons **Discounts** are rules your staff apply at the POS. **Coupons** are codes a guest presents. Both are managed under **Settings** and need Basic or above. ## Discounts Go to **Settings → Discounts** and choose **Add Discount**. | Field | Meaning | |---|---| | Name and short code | What staff see; the code is optional. | | Type and value | Percentage or fixed amount. | | Scope | Per item, per order or both. | | Min order amount | Smallest subtotal the discount can be used on. | | Max discount cap | Upper limit for percentage discounts. | | Requires auth | Needs manager approval. | | Role limits | A maximum percentage per role (Owner, Manager, Cashier, Waiter). | _Screenshot: Discount rules with role limits._ ### Role discount caps Separately from discount rules, every **role** has a **maximum discount percentage**. When a staff member applies a percentage discount to an order, Sofra checks their role’s cap and refuses discounts above it. | Role | Default cap | |---|---| | Owner, Manager | Unlimited | | Branch Manager | 20% | | Cashier | 10% | | Waiter | 5% | | Kitchen | 0% (no discounts) | Owners can change these caps by editing a role. A cap of 0 means the role cannot apply percentage discounts, and no value means unlimited. ## Coupons Go to **Settings → Coupons** and choose **Add Coupon**. | Field | Meaning | |---|---| | Code and name | The code guests give you (stored upper-case). | | Type and value | Percentage or fixed amount. | | Min order amount | Smallest subtotal the coupon works on. | | Max discount cap | Limit for percentage coupons. | | Max uses | Total times the code can be redeemed. Blank means unlimited. | | Expires at | Date and time the code stops working. | | Applies to | Specific channels; empty means all. | At the POS, type the code into the **Coupon** field. Sofra checks that it exists, is active, has not expired and has uses left, then adds the discount (never more than the amount it applies to) and counts a use. Removing a coupon from an order releases its use. ## Applying at the POS - Use **Discount** on the order panel for an order-level discount, or **Item Discount** from an item’s menu for one line. - Percentage discounts are validated against the role cap; fixed discounts are limited to the subtotal. - Applying or removing a discount on an existing order needs the `orders:discount` permission. --- # Payment methods > Choose which payment methods cashiers can accept. Source: https://sofra.tablixai.com/docs/payment-methods Payment methods tell the POS how guests can pay. Go to **Settings → Payment Methods** and choose **Add Method**. Needs Basic or above. ## Fields | Field | Meaning | |---|---| | Name | What the cashier sees, for example “Visa”. | | Type | Cash, credit card, debit card, bank transfer, mobile wallet, digital payment, QR payment, online payment, gift card, customer credit or other. | | Reference required | Ask the cashier for a reference (card last four digits, transaction ID). | | Icon (emoji) | Optional. | | Sort order | Position in the list. | | Branch | A specific branch or all branches. | | Description | Optional. | _Screenshot: Payment methods list._ > **Note:** Sofra records how each guest paid; it does not charge cards itself. Card and wallet payments are processed on your own terminal and then recorded against the order with their reference. Methods are used at the payment step of an order. See [Payments, refunds & voids](https://sofra.tablixai.com/docs/order-payments). --- # Staff, roles & departments > Add staff, give them branch access and a role, create custom roles and organise departments. Source: https://sofra.tablixai.com/docs/staff-roles Sofra uses role-based access control. Three things decide what a person can do: their **role** (a set of permissions), the **branches** they have access to, and their **scope** (all branches or only assigned ones). ## Adding staff 1. **Open Staff.** Go to **People → Staff List** and choose **Add Staff**. 2. **Fill in the details.** Full name, email, password (at least 8 characters), role, an optional department and optional phone. 3. **Give branch access.** Open **Management → Branches**, choose the branch, then **Assign Staff** and pick the person and their role there. Without branch access a branch-limited person cannot work in any branch. _Screenshot: The staff list._ - An email can only belong to one **active** staff member in a restaurant. A deactivated member who is re-added is reactivated. - You can hold a **different role in each branch**, for example manager in branch A and cashier in branch B. - Staff accounts are capped by plan: Free 2, Basic 10, Pro 50, Pro Plus unlimited. - Removing a member deactivates them; their history is kept. ## Built-in roles Every restaurant starts with six roles that cannot be deleted: | Role | Typical use | Discount cap | |---|---|---| | Owner | Everything, including billing and roles. | Unlimited | | Manager | Runs the restaurant: catalog, staff, stock, reports, printing and documents. | Unlimited | | Branch Manager | Runs one branch: orders, tables, stock, staff, floor, kitchen, printing, reports. | 20% | | Cashier | Orders, payments, customers, documents and reservations; sees all orders and tables. | 10% | | Waiter | Dine-in orders for their own tables; reservations, walk-ins and waitlist. | 5% | | Kitchen | Sees all orders in the branch for the kitchen screen; updates prep status; prints tickets. | 0% | > **What “own orders” means:** Without `orders:read_all`, a person sees only their own dine-in and takeaway orders. Without `tables:read_all` they see only tables where they have an order. Delivery and online/QR orders need `orders:delivery` and `orders:online`. The complete permission list is in the [Permissions reference](https://sofra.tablixai.com/docs/permissions-reference). ## Custom roles > **Available on Pro and above:** Creating custom roles and editing role permissions requires Pro. On lower plans the six built-in roles apply as they are, and you assign them to staff. 1. **Open Roles.** Go to **Management → Roles** (owners only) and choose **Create Role**. 2. **Name and scope.** Give the role a name and choose whether it applies to the **whole restaurant** or **one branch only**. 3. **Inherit (optional).** Choose a built-in role as a parent. 4. **Tick permissions.** Switch on exactly the permissions the role needs, grouped by area (orders, tables, inventory, staff, printing, documents and so on). _Screenshot: The roles page with permission checkboxes._ - A custom role cannot be deleted while staff are assigned to it. - Built-in roles can have their permissions changed (by the owner) but cannot be deleted. - Branch-scoped roles are only active in that branch and appear on the branch page. ## Departments Departments group staff and operations by functional area, such as Kitchen, Service or Management. Go to **Management → Departments** and choose **Create Department**: name, description, a colour for badges and a scope (whole restaurant or one branch). Staff can be assigned a department when they are added. > **Plan:** Departments are available from Basic. ## Passwords and sessions - Passwords are stored hashed, never in plain text. - Staff reset a forgotten password with **Forgot password** on the sign-in page. The owner’s password is the owner-portal password. - Signing in updates the person’s last-login time. --- # Customization overview > How restaurant-wide and branch-level settings work together, and which one wins. Source: https://sofra.tablixai.com/docs/customization-overview Sofra is designed so you set things up **once for the whole restaurant** and then **override only what differs** in a branch. This section explains the model, lists every customization, tells you which plan unlocks it, and documents exactly which setting wins when both exist. ## The two levels | Level | Also called | What lives here | Who can change it | |---|---|---|---| | Restaurant-wide | Tenant-based | Things that are the same everywhere: the menu catalog, tax definitions, discounts, coupons, roles, ingredients, recipes, customers, prep workflows, document templates, domains and the subscription. | Owner, and staff with the matching permission (for example `catalog:write` or `settings:write`). | | Branch | Branch-based | Things that belong to one location: hours and closed days, order and invoice prefixes, floor areas and tables, stock, printers, staff access and roles, and **overrides** of the catalog. | Owner; branch managers for the branch they run. | Many items can exist at **both** levels. A service charge, payment method, department, prep station, prep workflow, role or document template can be created for **all branches** or for **one branch**. Where both apply, the more specific (branch) one wins. ## How to know which level you are editing - Restaurant-wide pages (Menus, Menu Items catalog, Taxes, Discounts, Coupons, Roles) do not depend on the selected branch. - Branch pages (Tables, Floor Areas, Reservations, Inventory, Printers, Print Rules, Schedule) always work in the **branch selected in the header**. - Pages that can do both show a **Branch** or **Scope** field (“All branches” or one branch), for example Service Charges, Payment Methods, Departments, Prep Stations and Document Templates. - The **Menus**, **Menu Items** and **Taxes** pages show a branch tab or ask you to select a branch before you can edit overrides. ## Which setting wins When a restaurant-wide setting and a branch setting both exist, Sofra resolves them in a fixed order. These rules are what the POS, kitchen and documents actually use. ### Item price 1. **Channel price.** The branch’s price for the order channel (dine-in, takeaway, delivery, online or QR), if set. 2. **Branch override price.** The branch’s single override price, if set. 3. **Base price.** The price on the global menu item. The first one that is set wins. Without Pro (branch customization), only the base price is used. ### Item tax Taxes set on the item **for that branch** win over the **default taxes** on the global item. Separately, order totals use the branch’s **tax rules** (see below). ### Order tax and service charge - Taxes come from the branch’s **tax rules**, filtered by order channel (all, dine-in, takeaway, delivery). - If the branch has **no tax rules**, Sofra uses the **tax rate** and **service charge rate** from the branch settings, then the restaurant defaults. - If you define **Service Charges** (restaurant-wide or branch-specific), they replace any service charge that came from a tax rule, so guests are never charged twice. ### What the POS menu shows An item appears at a branch only if: its menu is assigned and within its dates, its category and item are enabled and not temporarily unavailable, it is visible on the current channel, and the time and weekday fall inside any schedule. Without Pro, every active menu, category and item is shown at base price. ### Prep workflow Most specific first: item profile (this branch), item profile (restaurant), category profile (this branch), category profile (restaurant), branch default, restaurant default, then the system default *Standard Kitchen*. Modifiers can inject steps or override the station on top. ### Document template Most specific first: the template explicitly requested, the branch’s selection for that document type, a branch template, the restaurant’s selection, a restaurant template, then the built-in system default. ### Staff role In a branch, a person’s role is taken from: a **branch-specific role** with their role name, else the role assigned to them **for that branch**, else their **restaurant-wide role**. A person can therefore be a manager in one branch and a cashier in another. ### Discounts Percentage discounts are capped by the **role’s** maximum, regardless of the discount rule. ## What happens if your plan changes - Nothing you configured is deleted when you downgrade. - Branch menu overrides are **ignored** while the plan lacks Pro; they apply again when you upgrade. - Print rules are kept but **stop firing** without automatic printing. - Custom templates and roles stay saved but can no longer be created or edited until you upgrade. - Limits (staff, items, tables) only stop new records from being created. ## Where next - [Restaurant-wide customizations](https://sofra.tablixai.com/docs/restaurant-customizations): Every tenant-level setting and the plan it needs. - [Branch customizations](https://sofra.tablixai.com/docs/branch-customizations): Every branch-level setting and the plan it needs. - [Customization matrix](https://sofra.tablixai.com/docs/customization-matrix): One table with everything, by scope and plan. - [Plans & limits](https://sofra.tablixai.com/docs/plans-and-limits): Prices, limits and the feature matrix. --- # Restaurant-wide customizations > Everything you can customize once for the whole restaurant, with the plan each needs. Source: https://sofra.tablixai.com/docs/restaurant-customizations These settings belong to the restaurant (the tenant) and apply in every branch unless a branch overrides them. Each section states the **plan** where it becomes available. ## Identity, address and domains | Customization | Where | Plan | |---|---|---| | Restaurant name, country, currency | Chosen when you add the restaurant in the portal | All plans | | Free subdomain (`.sofra.tablixai.com`) | Portal → restaurant → Domains | All plans | | Custom domain with DNS verification | Portal → restaurant → Domains | Pro Plus | | Draft / published state | Portal home | All plans | | Restaurant name and logo on the coming-soon page | Automatic from the restaurant record | All plans | See [Account & owner portal](https://sofra.tablixai.com/docs/account-portal) and [Domains](https://sofra.tablixai.com/docs/domains). ## Menu catalog | Customization | Where | Plan | |---|---|---| | Menus, categories and menu items (name, description, images, base price, cost price, SKU, type, prep time, calories, tags, allergens) | Catalog → Menus / Menu Items | All plans (item cap: Free 20, Basic 100, Pro 500, Pro Plus unlimited) | | Modifier groups and modifiers (single or multiple, required, min/max, prices) | Menu items | All plans | | Modifiers that inject prep steps or override the station | Modifier settings | Needs Prep Workflows to have an effect: Pro | | Default taxes on an item | Menu item | Basic (taxes are a Basic feature) | | Recipe on a menu item | Menu item → Recipe | Basic | See [Menu catalog](https://sofra.tablixai.com/docs/menu-catalog). ## Taxes, discounts, coupons and payments | Customization | Where | Plan | |---|---|---| | Tax definitions (percentage or fixed; tax, service charge or fee; per order, per item or both) | Settings → Taxes | Basic | | Discount rules (type, scope, minimum, cap, requires approval, per-role limits) | Settings → Discounts | Basic | | Coupons (code, value, minimum, cap, max uses, expiry, channels) | Settings → Coupons | Basic | | Service charges for **all branches** | Settings → Service Charges (branch “all”) | Basic | | Payment methods for **all branches** (type, reference required, icon, order) | Settings → Payment Methods (branch “all”) | Basic | | Role discount caps (default 5% waiter, 10% cashier, 20% branch manager, none for owner and manager) | Roles | Editing caps needs role editing: Pro | See [Taxes & service charges](https://sofra.tablixai.com/docs/taxes-charges), [Discounts & coupons](https://sofra.tablixai.com/docs/discounts-coupons) and [Payment methods](https://sofra.tablixai.com/docs/payment-methods). ## People and access | Customization | Where | Plan | |---|---|---| | Six built-in roles (Owner, Manager, Branch Manager, Cashier, Waiter, Kitchen) | Automatic | All plans | | Create custom roles; edit role permissions; set discount caps | Management → Roles (owner) | Pro | | Staff accounts | People → Staff List | All plans (Free 2, Basic 10, Pro 50, Pro Plus unlimited) | | Departments for the whole restaurant | Management → Departments | Basic | | Customer records and tags | People → Customers | Basic | See [Staff, roles & departments](https://sofra.tablixai.com/docs/staff-roles) and [Customers](https://sofra.tablixai.com/docs/customers). ## Kitchen and preparation | Customization | Where | Plan | |---|---|---| | Standard Kitchen workflow and kitchen screen | Operations → Kitchen | All plans | | Restaurant-wide prep stations | Settings → Prep Stations (branch empty) | Pro | | Restaurant-wide custom prep workflows and step types | Settings → Prep Workflows (scope “Tenant”) | Pro | | Restaurant-wide prep profiles (item, category or restaurant default) | Settings → Prep Profiles | Pro | See [Prep stations & workflows](https://sofra.tablixai.com/docs/prep-workflows). ## Documents and branding | Customization | Where | Plan | |---|---|---| | Bills and receipts with the Standard Receipt template | Order page | All plans | | A4 invoices | Order page | Basic | | Choose among built-in templates for the whole restaurant | Settings → Document Templates (All branches) | Basic | | Create custom templates (paper size, fields, header/footer text, alignment, font) | Settings → Document Templates | Pro | | Remove the Sofra mark from customer documents | Template setting | Pro Plus | Restaurant-wide template changes can only be made by someone with access to **all branches**. See [Bills, receipts & invoices](https://sofra.tablixai.com/docs/billing-documents). ## Inventory master data | Customization | Where | Plan | |---|---|---| | Ingredient catalog (name, category, unit) | Inventory → Ingredients | Basic | | Recipes (yield and ingredient lines) | Inventory → Recipes | Basic | ## Platform | Customization | Where | Plan | |---|---|---| | Subscription plan, billing cycle, payment method, invoices | Billing or portal | All plans | | API access | On request | Pro Plus | | Dedicated database | On request | Pro Plus | | Priority support | Support | Pro Plus | --- # Branch customizations > Everything you can customize per branch, with the plan each needs. Source: https://sofra.tablixai.com/docs/branch-customizations These settings belong to one branch. Select the branch in the header, then make the change. Each section states the **plan** where it becomes available. > **Multiple branches:** The **Branches** page, where you add branches and edit branch details, is part of multi-branch and is available from Basic. Free includes one branch, created for you. ## Branch profile and operations | Customization | Where | Plan | |---|---|---| | Name, code, parent branch (hierarchy), contact person, phone, email | Branches → branch | Basic | | Address and GPS | Branches → branch | Basic | | Opening and closing time (overnight supported), timezone, currency | Branches → branch | Basic | | Closed weekdays and closed dates with a reason | Branches → branch | Basic | | Order prefix, invoice prefix | Branches → branch | Basic | | Receipt header and footer text | Branches → branch | Basic | | Default tax rate and service charge rate (fallback when no tax rules) | Branches → branch | Basic | | Allow online orders flag, seating capacity, assigned kitchens and warehouses, delivery zones | Branches → branch | Basic | See [Branches](https://sofra.tablixai.com/docs/branches). ## Floor and tables | Customization | Where | Plan | |---|---|---| | Floor areas (name, colour, order) | Floor & Tables → Floor Areas | All plans | | Tables (type, shape, capacity, min/max, flexible, section) | Floor & Tables → Tables | All plans (Free 5, Basic 20, Pro 50, Pro Plus unlimited) | | Drag-and-drop floor plan layout | Floor & Tables → Floor Plan | All plans | | Block a table or take it out of service, with reason and end time | Tables | All plans (managers) | | Cleaning buffer per table | Table form | Used by reservations: Basic | | Close a whole area on specific dates | Floor Areas | Used by reservations: Basic | | Availability timeline | Floor & Tables → Availability | Basic | | Merge and split tables | Floor & Tables → Table Merges | Basic | See [Floor areas, tables & floor plan](https://sofra.tablixai.com/docs/floor-tables) and [Table merging](https://sofra.tablixai.com/docs/table-merging). ## Menu overrides for the branch All of these need **branch customization**, which is available from **Pro**. Without it every branch shows the whole catalog at base price. | Customization | Level | Plan | |---|---|---| | Assign which menus the branch sells, with display order | Menu | Pro | | Seasonal start and end dates for a menu at this branch | Menu | Pro | | Limit a menu to certain channels | Menu | Pro | | Disable a category, mark temporarily unavailable, custom category name, display order | Category | Pro | | Category time window and weekdays (for example Breakfast 07:00 to 11:00) | Category | Pro | | Sell or do not sell an item here; live availability; “temporarily out today” | Item | Pro | | Branch override price | Item | Pro | | Per-channel prices (dine-in, takeaway, delivery, online, QR) | Item | Pro | | Show an item only on certain channels; time window and weekdays | Item | Pro | | Branch-specific taxes on an item | Item | Pro | | Per-branch price and availability of a modifier | Modifier | Pro | See [Branch menu customization](https://sofra.tablixai.com/docs/branch-menu). ## Taxes, charges and payments for the branch | Customization | Where | Plan | |---|---|---| | Branch tax rules: assign taxes and choose all channels, dine-in, takeaway or delivery | Branch → Tax rules / Settings → Taxes | Basic | | Service charges for this branch only (type, value, channel, minimum, automatic or manual) | Settings → Service Charges (pick the branch) | Basic | | Payment methods for this branch only | Settings → Payment Methods (pick the branch) | Basic | ## Staff, roles and departments in the branch | Customization | Where | Plan | |---|---|---| | Give staff access to the branch and set their role there | Branch → Assign Staff | Basic (multi-branch) | | Different role per branch for the same person | Branch → Assign Staff | Basic | | Branch-specific custom roles (only active in this branch) | Roles (scope: one branch) | Pro | | Branch-specific departments | Departments (scope: one branch) | Basic | | Weekly shifts and attendance for the branch | People → Schedule | Pro | See [Staff, roles & departments](https://sofra.tablixai.com/docs/staff-roles) and [Staff schedule & attendance](https://sofra.tablixai.com/docs/schedule-attendance). ## Kitchen, printing and documents | Customization | Where | Plan | |---|---|---| | Branch-only prep stations, workflows and profiles | Settings → Prep Stations / Workflows / Profiles (pick the branch) | Pro | | Printers (thermal, label, A4, virtual) with browser, network or USB connection | Settings → Printers | Pro | | Print agents (one per branch PC) with rotate and revoke | Settings → Printers → Print agents | Pro | | Print rules by trigger, document, station, order type and copies | Settings → Print Rules | Pro | | Station-based print rules | Print Rules | Pro (needs Prep Workflows) | | Station-move tickets, course routing and order-source routing | Print Rules | Pro Plus | | Template choice for this branch only | Settings → Document Templates (This branch) | Basic | | Custom templates for this branch only | Settings → Document Templates | Pro | | Manual printing of bills, receipts and kitchen tickets | Order page | All plans | See [Printing & the print agent](https://sofra.tablixai.com/docs/printing) and [Prep stations & workflows](https://sofra.tablixai.com/docs/prep-workflows). ## Bookings | Customization | Where | Plan | |---|---|---| | Reservations, walk-ins and waitlist | Floor & Tables | Basic | | Reservation durations, occasions and sources, deposits, no-show rules | Reservations | Basic | | Public online booking page and manage page | Floor & Tables → Online Booking | Pro | > **Note:** The public booking page books into the restaurant’s first active branch unless a specific branch is requested in the link. ## Inventory in the branch | Customization | Where | Plan | |---|---|---| | Warehouses (main, cold, dry, bar, other) | Inventory → Warehouses | Basic | | Stock levels, reorder level, max level and cost per unit per warehouse | Inventory → Stock Levels | Basic | | Stock movements and low-stock alerts for the branch | Inventory → Movements | Basic | ## Reports | Customization | Where | Plan | |---|---|---| | Reports scoped to the selected branch, or across all branches | Management → Reports | Pro | | Branch comparison | Management → Reports | Pro | --- # Customization matrix > Every customizable feature on one page: scope, where, and the plan it needs. Source: https://sofra.tablixai.com/docs/customization-matrix Use this page to find at a glance where a setting lives and which plan unlocks it. **R** = restaurant-wide, **B** = branch-level, **R+B** = can be set at either level, with the branch winning. > **Note:** “Free” means every plan. A cell with a plan name means that plan and above. ## The full matrix | Feature | Scope | What you can customize | Plan | |---|---|---|---| | Identity | R | Name, currency, country, free subdomain, draft/published | Free | | Custom domain | R | Your own domain with DNS verification | Pro Plus | | Branch profile | B | Details, address, hours, timezone, currency, closed days, prefixes, receipt header/footer, default tax rates | Basic | | Floor areas and tables | B | Areas, tables, shapes, capacities, layout, blocks | Free | | Table cleaning buffer and area closures | B | Used by bookings | Basic | | Menu catalog | R | Menus, categories, items, modifiers | Free | | Branch menu overrides | B | Menus, categories, items, channel prices, schedules, taxes, modifier overrides | Pro | | Tax definitions | R | Rates, type, category | Basic | | Branch tax rules | B | Which taxes apply, by channel | Basic | | Service charges | R+B | Automatic or manual charges by channel and minimum | Basic | | Payment methods | R+B | Methods, reference required, order | Basic | | Discounts and coupons | R | Rules, role limits, codes, caps, expiry | Basic | | Role discount caps | R | Maximum discount % per role | Pro | | Roles | R+B | Built-in roles; custom roles and permissions | Free built-in, Pro custom | | Staff access | B | Branch access and per-branch role per person | Basic | | Departments | R+B | Functional groups, colours | Basic | | Customers | R | Profiles, addresses, tags | Basic | | Prep stations, workflows and profiles | R+B | Stations, step workflows, assignments | Pro | | Kitchen display | B | Live tickets for the branch | Free | | Document templates: choose built-in | R+B | Receipt, invoice and ticket templates | Basic | | Document templates: create custom | R+B | Paper size, fields, text, styling | Pro | | Remove Sofra mark from documents | R | White-label customer documents | Pro Plus | | Printers, agents and print rules | B | Automatic printing | Pro | | Advanced print routing | B | Station-move, course and source routing | Pro Plus | | Reservations, walk-ins, waitlist, merging | B | Bookings and seating rules | Basic | | Online booking page | B | Public booking and manage pages | Pro | | Inventory | R+B | Ingredients and recipes (R), warehouses and stock (B) | Basic | | Staff schedule and attendance | B | Shifts and clock in/out | Pro | | Reports | R+B | All branches or one branch | Pro | | Advanced orders | B | Refund, split order, merge, duplicate | Pro | | Subscription and billing | R | Plan, cycle, payment method, invoices | Free | | API access and dedicated database | R | Integrations and isolated data | Pro Plus | ## What each plan unlocks ### Free - Restaurant identity and free subdomain. - Menu catalog, modifiers, floor areas, tables, floor plan, kitchen display, orders and POS. - Bills and receipts, manual kitchen printing, built-in roles, subscription management. ### Basic adds - Multiple branches and the branch profile (hours, prefixes, closed days, tax defaults). - Taxes and branch tax rules, discounts, coupons, service charges, payment methods. - Inventory, recipes, customers, departments. - Reservations, walk-ins, waitlist, table merging, availability timeline. - A4 invoices and choosing among built-in templates. ### Pro adds - Branch menu overrides: prices, channel prices, schedules, taxes and availability per branch. - Custom roles, role permissions and discount caps, and branch-specific roles. - Prep stations, workflows and profiles. - Printers, print agents, print rules and automatic printing, and custom document templates. - Online booking page, staff scheduling and attendance, reports and analytics, advanced orders. ### Pro Plus adds - Custom domain. - White-label customer documents (no Sofra mark). - Advanced print routing. - API access, dedicated database and priority support. - Unlimited staff, menu items and tables (fair use). > **Tip:** Planning an upgrade? Open [Plans & limits](https://sofra.tablixai.com/docs/plans-and-limits) for prices and caps, then [Billing & subscription](https://sofra.tablixai.com/docs/subscription-billing) to change plan. --- # POS & orders > Build and send orders across eight channels, with modifiers, notes, discounts, coupons and live totals. Source: https://sofra.tablixai.com/docs/pos-orders Orders are created from **Operations → Orders → New Order**. The screen has the menu on the left and the order on the right, and it recalculates taxes, service charges and totals live as you add items. _Screenshot: The New Order screen: channels across the top, menu on the left, cart and totals on the right._ ## Choose a channel Pick a channel at the top. The channel decides which fields appear, which taxes and service charges apply, and which menu items and prices are shown. | Channel | What you must provide | Notes | |---|---|---| | Dine-In | A table | Placing the order marks the table occupied. | | Takeaway | Optional customer | Pickup slip can be printed when ready. | | Counter | Optional customer | Quick pay at the counter. | | Delivery | Delivery address (street required), optional area, city, phone, fee and instructions | A packing slip can be printed when ready. | | Online | As delivery | For orders arriving through your website. | | QR Order | A table | Dine-in orders tagged as QR source. | | Phone | As delivery | Orders taken by phone. | | Quick Sale | Nothing | Fastest path for simple sales. | > **Note:** Channels with delivery fulfilment (Delivery, Online and Phone) need the `orders:delivery` permission. Waiters do not have it by default, so they take dine-in and takeaway orders. > **QR orders:** QR Order is a channel staff can select when taking an order that came from a table QR. Sofra does not currently provide a guest-facing QR ordering page. ## Adding items 1. **Find the item.** Browse by category or use the **Search items** box. 2. **Choose options.** If the item has modifier groups, a picker opens. Required groups must be satisfied; each option shows its price. Add a note such as “no onions, allergy to nuts”. 3. **Adjust the cart.** Change quantities with plus and minus, or open an item’s menu to **Edit Modifiers**, **Add Note**, **Item Discount**, **Change Price**, **Move Item**, **Cancel Kitchen** (if already sent) or **Void Item**. 4. **Add order details.** Add order notes and **kitchen instructions**, choose a customer (search by name or phone), assign a waiter, set the guest count, and add a tip or packaging fee. _Screenshot: The modifier picker for an item._ ## Attaching a customer Search by name or phone and select a customer. For delivery you can pick one of their saved addresses. Completed orders update the customer’s visit count, total spend and last visit automatically. ## Courses and priority - An item given a **course** number above 1 is **held** and does not go to the kitchen until the course is fired from the kitchen screen. Use it for starters, mains and desserts. - Items carry a **priority** (normal, high, urgent) that the kitchen can raise to push a dish to the front of the queue. ## The action buttons | Button | What it does | |---|---| | Hold | Saves the order without sending it. A held order releases its table. Resume it later from the Orders list. | | Send to Kitchen | Marks the new items as sent and moves the order to Confirmed. On an existing order the button reads “Send N New” and sends only items not yet sent. | | Re-send Full Ticket | Resets the sent flag on all active items so the kitchen sees them again. Use it if a printout was lost. | | Discount | Order-level discount, validated against your role’s cap. | | Coupon | Enter a promo code. | | Pay | Opens the payment dialog. See [Payments, refunds & voids](https://sofra.tablixai.com/docs/order-payments). | If a dine-in order has no table or a delivery order has no address, the screen tells you what is missing before it lets you place the order. ## Order numbers Each branch numbers its orders with the **order prefix** from its settings (default `ORD`) and a four-digit counter, for example `ORD-0042`. Numbers are allocated atomically so two terminals can never get the same number. ## The Orders list **Operations → Orders** lists orders for the branch with status tabs and live counts, a search by order number, and filters by type. It shows the table, customer, total and payment status, and opens the order page on click. Staff without `orders:read_all` see only their own orders. _Screenshot: The Orders list with status tabs._ --- # Order lifecycle, payments, refunds & voids > Statuses by order type, partial and split payments, refunds, voids, transfers, merges and reopening. Source: https://sofra.tablixai.com/docs/order-payments Open any order from the Orders list to manage it through its life. The order page shows the items, totals, payments and a row of actions that depend on the order’s state and your permissions. _Screenshot: The order page with items, totals, payments and action buttons._ ## Status flow by order type | Order type | Normal progression | |---|---| | Dine-in | Pending → Confirmed → Preparing → Ready → Served → Billing → Completed | | Takeaway | Pending → Confirmed → Preparing → Ready for pickup → Picked up → Completed | | Delivery | Pending → Confirmed → Preparing → Ready → Assigned → Out for delivery → Delivered → Completed | Other states can be reached from any flow: **Held**, **Cancelled** and **Voided**. - Moving an order to **Confirmed** or **Preparing** automatically sends any unsent items to the kitchen. - Moving an order to **Served**, **Completed**, **Delivered** or **Picked up** marks all its non-cancelled items as served. - When every item is served, the order advances to Served by itself. - The table’s status follows the order automatically (see [Floor areas, tables & floor plan](https://sofra.tablixai.com/docs/floor-tables)). ## Request the bill For dine-in, once the order is **Served** or **Ready**, choose **Request Bill**. The order moves to Billing and the table to *Bill requested*. ## Taking payment 1. **Open Pay.** Choose **Pay** on the order screen or the order page. The dialog shows the amount due. 2. **Add payment legs.** Choose a payment method, an amount and, if required, a reference (card last four digits, transaction ID). Add more legs to split the bill across methods. 3. **Confirm.** Sofra adds up the legs. When the total paid reaches the order total, payment status becomes **Paid**, the order **Completed**, and the table is released. _Screenshot: The payment dialog with split payment legs._ - **Partial payments** are allowed. The order shows *Partial* with the remaining balance until it is settled. - Each leg records the method, amount, reference, who recorded it and when. - Payment status values are Unpaid, Partial, Paid, Overpaid and Refunded. - A fully paid, finished order cannot be paid again. ## Split a bill by item Create **buckets** (for example “Guest A”, “Guest B”), assign items to each, and pay each bucket on its own. Each bucket has its own subtotal, total and payment status; when all buckets are paid the order is settled. ## Advanced order actions > **Available on Pro and above:** Refund, Split order, Merge and Duplicate are part of advanced orders. | Action | What it does | Permission | |---|---|---| | Refund | Full or partial refund on a paid order, with a reason. Records who refunded and when and sets payment status to Refunded. | `orders:refund` | | Split order | Moves selected items out of the order into a new order. | `orders:write` | | Merge | Moves another order’s items into this one and cancels the source order, releasing its table. | `orders:write` | | Duplicate | Clones the items into a new order. | `orders:write` | ## Other actions (all plans) - **Add items** to an existing order, or change an item’s quantity. Tax and service charge are recalculated on the new subtotal. - **Move table**: releases the old table and claims the new one. - **Transfer to another waiter**, with an optional reason. Every transfer is recorded in an audit log on the order. - **Hold** an order, and **Reopen** a completed, cancelled or held order (a reason is recorded; a paid order goes back to unpaid). - **Edit pricing** after creation: discount, coupon, tip, packaging fee and additional charges. ## Voids and kitchen cancellations | Action | When to use | Permission | |---|---|---| | Void item | Remove a single line (wrong order, guest changed their mind). A reason is optional. | `orders:void` | | Void order | Cancel the entire order. A reason is **required** and the voider is recorded. | `orders:void` | | Cancel kitchen item | An item already sent to the kitchen; it is marked cancelled and the kitchen screen shows it, and a cancel ticket can print. | `orders:void` | | Mark item unavailable | Sets the item cancelled with an “unavailable” note when the kitchen cannot make it. | `orders:write` | ## Printing from an order The order page has **Print Bill** (or **Print Receipt** once paid) and **Invoice**. See [Bills, receipts & invoices](https://sofra.tablixai.com/docs/billing-documents). --- # Kitchen display (KDS) > A live ticket screen per station: advance steps, bump, recall, set priority and fire courses. Source: https://sofra.tablixai.com/docs/kitchen **Operations → Kitchen** is the kitchen display. It shows the active tickets for the selected branch and refreshes every 8 seconds. Only people with `kitchen:view` can open it, and `kitchen:update` is needed to act on tickets. _Screenshot: The kitchen display with tickets, timers and priority badges._ > **Plans:** The kitchen screen works on every plan using the standard *Standard Kitchen* workflow (Ordered → Preparing → Ready). Stations and custom workflows need Pro. See [Prep stations & workflows](https://sofra.tablixai.com/docs/prep-workflows). ## Views - **All** shows every ticket for the branch. - With stations configured, a tab per station (with its colour) shows only the items currently at that station. An item can **move between stations** as it advances, for example from Grill to Expo. ## Reading a ticket - Each ticket shows the order number, table or type, elapsed time, and its items with modifiers and notes. - Urgent tickets pulse red, high priority tickets have an amber border and tickets with a pending cancel request show an orange **CANCEL REQ** badge. - Items still on hold for a later course do not appear until their course is fired. ## Actions on an item | Action | Result | |---|---| | Advance | Completes the item’s current step and moves it to the next. On the last step the item becomes **Ready**. | | Pass / Fail (quality check) | On a quality-check step you choose Pass to advance, or Fail to log the failure and inject a **Rework** step; the item stays at the check until it passes. | | Bump | Marks the item ready immediately, skipping the remaining steps. | | Recall | Pulls a bumped or ready item back to in progress, one step back. | | Priority | Set the item to normal, high or urgent. Urgent items sort first. | | Fail prep | Records a prep failure with a reason (for example dropped, burnt). | | Re-prepare | Resets the item’s steps and puts it back in the queue after a failure. | | Print ticket | Prints the kitchen ticket for the order. | When the last item of an order is ready, the order moves to Ready (or Ready for pickup) and, for takeaway and delivery, the matching pickup or packing slip can print. ## Cancel requests If a guest cancels an item that is already being prepared, a request is raised with a reason. A person with `orders:void` can **approve** or **reject** it on the ticket. The item is only cancelled when approved. ## Course firing Items with a course number above 1 are held when the order is sent. The kitchen (or front of house) views a **course summary** for the order and **fires** a course to release its held items to the stations, so mains are not started while starters are still on the table. ## Stock deduction When an order is marked **Ready**, Sofra deducts the ingredients of each item that has a recipe from the branch’s main warehouse and records the movements. See [Inventory](https://sofra.tablixai.com/docs/inventory) and [Recipes](https://sofra.tablixai.com/docs/recipes). --- # Prep stations & workflows > Route items to stations and define the steps each kind of dish goes through. Source: https://sofra.tablixai.com/docs/prep-workflows Prep workflows control **where** an item is made and **what steps** it goes through. They power station routing on the kitchen display and station-based print rules. > **Available on Pro and above:** Prep stations, workflows and profiles are available from Pro. ## The three building blocks | Block | What it is | |---|---| | Prep station | A place that prepares food: kitchen, bar, bakery, dessert, expo/pass or custom. | | Prep workflow | An ordered list of steps (for example Ordered → Preparing → Oven → Quality Check → Ready), each optionally at a station with an estimated time. | | Prep profile | A rule that assigns a workflow to a menu item, a category, a branch or the whole restaurant. | ## Prep stations Go to **Settings → Prep Stations** and choose **Add Station**. Give it a name and type, a **KDS colour**, a sort order and whether the **kitchen display is enabled** for it. Leave the branch empty for a restaurant-wide station or pick a branch for a branch-only station. _Screenshot: Prep stations with colours._ ## Prep workflows Go to **Settings → Prep Workflows**. Sofra ships with read-only **system workflows**: | Workflow | Steps | |---|---| | Standard Kitchen (default) | Ordered → Preparing → Ready | | Beverage | Ordered → Preparing → Ready | | Pizza | Ordered → Preparing → Oven → Quality Check → Ready | | Direct Serve | Ordered → Ready | | Bakery | Ordered → Prep → Oven → Ready | | Barista | Ordered → Barista Queue → Preparing → Ready | | Delivery Pack | Ordered → Preparing → Ready → Packing → Packed | Choose **New Workflow** to build your own. Give it a name, description and scope (whole restaurant or one branch), optionally make it the default for that scope, and add steps. Each step has a name, an optional station, an estimated time and a **step type**: | Step type | Behaviour | |---|---| | Standard | A normal step the cook advances. | | Quality check | Shows Pass and Fail on the kitchen display. | | Packing | A post-kitchen step for takeaway and delivery. | | Hold | Waits for a manual fire. | ## Prep profiles Go to **Settings → Prep Profiles** and choose **Assign Workflow**: pick a target type (menu item, category, branch or restaurant-wide), the workflow, the order types it applies to (dine-in, takeaway, delivery, or all), an optional **station override** and an optional branch scope. ### Which workflow wins When an order item is created Sofra picks one workflow, from most to least specific: - Item profile for this branch - Item profile for the whole restaurant - Category profile for this branch - Category profile for the whole restaurant - Branch default profile - Restaurant-wide default profile - System default (Standard Kitchen) > **Snapshot at order time:** The workflow is copied onto the item when the order is created. Editing a workflow later does not change orders already in the queue. ## Modifiers that change prep - A modifier can **inject steps** after a chosen step (a quality check, packing step or hold). - A modifier can **override the station** for the whole item (for example “Add espresso shot” sends the drink to the bar). --- # Reservations > Bookings from creation to seating, with deposits, no-show handling and email reminders. Source: https://sofra.tablixai.com/docs/reservations Sofra’s reservation engine decides in one place whether a table is free, so bookings made from the POS, the online booking page, reschedules, walk-ins, the waitlist and table merges can never overbook the same table. > **Available on Basic and above:** Reservations are available from Basic. The public booking page needs Pro. _Screenshot: The reservations calendar in Day view, by table._ ## Create a reservation Go to **Floor & Tables → Reservations** and choose **New Reservation**. | Field | Notes | |---|---| | Customer | Search an existing customer or type a name, phone and email. Different names on the same phone number trigger a warning. | | Date and start time | Must be within the branch’s opening hours and not in the past. | | Duration | 1, 1.5, 2, 2.5 or 3 hours. Default 90 minutes. | | Guests | Party size. | | Occasion | None, birthday, anniversary, business dinner or other. | | Source | POS, phone, website, QR or WhatsApp. | | Table | Choose a table, or **Auto-assign best available table**. Optionally filter by floor area. | | Special requests and internal notes | Requests are the guest’s; internal notes are for staff only. | _Screenshot: The New Reservation form with auto-assign._ Auto-assign picks the **best-fit** table (least wasted seats). For groups larger than any one free table, Sofra suggests **combinations** of tables (pairs first, then triples) in the same area. ## What makes a table available - The table is not blocked or out of service (a block with an end time stops applying when it ends). - The party fits its capacity (staff can override with a reason). - The dining area is not closed on that date. - The window is inside the branch’s opening hours and not on a closed day. Overnight hours are supported. - No other active reservation overlaps, counting a **cleaning buffer** after each booking (default 15 minutes). - The table is not part of an active merge. - If the table is physically busy right now, it only blocks bookings that start in the next 30 minutes, so an 8 pm booking is fine even if the table is occupied at 6 pm. - A party still seated past its booked end keeps the table until it leaves. ## Lifecycle | Status | Meaning | |---|---| | Pending | Created, awaiting confirmation (online bookings start here). | | Confirmed | Staff confirmed it. | | Arrived | The guest is at the restaurant. | | Seated | Seated at a table. | | Ordering / Dining / Bill | Progress while the party is at the table. | | Completed | Finished. | | Cancelled | Cancelled, with a reason. | | No-show | The guest never came and staff recorded it. | | Expired | Never arrived and was closed automatically (see below). | 1. **Confirm.** Marks a pending booking as confirmed. 2. **Arrive.** Marks the guest as arrived. Sofra warns if they are early or late, if the booking is not for today, or if the table is not ready yet. 3. **Seat.** Seats the party at the booked or a chosen table (today only), optionally with the real guest count and a waiter. Overriding capacity needs a written reason. The table becomes occupied. 4. **Create order.** Opens a dine-in order on the table, linked to the reservation, ready for items. 5. **Complete.** When the order finishes the reservation completes and the table frees up for cleaning. ## Moving and changing bookings - Edit date, time, table, duration or party size; Sofra re-checks availability atomically, so a change either succeeds fully or is refused. - **Drag and drop** a booking on the calendar to move it. - A booking can be **combined** with other tables for a large party, and a **waiter** can be assigned. - Cancelling a seated party is refused, and cancelling is idempotent. ## Calendar views The calendar offers **Day**, **Week** and **Month** views, can group by **table** or by **area**, and is colour-coded by status. The reservations list has filters for area, status and date. ## Deposits - A customer flagged as high-risk (see below) is asked for a **deposit** when booking online. The default is 10 per guest. - Staff record a deposit payment against the reservation (method, amount, reference). It is marked paid once it covers the required amount. - Changing or cancelling **within 24 hours** of the start is restricted when a deposit is paid: changes need manager approval, and cancelling forfeits the deposit. Outside that window cancelling makes a **refund due**, which a manager marks refunded. - A no-show always forfeits a paid deposit. ## No-shows, expiry and guest risk - A booking still pending or confirmed **30 minutes after its start** (in the branch’s timezone) is **expired** automatically and counted as a no-show. The check runs every five minutes. - Each no-show raises the customer’s count: **2 no-shows** make them medium risk, **4** high risk, and any risk above low requires a deposit. - **5 no-shows** restrict the customer from booking online for **7 days**; they are told to call instead. - Staff can also record a no-show by hand. Cancellations are counted separately. ## Guest emails If the guest’s email is on the booking, Sofra sends a **confirmation**, a **reminder** shortly before the booking (retried up to three times), an **update** when it changes and a **cancellation** notice. A failed email never blocks a booking; the failure is stored on the reservation so staff can phone the guest instead. ## Bookings that need a new table If a table is blocked or taken out of service after being booked, the affected bookings are flagged **needs reassignment** so staff can move them to another table. --- # Walk-ins & waitlist > Seat walk-in guests immediately or queue them, and offer tables to the right party as they free up. Source: https://sofra.tablixai.com/docs/walk-ins-waitlist Walk-ins and the waitlist use the same availability engine as reservations, so a walk-in cannot take a table that is occupied, blocked, or needed by a booking during its stay. > **Available on Basic and above:** Walk-ins and the waitlist are available from Basic. ## Walk-ins Go to **Floor & Tables → Walk-ins** and choose to add one: name, optional phone and email, party size, estimated wait, special requests and notes. - If you **choose a table**, the party is seated immediately and recorded as *Seated*. - If you do not, the party is *Waiting*, and you can seat them later with a table. - Capacity can be overridden with a written reason. - Statuses are Waiting, Seated, Completed, Left and No-show. - You can **convert** a walk-in into a customer profile (matching an existing customer by phone, or creating one). - Marking the party as left frees the table for cleaning and tells staff who on the waitlist is next. _Screenshot: The walk-ins list._ ## Waitlist Go to **Floor & Tables → Waitlist** to queue parties when nothing is free. | Field | Notes | |---|---| | Name, phone, email, party size | Name and a whole-number party size are required. | | Preferred area, table and seating type | Seating type: indoor, outdoor, bar, window or any. | | Estimated wait and notes | Quoted wait in minutes. | - The same phone number cannot be queued twice; Sofra returns the existing entry. - Each new entry shows its **queue position**. - The page shows the **average wait** from parties seated today. - **Notify** marks that you have told a party their table is ready. **Seat** seats them and records a linked walk-in. Statuses are Waiting, Notified, Seated, Left and No-show. ## Table suggestions For each table that is free right now, Sofra suggests which waiting party should get it: first come, first served among parties that fit, preferring the table’s area or the party’s preferred table. It only offers a table that stays free for the next stretch, so it never promises a table a reservation needs. When you free a table, a match is shown to the staff member who did it. --- # Table merging > Combine tables for a large party and split them again afterwards. Source: https://sofra.tablixai.com/docs/table-merging Join tables into one unit when a large party arrives. Go to **Floor & Tables → Table Merges**. > **Available on Basic and above:** Table merging is available from Basic and needs the right to see all tables (managers). ## Merging tables 1. **Choose a primary table.** The primary keeps the order. It can be mid-service because you are extending its party. 2. **Choose the tables to add.** Select at least one other table. 3. **Confirm.** Sofra checks every table is in this branch, not already merged, not blocked, has no open order (other than the primary’s) and is not booked by a reservation in the next 90 minutes. The combined capacity is the sum of the seats. You can link a merge to a reservation and add notes. ## Splitting Splitting returns the tables to individual use. If any table in the merge has an open order, you must choose which table **keeps the orders**; every open order is moved there so none is left on a table that has been released. Without that choice the split is refused and the open orders are listed. --- # Online booking page > A public page where guests reserve a table, then view or cancel with a confirmation code. Source: https://sofra.tablixai.com/docs/online-booking Each restaurant has a public booking page you can link from your website, social profiles or a QR code. Guests never need an account. > **Available on Pro and above:** The online booking page is available from Pro. ## Your links Go to **Floor & Tables → Online Booking**. You will see two links with Copy and Preview buttons: - **Booking page**: `https:///book/` - **Manage reservations**: `https:///book//manage`, where guests look up and cancel with a code. _Screenshot: The Online Booking settings page with the booking and manage links._ ## What the guest does 1. **Choose date, time and party size.** The page shows available tables in real time. Parties above 20 are asked to call the restaurant. 2. **Pick a preferred area (optional).** The guest can choose an area or leave it as “No preference”. 3. **Enter their details.** Name, phone and email, plus occasion and special requests such as allergies. 4. **Confirm.** The guest sees “You’re booked!” with a **confirmation code** to save, and receives a confirmation email. _Screenshot: The public booking form._ - Every online booking gets a **real table**, so the restaurant can never be overbooked. If the preferred table is lost to a race, Sofra tries the next best-fit table. - Bookings start as **Pending** and appear instantly on your Reservations page. Double submissions are prevented. - A guest cannot book two overlapping reservations. - Guests with a history of no-shows are required to pay a **deposit**; guests who are temporarily restricted are asked to call. - The page respects opening hours, closed days, closed areas and the cleaning buffer. ## Managing a booking On the manage page the guest enters their confirmation code to view the booking, **cancel** it, or **reschedule** it to a new time. Only pending or confirmed bookings can be changed. Rescheduling keeps their table if it is free at the new time, otherwise moves them to another that fits. If a deposit is paid and the booking is close, the change needs the restaurant’s approval. _Screenshot: The manage reservation page._ > **Note:** The page shows only what a guest needs. Other guests’ names and internal notes are never exposed. --- # Bills, receipts & invoices > Numbered customer documents with frozen snapshots, templates and a full history. Source: https://sofra.tablixai.com/docs/billing-documents Sofra produces three customer documents from any order: a **Bill** (before payment), a **Receipt** (after payment) and an **Invoice**. Go to **Operations → Bills & Receipts** for the history, or print straight from an order. ## Draft → finalized → void | Status | What it means | |---|---| | Draft | Created from an order. It re-reads the live order, so it follows changes. | | Finalized | Gets a gap-free **document number** and its data and template are frozen, so later edits to the order or template never change it. | | Void | Cancelled with a reason. The number is **never reused** and the document stays in history. | Numbers are allocated per branch and document type from the branch’s prefixes (for example `INV`). ## Creating and printing 1. **Generate.** From the order page choose **Print Bill** (or **Print Receipt** once paid), or **Invoice**. 2. **Choose a template.** Use the default, or pick another to render the same data on a different paper size. 3. **Finalize and print.** Finalizing numbers and freezes the document; printing logs a delivery event. Reprints are logged too. Every document keeps a **delivery log** (printed, reprinted, downloaded) and a print count. You can duplicate a document into a new draft. > **Plan notes:** Bills and receipts are on every plan. Invoices (A4) and template selection are available from Basic; custom templates from Pro. ## What is on a document - Restaurant name, branch, logo, address, phone, email, website and tax number. - Order number, type, table, waiter, date and guest count. - Customer name, phone, email and address if known. - Items with quantity, unit price, modifiers and notes; subtotal, discounts, taxes and service charge, delivery and packaging fees, tip and total. - Payments received, amount paid and change. ## Document templates Go to **Settings → Document Templates**. Sofra ships with built-in system templates: | Type | Built-in templates | |---|---| | Receipt / Bill | Standard Receipt (default), Compact Receipt, Detailed Receipt | | Invoice | A4 Invoice | | Kitchen ticket | Standard Kitchen Ticket (80 mm), Compact Kitchen Ticket (58 mm) | | Bar ticket | Bar Ticket | | Takeaway pickup | Takeaway Pickup Ticket | | Delivery | Delivery Packing Slip, Delivery Slip | | Cancel | Cancel Ticket | _Screenshot: Document templates: system templates and a live preview._ ### Choosing a template For each document type pick the template to use for the whole restaurant or for the current branch only. Sofra resolves a template in this order: the one you asked for, the branch’s selection, a branch template, the restaurant’s selection, a restaurant template, and finally the system default. ### Custom templates > **Available on Pro and above:** Creating your own templates requires Pro. **Duplicate** a system template or choose **New Template**, then set the name, document type, **paper size** (58 mm, 80 mm, A5, A4), layout (compact or detailed), alignment, font size, which fields show, the header and footer text (thank-you message, return policy, terms, website, QR code value, promo message) and which order types it applies to. A **live preview** with sample data updates as you edit. Deleting a template never affects finalized documents because they keep their own copy. ### The Sofra mark Customer documents carry a small Sofra mark in a corner. Pro Plus restaurants can turn it off in their template for fully white-labelled documents. ## Permissions Viewing needs `documents:view` (staff without `documents:view_all` see only documents they created or for their own orders). Other actions need `documents:create`, `documents:finalize`, `documents:print`, `documents:reprint`, `documents:void` and `documents:templates_manage`. --- # Printing & the print agent > Silent thermal printing driven by printers, print rules, a print queue and a branch print agent. Source: https://sofra.tablixai.com/docs/printing Sofra prints kitchen, bar, pickup, packing and cancel tickets. **Manual printing** of bills, receipts and kitchen tickets works on every plan. **Automatic printing** (printers, rules, the print agent and the print queue) is available from Pro. > **Available on Pro and above:** Automatic printing needs Pro. Station-based rules also need Prep Workflows. Station-move tickets and course or order-source routing need Pro Plus. ## How it fits together ```text Order action -> Print event -> Print rule (when / what / where) -> Print job (queue) -> Printer | browser Print Queue page OR print agent on the branch PC ``` - **Printers** are the hardware at a branch. - **Print rules** say *when* something prints, *what* document, on *which printer*, and how many copies. **Rules start switched off**; nothing prints automatically until you create and enable one. - **Print jobs** are queued with a frozen copy of the data, so a retry or reprint never depends on the live order and a retry can never print two copies. ## Add a printer Go to **Settings → Printers** and choose **Add Printer**. | Field | Options | |---|---| | Name | For example “Kitchen” or “Bar”. | | Type | Thermal receipt, label, A4/office or virtual (PDF/testing). | | Paper size | 58 mm, 80 mm, A5 or A4. | | Connection | **Browser queue** (a device with the Print Queue page open), **Network printer via print agent** (IP address and port, usually 9100), or **USB / Windows printer via print agent** (the printer’s name on the agent PC). | Use **Test print** to send a sample ticket and confirm the printer is wired up. Network and USB printers report **online/offline** status through their agent. Deleting a printer disables any rules that pointed to it, so nothing queues for a printer that no longer exists. ## Print rules Go to **Settings → Print Rules**. Each rule has: | Part | Details | |---|---| | Name | Your label. | | When this happens (trigger) | Item sent to kitchen, order ready, pickup ready, packing required, item voided, order cancelled, item moved between stations, or manual reprint. | | Filters | Station(s) or station type(s), order type, order source, course numbers, and “items with no station only”. | | Print (document) | Kitchen ticket, bar ticket, prep ticket, pickup ticket, packing slip, delivery slip or cancel ticket. | | Template | A specific template, or the default for that ticket. | | On printer | One of this branch’s printers. | | Copies | 1 to 5. | | Tickets | **One per station** (the whole order if no stations) or **one per order**. | Typical setup: a rule “Kitchen tickets” that prints a kitchen ticket when items are sent, for the Grill station, on the kitchen printer; and a rule “Bar tickets” for drinks on the bar printer. Turn each rule on when ready. If a plan is downgraded the rules are kept but stop firing. ### When each trigger fires | Trigger | Fires when | |---|---| | Item sent | Items are sent to the kitchen (including automatically when an order is confirmed). | | Order ready | The order becomes ready. | | Pickup ready | A takeaway order becomes ready for pickup. | | Packing required | A delivery order becomes ready and needs packing. | | Item voided / Order cancelled | Something already sent is cancelled; a cancel ticket tells the kitchen on paper. | | Item moved | An item passes to another station (Pro Plus). | | Manual reprint | Someone presses Reprint. A reprint always creates a new job. | ## Print queue **Operations → Print Queue** shows recent jobs and their status: queued, printing, printed, failed or cancelled. On a device serving browser-queue printers, choose **Start printing** to let that device pick up and print jobs, and **Pause printing** to stop. From the queue you can **retry** or **cancel** jobs, subject to permission. Claims that are never acknowledged are offered again after a short timeout. ## The print agent To print **silently** on network and USB printers, install the print agent on a PC in the branch (Windows recommended). It polls Sofra over HTTPS, so no inbound ports are needed. ```text Sofra (cloud) <-- HTTPS -- Print Agent (branch PC) -- TCP :9100 / USB --> Thermal printer print rules + queue render ticket -> image -> ESC/POS ``` Tickets are rendered from your template by Edge or Chrome and printed **as an image**, so what comes out matches the on-screen preview exactly, including right-to-left languages such as Urdu and Arabic. 1. **Install prerequisites.** Install Node.js 20 LTS. Microsoft Edge or Chrome must be installed (Edge ships with Windows). 2. **Install the agent.** Copy the `print-agent` folder to the PC, for example `C:\SofraPrintAgent`, and run `npm install`. 3. **Create the agent in Sofra.** Go to **Settings → Printers → Print agents → Add agent**. Copy the configuration shown into `config.json`. The token is displayed **once**; only a hash is stored. You can **rotate** it later or **revoke** it, which stops it working immediately. 4. **Check the connection.** Run `npm run check`. You should see that it connected to Sofra as your agent and probed each printer. 5. **Add your printers.** In Sofra choose **Add Printer**, pick *Network printer via print agent* or *USB / Windows printer via print agent*, select the agent, and press **Test print**. 6. **Run it.** Run `npm start`. To start with the PC, use Task Scheduler (trigger: At startup) or install it as a service with NSSM. 7. **Create print rules.** Add and switch on the rules that decide what prints where. ```bash npm install npm run check # verify the token and probe printers npm start # run the agent ``` ### Agent commands | Command | What it does | |---|---| | `npm start` | Run the agent. | | `npm run check` | Verify the token and connection and probe every printer. | | `npm run once` | Print at most one queued ticket, then exit (good for testing). | | `npm test` | Run the unit and end-to-end tests with a fake printer. | ### config.json | Key | Meaning | |---|---| | apiUrl, tenant, token | Provided by Sofra when you create the agent. | | browserPath | Optional path to Edge or Chrome; auto-detected otherwise. | | pollSeconds / heartbeatSeconds | How often to look for tickets and report status (defaults 2 and 20). | | printers | Optional per-printer overrides keyed by the printer name in Sofra: `dots` (576 for 80 mm, 384 for 58 mm), `cut` (full, partial, none), `feedLines`, `drawer` (open the cash drawer after the ticket), `dither`, `threshold`. | > **Note:** Each agent is bound to **one branch** and can only see and claim jobs for the printers assigned to it. ## Permissions Printing has its own permissions: `printing:view`, `printing:print`, `printing:reprint`, `printing:manage_printers`, `printing:manage_rules`, `printing:view_jobs`, `printing:retry_jobs` and `printing:cancel_jobs`. Managers and branch managers have them all; kitchen staff can view jobs, print and reprint. --- # Staff schedule & attendance > Plan weekly shifts and record clock-in and clock-out. Source: https://sofra.tablixai.com/docs/schedule-attendance Go to **People → Schedule** to plan who works when and to see who actually turned up. > **Available on Pro and above:** Scheduling is available from Pro. ## Shifts - Create a shift for a staff member with a date, start and end time, a position (for example Waiter or Cashier) and notes. - Shift statuses: scheduled, confirmed, completed, absent and cancelled. - The weekly view lists staff against days and shows estimated hours. _Screenshot: The weekly staff schedule._ ## Attendance - Record a **clock-in** and **clock-out** per person per day. Attendance can be linked to a scheduled shift. - Statuses are present, late, absent and early leave. - The schedule shows who has not yet clocked in today. Viewing needs `staff:read`; creating or editing shifts and attendance needs `staff:write`. --- # Inventory > Ingredients, warehouses, stock levels, movements and low-stock alerts. Source: https://sofra.tablixai.com/docs/inventory Inventory tracks the **ingredients** you buy and use, **where** they are stored, **how much** you have and **every movement** in or out. Combined with [recipes](https://sofra.tablixai.com/docs/recipes), it deducts stock automatically when dishes sell. > **Available on Basic and above:** Inventory is available from Basic. _Screenshot: Inventory overview: total items, low stock, and shortcuts._ ## Set up in this order 1. **Create warehouses.** Storage locations in a branch, such as Main Kitchen Store, Cold Room or Bar. Each has a type: main, cold, dry, bar or other. 2. **Create ingredients.** The master list: flour, mozzarella, tomatoes. Each has a name, category, **unit** and description. 3. **Record opening stock.** Add a movement of type *Receive* (or set the level directly) for each ingredient in each warehouse. 4. **Set reorder levels.** On each stock item set the **reorder level** (the low-stock trigger), **max level** and **cost per unit**. 5. **Link recipes.** Connect menu items to ingredients so sales deduct stock. See [Recipes](https://sofra.tablixai.com/docs/recipes). ## Warehouses Go to **Inventory → Warehouses** and add one with a name and type. Warehouses belong to a branch. When a sale deducts stock, Sofra uses the branch’s **main**-type warehouse, or the first active warehouse if none is marked main. _Screenshot: Warehouses for a branch._ ## Ingredients Go to **Inventory → Ingredients** and choose **Add Ingredient**. Units available: kg, g, L, ml, pcs, dozen, box and bag. Ingredients are shared by the whole restaurant; only their quantities are per warehouse. _Screenshot: The ingredient catalog._ ## Stock levels **Inventory → Stock Levels** shows the current quantity of each ingredient in each warehouse, with its unit, reorder level, max level and cost per unit. Items at or below their reorder level are flagged. You can **adjust** a stock item directly (for example after a count), which sets the figures without recording a movement. _Screenshot: Stock levels with low-stock flags._ ## Stock movements **Inventory → Movements** is the full history of stock going in and out. Choose **Record Movement** to add one: pick the warehouse, ingredient, type, quantity, unit, cost per unit (optional) and notes. | Type | Effect on stock | |---|---| | Receive | Adds stock (goods received). | | Transfer in | Adds stock (from another warehouse). | | Adjustment | Adds stock (a correction upwards). | | Count | Adds stock (a counted figure). | | Consume | Removes stock. Created automatically by sales. | | Transfer out | Removes stock (to another warehouse). | | Waste | Removes stock (spoiled or discarded). | Each movement records who made it, when, and a reference (for sales, the order number). Recording a movement updates the stock level at the same time. > **Stock can go below zero:** Automatic deductions are not blocked when stock runs out. A negative level is a signal that a delivery was not recorded. Fix it by recording a Receive movement. ## Low-stock alerts A stock item with a reorder level above zero is a **low-stock alert** when its quantity is at or below that level. Alerts appear on the Inventory overview (Low Stock and Out of Stock counts) and on the dashboard’s inventory alert panel, and can be filtered to a branch. ## Permissions `inventory:read` to view; `inventory:write` to create ingredients, warehouses, movements and recipes and to adjust stock. Cashiers and waiters do not have it by default. --- # Recipes & automatic stock deduction > Link menu items to ingredients so every sale deducts stock and shows its cost. Source: https://sofra.tablixai.com/docs/recipes A **recipe** says which ingredients, and how much of each, go into one menu item. It is what lets Sofra turn a sale into stock movements and an estimated cost. > **Available on Basic and above:** Recipes are part of Inventory, available from Basic. ## Create a recipe 1. **Open Recipes.** Go to **Inventory → Recipes** and choose **Create Recipe**, or open **Recipe** from a menu item. 2. **Pick the menu item.** The dish this recipe produces. 3. **Set the yield.** How many portions the recipe makes (default 1). Quantities are divided by the yield per portion sold. 4. **Add ingredients.** For each line choose the ingredient, quantity and unit. 5. **Save.** The recipe appears on the Recipes page with its estimated cost. _Screenshot: Creating a recipe: menu item, yield and ingredient lines._ ## How deduction works - Stock is deducted when the kitchen marks the order **Ready** (or Ready for pickup), for every item that has an active recipe. - For each ingredient, Sofra adds up quantity × (portions sold ÷ recipe yield) across the order. - It records a **Consume** movement per ingredient with the order number as the reference, and reduces the stock level in the branch’s main warehouse. - Items without a recipe are ignored, so you can adopt recipes gradually. > **Note:** Deduction is based on the recipe at the moment the order becomes ready. Editing a recipe affects future orders only. ## Recipe cost The Recipes page shows the total cost of each recipe as the sum of quantity × the ingredient’s **cost per unit** from its stock item. Keep cost per unit up to date when prices change so the figure stays meaningful. Compare it to the menu item’s selling price and its **cost price** field to understand your margin. --- # Customers > Profiles with addresses, order and booking history, spend and reliability tracking. Source: https://sofra.tablixai.com/docs/customers Go to **People → Customers** to see everyone who has ordered or booked. Customer profiles power quick order entry, delivery addresses and the reservation risk rules. > **Available on Basic and above:** Customers are available from Basic. _Screenshot: The customers list._ ## What a profile holds - Name, phone, email, notes and free-form **tags**. - Multiple **addresses** (Home, Work, Other), each with street, area, city, phone and a default flag. - **Visit count**, **total spend** and **last visit**, kept up to date automatically when an order completes. - Reliability fields: no-show count, cancellation count, a risk level (low, medium, high), whether a deposit is required and whether online booking is restricted. _Screenshot: A customer profile with Orders and Reservations tabs._ ## History tabs Open a customer to see the **Orders** tab (every order with date, table and total) and the **Reservations** tab (every booking with its table and status). ## Adding and removing - Choose **Add Customer** and enter name (required), phone, email, tags and notes. You can also create customers from the POS or by converting a walk-in. - Removing a customer is a **soft delete**: they disappear from lists but their order history is preserved. - Addresses can be added, edited and removed from the profile. ## Who sees which customers With `customers:read_all` (managers, cashiers) you see every customer. With only `customers:read` (waiters) you see the customers on your own orders. `customers:write` is needed to add or edit. ## Reliability and deposits No-shows raise a customer’s risk level, require a deposit for future online bookings and, at five no-shows, restrict them from booking online for a week. See [Reservations](https://sofra.tablixai.com/docs/reservations) for the thresholds. --- # Dashboard & reports > Live KPIs on the dashboard and sales analytics in Reports. Source: https://sofra.tablixai.com/docs/reports-dashboard ## Dashboard The **Dashboard** is the first page after you sign in. It greets you and shows live figures for the **selected branch**: - **Today’s revenue** and the **number of active orders**. - **Occupied tables** out of the total. - **Recent live orders** with status. - **Inventory alert**: ingredients at or below their reorder level. _Screenshot: The dashboard._ > **Preview panels:** The hourly sales chart, the peak-time card and the “AI Recommendations” panel on the dashboard are illustrative samples that show where AI insights will appear. They are not computed from your data yet. See [AI copilot](https://sofra.tablixai.com/docs/ai-copilot). ## Reports > **Available on Pro and above:** Reports and analytics are available from Pro and need `reports:read`. Go to **Management → Reports**. Choose a range of 7, 30 or 90 days. Reports use **completed and paid** orders. | Report | What it shows | |---|---| | Sales summary | Total revenue, total orders and average order value, plus revenue and order count per day. | | Top items | The ten best-selling items by quantity, with revenue. | | Branch comparison | Revenue, orders and average order value per branch, side by side (head office view across all branches). | Reports follow the branch you have selected; without a branch they cover the whole restaurant. ## Usage report in the portal Owners also get a **Usage** tab per restaurant in the portal: consumption against plan limits, orders and revenue for the last 30 days and a daily chart. See [Account & owner portal](https://sofra.tablixai.com/docs/account-portal). --- # Billing & subscription > Subscribe, upgrade, schedule a downgrade, cancel, resume and download invoices. Source: https://sofra.tablixai.com/docs/subscription-billing Your Sofra subscription is per restaurant. Subscription payments are processed by **Paddle**. Manage it from **Management → Billing** inside the restaurant, or from the **Subscription** and **Billing** tabs of the restaurant in the owner portal. Both use the same controls. _Screenshot: The Billing page with plans, usage and the monthly/annual switch._ ## Subscribe to a plan 1. **Open Billing.** You see your current plan, your usage against limits and the plan cards. 2. **Pick a cycle.** Switch between **Monthly** and **Annual** (annual is 10 months’ price for 12). 3. **Choose a plan.** Select Basic, Pro or Pro Plus. A secure Paddle checkout opens. 4. **Pay.** On success the plan activates immediately; Sofra is told by a signed webhook from Paddle. ## Upgrading Choose a higher plan. Sofra shows a **preview** of the prorated charge and then applies the upgrade **immediately**. Your billing cycle stays the same. ## Downgrading - A downgrade is **scheduled for the end of the current period**; you keep the higher plan until then. - It is blocked while your usage exceeds the lower plan’s limits. Sofra tells you which limits (for example “reduce staff and tables”). - You can **keep your subscription** to cancel the scheduled change before it takes effect. ## Cancelling and resuming - **Cancel at period end** keeps access until the end of the period you have paid for, with no refund. - **Resume subscription** removes a scheduled cancellation. - When a paid subscription ends, the restaurant returns to Free limits. Data is never deleted. > **Owner only:** Changing plan, cancelling and resuming are limited to the owner. Staff with `billing:read` can view the subscription, usage and invoices. ## Payment method and invoices - Open the **Paddle customer portal** to update your payment method. - The **invoice history** lists your paid and billed transactions. Download any invoice as a PDF. - Your first payment on a paid plan is refundable within 14 days. Prices exclude VAT, GST or sales tax, which is added at checkout where required. ## Subscription states | State | Effect | |---|---| | Active / trialing | Everything on your plan works. | | Past due | Payment failed. Gated features pause with a “subscription inactive” message until it is resolved. | | Cancelled | The subscription has ended; the restaurant is limited to Free. | --- # AI copilot > The in-app assistant: what it is today and where it is going. Source: https://sofra.tablixai.com/docs/ai-copilot Sofra includes an **AI Restaurant Copilot** drawer, opened from the sparkles button in the app header and from prompts on the dashboard. It is part of TablixAI’s restaurant intelligence roadmap. > **Preview feature:** The copilot in the app is currently a **preview**. Its answers are illustrative examples (demand forecast, staffing, menu margin, inventory). They are not yet computed from your live data, so don’t make decisions from them. ## How to open it - Choose the **AI** button in the header to open the drawer. - Use a suggested prompt such as “Predict weekend demand”, “Optimize Friday staff”, “Analyze menu margins” or “Check inventory waste”, or type your own. _Screenshot: The AI Restaurant Copilot drawer._ ## Where it is going The intended capabilities are demand and ingredient forecasting, staffing suggestions, menu margin analysis, unusual refund or discount alerts and plain-language questions about your numbers. TablixAI also offers a separate restaurant automation layer (AI front desk, marketing, operations and finance agents) that can be set up with the team. See [Support](https://sofra.tablixai.com/docs/support). --- # Permissions reference > Every permission, what it allows, and which built-in roles have it. Source: https://sofra.tablixai.com/docs/permissions-reference Permissions are strings in the form `area:action`. A role is a list of them. “All branches” means the permission applies across the branches the person can access. > **Reading the table:** O = Owner, M = Manager, BM = Branch Manager, C = Cashier, W = Waiter, K = Kitchen. ## Orders | Permission | Allows | Roles | |---|---|---| | orders:read | View orders (own only, without read_all). | O M BM C W K | | orders:read_all | View every order in the branch. | O M BM C K | | orders:write | Create and edit orders, take payment, hold, move, add items. | O M BM C W | | orders:delivery | Create and see delivery-fulfilment orders. | O M BM C | | orders:online | Online, QR and external-channel orders. | O M BM C | | orders:void | Void items and orders, cancel kitchen items, approve cancel requests. | O M BM | | orders:refund | Refund paid orders. | O M BM | | orders:discount | Apply or remove discounts. | O M BM C | | orders:status | Change order and item status. | O M BM C W K | | orders:cancel | Cancel orders. | O M BM | ## Floor, tables and bookings | Permission | Allows | Roles | |---|---|---| | tables:read / read_all | View tables (only your own, or all). | read: O M BM C W · read_all: O M BM C | | tables:write | Create and edit tables, change status, merge tables (managers). | O M BM W (merging and blocking need read_all) | | floor:read / floor:write | View and edit floor areas and the floor plan. | read: all but K · write: O M BM | | reservations:read / read_all / write | View, view all and manage reservations. | read: O M BM C W · read_all: O M BM C · write: O M BM C W | | walk_ins:read / read_all / write | Walk-ins. | As reservations | | waitlist:read / read_all / write | Waitlist. | As reservations | ## Catalog, branch menu and settings | Permission | Allows | Roles | |---|---|---| | menu:read / menu:write | Branch-level menu visibility. | read: all · write: O M BM | | catalog:read | View the global catalog. | O M BM | | catalog:write / catalog:delete | Create, edit and delete menus, categories, items, modifier groups. | O M | | branch_menu:read / write | Assign menus and override items and prices per branch. | O M BM | | settings:read | View taxes, discounts, coupons, service charges, payment methods and prep settings. | O M BM | | settings:write | Change those settings. | O M | ## Kitchen, printing and documents | Permission | Allows | Roles | |---|---|---| | kitchen:view / update | See the kitchen display; act on tickets. | O M BM K | | printing:view | See printers and rules. | O M BM C K | | printing:print / reprint | Print and reprint tickets. | O M BM C W K (reprint: not W) | | printing:manage_printers / manage_rules | Add printers, agents and rules. | O M BM | | printing:view_jobs / retry_jobs / cancel_jobs | See and manage the print queue. | O M BM · K can view and retry | | documents:view / view_all | See bills, receipts, invoices (own, or all). | view: O M BM C W · view_all: O M BM C | | documents:create / finalize / print / reprint | Create, number and print documents. | O M BM C (W: create, finalize, print) | | documents:void | Void a finalized document. | O M BM | | documents:templates_manage | Edit and select templates. | O M BM | ## People and management | Permission | Allows | Roles | |---|---|---| | inventory:read / write | View and manage inventory and recipes. | O M BM | | staff:read / write / delete | View, add and edit, and remove staff; shifts and attendance. | O M · BM read, write | | customers:read / read_all / write | Customers. | read: O M BM C W · read_all: O M BM C · write: O M BM C | | departments:read / write | Departments. | read: O M BM · write: O M | | reports:read | Reports. | O M BM | | billing:read | View subscription, usage and invoices. | O C | > **Note:** Owner-only actions (not controlled by permissions): adding and editing branches, creating and editing roles, changing a staff member’s tenant role, and changing the subscription plan. --- # Status reference > Every status used for orders, items, prep, tables, reservations, walk-ins, waitlist and documents. Source: https://sofra.tablixai.com/docs/status-reference ## Order status | Status | Meaning | |---|---| | Pending | Created, not yet sent. | | Confirmed | Sent to the kitchen. | | Preparing | The kitchen is working on it. | | Ready / Ready for pickup | Food is ready. | | Served | Delivered to the table. | | Billing | Bill requested (dine-in). | | Picked up | Collected (takeaway). | | Assigned / Out for delivery / Delivered | Delivery progress. | | Completed | Finished and fully paid. | | Held | Saved without sending. | | Cancelled / Voided | Cancelled, or voided with a reason. | ## Payment status | Status | Meaning | |---|---| | Unpaid | Nothing paid. | | Partial | Some paid; a balance remains. | | Paid | Settled. | | Overpaid | More than the total was received. | | Refunded | A refund was recorded. | ## Item and prep status | Field | Values | |---|---| | Item status | Pending, preparing, ready, served, cancelled | | Prep status | Not required, pending, in progress, ready, skipped, failed, cancelled | | Priority | Normal, high, urgent | ## Table status Available, reserved, occupied, waiting order, order placed, being served, bill requested, waiting cleaning, cleaning, ready, blocked, out of service. See [Floor areas, tables & floor plan](https://sofra.tablixai.com/docs/floor-tables). ## Reservation, walk-in and waitlist | Record | Statuses | |---|---| | Reservation | Pending, confirmed, arrived, seated, ordering, dining, bill, completed, cancelled, no-show, expired | | Walk-in | Waiting, seated, completed, left, no-show | | Waitlist | Waiting, notified, seated, left, no-show | | Deposit outcome | None, refund due, forfeited, refunded | ## Documents and print jobs | Record | Statuses | |---|---| | Billing document | Draft, finalized, void | | Print job | Queued, printing, printed, failed, cancelled | | Subscription | Active, trialing, past due, cancelled | | Restaurant | Draft, published | --- # FAQ & troubleshooting > Quick answers to common questions and fixes for common problems. Source: https://sofra.tablixai.com/docs/faq ## General ### Does Sofra work for a single restaurant and for chains? Both. Start with one branch and add more on Basic and above. An owner account can also own several separate restaurants. ### How is my data kept separate from other restaurants? Every record belongs to exactly one restaurant and is filtered by it on every request. Staff only reach the branches they have been granted. Pro Plus restaurants can run on a dedicated database. ### How long does setup take? Most restaurants are taking orders within days. The TablixAI team can help import your menu and configure branches, taxes and printers. ## Access and sign-in ### Staff cannot sign in - Check the restaurant is **published**. Draft restaurants only open for the owner. - Staff must sign in on the restaurant’s own address, not the owner portal. - Check the person is active, and use **Forgot password** if needed. - A staff member with no branch access cannot work in any branch; assign them from **Branches → Assign Staff**. ### I cannot use the portal Verify your email first. Until you do, the portal only shows your account and lets you request a new link (once per minute). ### The app says X-Branch-Id is required or I have no access to this branch Pick a branch in the branch selector. If none are listed, ask the owner to give you access to a branch. ## Plans and limits ### A page shows a lock or an upgrade prompt That feature belongs to a higher plan. Check [Plans & limits](https://sofra.tablixai.com/docs/plans-and-limits), then upgrade from **Billing**; upgrades apply immediately. ### I cannot add more staff, items or tables You have reached your plan limit. Existing records are unaffected. Upgrade, or remove unused records. ### I see “subscription inactive” Your last payment failed or your subscription ended. Update your payment method from **Billing** to restore gated features. ### I cannot downgrade Your usage is above the lower plan’s limits. Reduce staff, menu items or tables as indicated, then try again. ## Orders and kitchen ### Items are not appearing on the kitchen screen - Items appear once **sent** (or when the order is confirmed). Check they were sent and are not held for a later course. - Check you have selected the right branch and station tab. - Check the person viewing has `kitchen:view`. ### A discount is refused The percentage exceeds the role’s maximum discount, or the role is allowed none. Ask a manager. ### A coupon is rejected It has expired, has no uses left, is inactive or does not exist. Codes are not case sensitive. ### A table will not become available An order is still open on it. Complete, hold or void the order first. ### Stock is not being deducted The menu item needs an **active recipe**, the branch needs an active **warehouse**, and the order must reach **Ready**. ## Reservations ### A table shows as unavailable It may be blocked, out of service, inside a cleaning buffer, part of a merge, in a closed area or day, outside opening hours, or overlapping another booking. The message names the reason. ### The online booking page says it is unavailable Online booking needs the **Pro** plan and an active subscription. ### A reservation disappeared as “expired” Bookings still pending or confirmed 30 minutes after their start are expired automatically. Mark guests as arrived when they come in. ## Printing ### Tickets are not printing - Confirm your plan includes automatic printing (Pro or above). - Make sure the print rule is **switched on**; new rules start off. - Press **Test print** on the printer. - Run `npm run check` on the print agent PC and confirm it connects and probes the printer; for network printers confirm the IP and port 9100. - Open **Print Queue** to see whether jobs are queued, failed or waiting for a device. - For browser-queue printers, make sure a device has the Print Queue open and **Start printing** pressed. ### The print agent says unauthorized The token was rotated or revoked. Create or rotate the agent in **Settings → Printers** and paste the new token into `config.json`. --- # Support > How to reach the Sofra and TablixAI team. Source: https://sofra.tablixai.com/docs/support We are here to help you get live and stay running. ## Get in touch - Visit [tablixai.com](https://tablixai.com) to contact the TablixAI team. - Pro Plus customers get **priority support**. - Ask us to import your menu or help set up branches, taxes, printers and the print agent. - Ask about TablixAI’s restaurant automation (AI front desk, marketing, operations and finance agents). ## When you contact us Include your restaurant name and address, the branch, what you expected, what happened, the time it occurred and a screenshot. For printing issues add the output of `npm run check`. - [Start free](https://app.sofra.tablixai.com): Create your account and explore on the Free plan. - [Quickstart](https://sofra.tablixai.com/docs/quickstart): Be taking orders in about an hour.