Home / Help Center / pos-app / Settings / Settings
⚙️ Settings

Settings

Settings is where every shop-wide rule lives — how bills are numbered, which taxes apply, what payment methods show up at checkout, who your staff are and what they can touch. It looks like one page, but it is really 19 separate configuration screens reached through tabs down the left side.

📍 Menu path: Settings (single page, 19 tabs via ?tab=... query param)
👤 Who uses it: Varies per tab — see the note on each workflow below. Shop Info, AI Features, Staff/Users, Roles, Staff Permissions and Reset App are Admin-only; Invoice, Payment Methods, Stock Settings, Notifications, Receipt/Print, Online Store, Features and Security are open to Managers (and Cashiers can at least view Security); GST E-Invoice, Tax and Loyalty Points additionally require those plan features to be enabled.

Overview

Settings is organised into tabs, not separate pages — the URL is always /settings with a ?tab= query parameter (for example /settings?tab=invoice), so every tab can be bookmarked or linked to directly.

The tabs are grouped conceptually into five clusters behind the scenes — Setup (Shop Info, Branches, Staff, Security, Data Scope), Billing (Invoice, Invoice Template, Recurring, Receipt, Thermal Themes, GST E-Invoice, Tax), Products (Stock Settings, Purchases, Units), Sales (Loyalty, Customer Groups, Payment Methods, Notifications, Online Store) and Admin (Features, Custom Fields, Terminals, AI Features, Connection, Roles, Staff Permissions, Reset App) — although the sidebar only exposes the 19 tabs most shops need.

A Basic / Advanced mode toggle sits in the page header. Basic mode narrows the left-hand tab list down to the seven tabs a brand-new shop actually needs on day one (Shop Info, Invoice, Tax, Payment Methods, Branches, Staff/Users, Security); Advanced mode shows every tab your role has access to.

Most toggles and text fields save immediately when you click that tab's Save button and take effect on the very next bill or screen — but a few things (changing your interface language, or an Admin editing the Staff Permissions matrix for a role that is currently logged in elsewhere) only apply after that user refreshes the page or logs in again.

Which tabs you personally see is controlled two ways at once: a hard-coded Admin-only lock on the most sensitive tabs (Shop Info, AI Features, Staff/Users, Roles, Staff Permissions, Reset App), and a configurable per-role matrix that the Admin sets up on the Staff Permissions tab for every other tab.

Several tabs only appear at all if the underlying plan feature is switched on for your subscription: GST E-Invoice and Tax need the gst feature, Loyalty Points needs loyalty, and Email Settings needs notifications. GST E-Invoice additionally only shows for shops whose country is set to India.

A "Configuring for" scope selector appears above certain tabs (Invoice, Tax, Payment, Stock Settings, Loyalty, Notifications, Receipt, Online Store and related tabs) when your business has a parent company / sub-company / branch hierarchy — letting an Admin or Manager configure settings for a specific branch or company level instead of only the default one.

Before You Start

Step-by-Step Guide

1 Shop Info — set up your business profile(s)

The Shop Info tab manages one or more business profiles (a parent company and any sub-companies), each with its own logo, GSTIN/tax ID, address and signature.

  1. Pick a profile from the left list (Active/All filter at the top) — a green "Default" star marks the profile new sales default to.
  2. Under Brand Identity, upload a Logo (under 500 KB) and set Business Name*, your country's tax ID (e.g. GSTIN in India, validated live against the official 15-character pattern), Business Type (Sole Proprietorship, Partnership, LLP, Pvt Ltd, etc.), Business Category (Retail, Restaurant, Pharmacy, etc.) and POS Layout (retail / restaurant / pharmacy / grocery / garment / electronics / mobile / bakery / hardware).
  3. Under Contact & Location, fill Phone, Email, Website, Address, State (a dropdown when your country has a fixed state list) and Postal Code.
  4. If your country has a second tax ID (e.g. PAN in India), a Tax & Compliance section appears with live format validation.
  5. Under Signature, upload an image of your authorized signatory's signature — it prints on invoices and PDFs.
  6. Admins can click New to add another business profile (optionally as a sub-company under a parent), Set Default to make a profile the default for new sales, and Deactivate/Reactivate a profile (deactivating the top-level parent shows an extra warning).
  7. A separate Country / Region dropdown at the top of the tab changes the store-wide country, which in turn changes which tax ID labels, states and default tax system show up everywhere else in Settings.
💡 Admin-only tab. Saving a profile also pushes businessName/posLayout back into the store-wide settings record so the invoice and POS layout stay in sync.

2 Invoice — numbering, timezone, date format and printed text

Controls how invoices are numbered and formatted everywhere a bill or PDF is generated.

  1. Set Invoice Prefix (e.g. "INV") and Starting Number — a live preview shows the exact next invoice number (e.g. INV-0001).
  2. Choose Timezone and Date Format (DD/MM/YYYY, MM/DD/YYYY, etc.) — these affect every report, list and printed document app-wide.
  3. Toggle whether the printed bill shows the business Logo, the Tax Breakdown line items, and Customer Details.
  4. Enter free-text Invoice Footer and Terms & Conditions that print at the bottom of every bill, PDF invoice, quotation and delivery challan.
💡 Open to Managers and Admins. Invoice Template selection and the business signature live on the separate Invoice Template tab (reached from the same section in the app, though not a top-level sidebar tab).

3 GST E-Invoice — IRP integration and e-Way Bill

Configures direct submission of invoices to the Government's Invoice Registration Portal (IRP) for GST e-invoicing, and the linked e-Way Bill workflow.

  1. Set your Annual Turnover band — turnover of ₹5 Cr or more makes e-invoicing mandatory (shown with a warning banner); below that it is optional (shown with a success banner).
  2. Toggle Enable E-Invoicing to switch on automatic IRN (Invoice Reference Number) generation on every new sale.
  3. Enter your IRP Client ID, Client Secret, Username and Password (obtained from einvoice1.nic.in) — password/secret fields have a show/hide toggle. GSTIN itself is pulled from the Shop Info tax ID field, not re-entered here.
  4. Toggle Enable e-Way Bill (only available once e-invoicing is on) and, if desired, Auto-prompt for e-Way Bill above a configurable bill-value Threshold (default ₹50,000).
  5. A 5-step visual flow at the top (Setup → Create Sale → Auto IRN → Print/Share → E-Invoice Dashboard) explains how this connects to New Sale and the separate E-Invoice Dashboard page.
💡 featureKey: gst. Also only shown when the shop's country is set to India (isIndia check in Settings.jsx). Only Managers/Admins can edit; everyone can view.

4 Tax — tax system, registration type, and GST rate master

The most complex tab: it sets your country's tax system, your dealer/registration type, and manages the actual GST/CESS rate slabs used everywhere in the app.

  1. Pick a Tax System: Indian GST, European VAT, UK VAT, UAE VAT, Australian GST, Canadian GST/PST/HST, Singapore GST, US Sales Tax, or No Tax System.
  2. Pick your Business Registration Type — for India: Regular Dealer (GSTR-1/GSTR-3B), Composition Scheme (CMP-08/GSTR-4), or Unregistered/Exempt. Choosing Composition reveals a Composition Rate % field (typically 1% traders, 2% manufacturers, 5% restaurants).
  3. For Indian GST, set your registered State (drives CGST+SGST vs IGST splitting) and GST Filing Period (Monthly or Quarterly, only for Regular dealers).
  4. Toggle Tax-Inclusive Pricing (MRP-style, tax already in the shown price) and, for India, Enable CESS for luxury/tobacco goods.
  5. Set the Default Tax Rate applied to new products before you tag them individually.
  6. Under GST Rate Master (Admin-only edit rights), add/edit/deactivate/delete the actual GST % slabs (0, 0.1, 0.25, 1, 1.5, 2, 3, 5, 7.5, 12, 18, 28%) and, if CESS is enabled, CESS rate slabs — each with an optional label. A collapsible reference table shows the standard CGST/SGST/IGST split and example product categories for each slab.
💡 featureKey: gst. GST Rate Master add/edit/delete is Admin-only; everyone with tab access can view rates and the tax system settings. This is the same functional area also reachable via the separate Tax Master and Tenant Tax Config admin screens (TaxMasterTab.jsx / TenantTaxConfigTab.jsx) used for multi-country tax rate management and per-branch tax configuration.

5 Payment Methods — checkout options, UPI, bank details and store wallet

  1. Toggle which payment types appear as buttons at checkout: Cash, Card, UPI, Wallet, Cheque, Credit, Layby (advance booking) and Split payment.
  2. If UPI is enabled, enter your UPI ID — it is used to render a QR code on the printed bill.
  3. Fill Bank Name, Account Number and IFSC Code — these print on bills, quotations and purchase orders so customers can pay via NEFT/IMPS.
  4. Payment gateways (Razorpay, PhonePe, Paytm, Cashfree, etc.) are no longer configured here — a card links out to the separate Integrations page.
  5. Toggle Customer Display (a second screen showing the running bill to the customer at checkout).
  6. Toggle Store Wallet and set a Cashback % so customers automatically earn store credit on every sale, redeemable on future purchases.
💡 Open to Managers and Admins to edit; visible to whoever has tab access.

6 Stock Settings — alerts, valuation, costing method and licenses

  1. Toggle Low Stock Alert and set a Low Stock Threshold quantity — drives the low-stock badge on Products and the Dashboard alerts panel.
  2. Toggle Allow Negative Stock (lets you sell past zero quantity) and Auto Reorder.
  3. Choose a Stock Valuation Method — FIFO, LIFO or Average — used in inventory reports and P&L stock value.
  4. Separately choose a Costing Method (FIFO, LIFO or Weighted Average) — used specifically for Cost of Goods Sold (COGS) on the P&L and inventory valuation reports; an info box explains the difference between the three.
  5. Enter regulatory numbers: Drug License Number and FSSAI License Number — both print on invoice footers for pharmacy/food businesses.
💡 Open to Managers and Admins to edit.

7 Loyalty Points — earn/redeem rates, membership tiers and referrals

Loyalty rewards work in three layers: base points, optional membership tiers with bonus multipliers, and optional referral rewards.

  1. Toggle Enable Loyalty Program — everything else on this tab only appears once this is on.
  2. Set Points earned per ₹ spent, ₹ value per point redeemed and Minimum points to redeem — a live example shows how many points and how much value a ₹1,000 sale would earn.
  3. Toggle Membership Tiers and set lifetime spend Thresholds for Silver/Gold/Platinum, plus an Earn Rate Multiplier for each tier (e.g. Gold customers earn 1.5× points).
  4. Toggle Referral Rewards and set bonus Points for the referrer and Points for the new customer, both awarded automatically on the referred customer's first completed sale.
💡 featureKey: loyalty. Points/tiers/referrals are all reflected live on the customer profile page and applied automatically during New Sale checkout.

8 Notifications — email alerts and on-screen warnings

  1. Toggle Email Notifications and enter a Notification Email address to receive system alerts.
  2. Toggle Low Stock Emails (sent when stock drops below your Low Stock Threshold) and Daily Report Email (a nightly sales summary).
  3. Toggle Show Low Stock Alert Badge (on the Products page) and Show Customer Display (the checkout-facing second screen) — these are display toggles, separate from the email ones above.
💡 Open to Managers and Admins. The actual SMTP server used to send these emails is configured separately on the Email Settings tab.

9 Email Settings — SMTP server and sender identity

This is the mail server BazaarPOS uses to actually send emails — for Scheduled Reports, low-stock alerts, and customer invoice emails.

  1. Fill in SMTP Host (e.g. smtp.gmail.com), SMTP Port (default 587) and toggle Use Secure Connection (TLS/SSL).
  2. Enter SMTP Username and SMTP Password (an app password, not your regular email password, for providers like Gmail).
  3. Set the From Name and From Address shown to recipients on every outgoing email, and a default comma-separated Report Recipients list for Scheduled Reports.
  4. Click Send Test Email to confirm the SMTP configuration actually works before relying on it.
💡 featureKey: notifications. Fields are disabled for non-Managers; only Managers/Admins can edit or send the test email.

10 Receipt / Print — paper size, copies and thermal receipt text

  1. Choose Paper Size — A4, A5, 80mm or 58mm thermal — and how many Copies print per sale (1–5).
  2. Toggle Use Thermal Printer for receipt-style output instead of a full-page invoice.
  3. Set free-text Receipt Header and Receipt Footer that print at the very top and bottom of the thermal receipt.
  4. Design custom thermal layouts on the linked Thermal Print Themes screen: create a theme from a blank slate or a preset, drag-and-drop sections (company details, items table, payment summary) using the Theme Builder, preview it against sample sale data, and mark one theme as the default used by every print.
💡 Open to Managers and Admins. Thermal Print Themes is a richer sub-feature reached from within this tab (not a separate top-level sidebar entry) — it supports multiple named themes with set-default and delete actions.

11 Online Store — digital catalog and WhatsApp

  1. Toggle Enable Digital Catalog — a public, shareable product catalog page is generated at a fixed /catalog URL (copy or open it directly from this tab).
  2. Set a Catalog Tagline and a Banner Image URL (with a live image preview) shown at the top of the public catalog.
  3. Enter your WhatsApp Business Number — generates a wa.me deep link with a "Test" button, and enables sharing invoices directly to customers over WhatsApp from the billing screen.
💡 Open to Managers and Admins to edit.

12 Features — turn app-wide capabilities on or off, per role

A master switchboard for optional app capabilities (GST, Loyalty, Inventory, Reports, Barcode, Purchase Orders, Multi-Payment, Thermal Print, Expense Tracking, Multi-Store and more), grouped by Finance / Customer / Operations / Analytics.

  1. Flip the toggle next to any feature to enable/disable it store-wide — this hides or shows the related sidebar menu items and billing-screen options for everyone.
  2. Click Roles next to a feature to expand a per-role override panel, and individually allow or block that feature for Cashiers and Managers even while it stays on for Admins (Admins are always "Always On" and cannot be blocked).
  3. An override shows as Blocked (red), Allowed (green), or Inherited (grey, meaning it just follows the master toggle).
💡 Master toggle and role overrides both require Manager or Admin rights to change; changes save immediately per feature (no separate Save button).

13 Custom Fields — add extra data fields to Products, Customers, Sales or Invoices

  1. Switch the entity tab at the top: Product, Customer, Sale or Invoice.
  2. Click Add Field and choose a Field Type — Text, Number, Date, Yes/No, Single Select or Multi Select (Select types require newline-separated Options).
  3. Set the Label (auto-generates a machine-readable Key, editable only at creation), an optional Placeholder, Default Value, and whether the field is Required.
  4. Use the table's row actions to Edit, Enable/Disable, or (Admin-only) Delete a field.
💡 Managers can create/edit/toggle fields; only Admins can permanently delete one. New fields immediately appear as extra inputs on the relevant screen (e.g. a new Product custom field shows up on the Product form right away).

14 AI Features — store your own AI provider API keys

  1. Enter an OpenAI API key and/or Claude (Anthropic) API key to use your own account's AI credits for AI-assisted features elsewhere in the app.
  2. Click Save — keys are written to this browser's local storage only.
💡 Admin-only tab. Unlike every other tab, these keys are stored purely client-side in localStorage (key aiIntegrationKeys) — there is no backend save call, so keys do not sync between devices or browsers and are lost if browser data is cleared.

15 Staff / Users — add staff, assign roles and branch access

  1. Click Add User (shows a live count against your plan's user limit, e.g. "3/5") and fill Name, Mobile Number (used as the login ID, with a country-code picker), optional Email, a starting Password, and a Role.
  2. For non-Admin roles, tick each Branch the user should access from the branch-access list, choosing a per-branch role (or "No Access"), then pick their Default Branch to log into automatically.
  3. Use row actions to Edit a user, Reset Password (Admin sets a new password directly), or Deactivate/Activate their account.
  4. A "Login ID" column shows the mobile number staff actually sign in with; a status badge flags accounts that are "Awaiting first login" (must change their password on first sign-in).
💡 Admin-only tab. Creating/editing beyond your plan's user limit is blocked with an alert naming the limit; only accounts with create/edit permission see the corresponding buttons.

16 Security — password, security questions and interface language

  1. Admins can toggle Allow staff to reset their own password with security questions — a business-wide setting (stored on the Business, not the Branch).
  2. Every user (this matters most for the Admin, who has nobody else to reset their password) can set up Your Security Questions: pick 3 different questions from a list of 10 and answer them, so they can self-serve a forgotten-password reset later.
  3. Use Change Password to update your own password (current password, new password, confirm — minimum 6 characters).
  4. A read-only Session Info card shows who you are logged in as and your role.
  5. Pick your Interface Language from a country-aware dropdown of supported languages (11 languages app-wide).
💡 Open to all roles — Cashiers land here by default. The security-questions business-wide toggle is Admin-only.

17 Roles — manage system roles and create custom job titles

BazaarPOS ships with 3 base permission tiers (Admin, Manager, Cashier); this tab lets you rename their badges and, more importantly, create additional named roles (e.g. "Floor Manager", "Senior Cashier") that map onto one of those 3 tiers.

  1. The System Roles section lists the built-in Admin/Manager/Cashier roles with their current user counts — click Edit to change a system role's display label or badge color (its underlying permission tier is locked).
  2. Click Add Custom Role to create a new role: type a Role Name (auto-generates a machine key), pick a Permission Tier it inherits from (Admin/Manager/Cashier), and pick a Badge Color from presets or a custom color picker.
  3. Custom roles show their tier and a delete action (with a confirm step) in the Custom Roles section — you cannot delete a role while staff are still assigned to it.
💡 Admin-only tab. A custom role always behaves exactly like its underlying tier for permission purposes — Roles only changes labels/colors, while the actual page-by-page and tab-by-tab access is configured separately on Staff Permissions.

18 Staff Permissions — fine-grained per-role access matrix

The most powerful tab: two big matrices (one for Settings tabs, one for the entire sidebar menu) where every role gets a permission level for every item.

  1. For the Settings Tabs matrix and the Navigation Menu matrix, pick a permission level per role per row: No Access, Read Only, Create, Edit, Delete, Approve, Export, or Full Control.
  2. Use the Set all… dropdown in a role's column header to apply one permission level to every row at once for that role.
  3. Locked rows (Reset App, Staff Permissions, Roles) always show Admin = Full Control and everyone else = No Access and cannot be changed — a padlock icon marks this section.
  4. Click Save Permissions to apply the whole matrix at once, or Reset to discard unsaved changes and reload the last saved configuration.
💡 Admin-only tab. Changes apply to other logged-in users only after they refresh or re-login — an already-open session does not lose access mid-session.

19 Reset App — wipe transactional data (irreversible)

A destructive, one-way operation for starting a shop fresh — for example after finishing a trial with test data.

  1. Tick which data categories to delete: Sales/Transactions, Ledger entries, Audit Logs, Customers, Products, and/or reset Settings back to defaults — each option shows exactly what it removes.
  2. Type RESET (all caps) into the confirmation box to unlock the delete button.
  3. Click Reset Now — a native browser confirm dialog asks one more time before anything is deleted.
  4. A result summary shows how many records were deleted per category once the operation finishes.
💡 Admin-only tab. This action is permanent and cannot be undone — there is no backup step built into this screen, so export any data you need first via Import/Export or Reports.

Every Field & Button, Explained

Field / ButtonWhat it does
Basic / Advanced mode toggleTop-of-page switch that narrows the left tab list to just 7 onboarding-essential tabs (Basic) or shows every tab your role can access (Advanced); saved per-browser in local storage.
Configuring for (scope selector)Appears above operational tabs when your business has parent/sub-company/branch levels; lets an Admin or Manager point the whole tab at a specific branch or company instead of the default one.
Invoice Prefix / Start NumberControls the text prefix and first number used for auto-generated invoice numbers app-wide, with a live preview of the next number.
Timezone / Date FormatStore-wide timezone and date display format used by every report, list, receipt and printed document.
Tax System dropdownSelects the tax framework (Indian GST, EU/UK/UAE VAT, Australian/Canadian/Singapore GST, US Sales Tax, or none) that governs which fields and calculations appear elsewhere in Tax and on every bill.
Business Registration TypeYour dealer/registration type under the chosen tax system (e.g. Regular vs Composition Scheme in India) — changes which fields and filing periods are relevant.
GST Rate Master tableAdmin-managed list of the actual GST % (and CESS %) slabs offered when tagging products and billing items; supports add, inline edit and delete.
Payment method togglesCash / Card / UPI / Wallet / Cheque / Credit / Layby / Split — each toggle shows or hides that payment button on the checkout screen.
Store Wallet + Cashback %Enables a store-credit wallet per customer and an automatic cashback percentage credited after each completed sale.
Low Stock Alert + ThresholdTurns on low-stock warnings and sets the quantity below which a product is flagged, driving the Products badge and Dashboard alerts.
Stock Valuation / Costing MethodFIFO, LIFO or (Weighted) Average — two related but separate settings: one values on-hand stock for reports, the other calculates cost of goods sold for the P&L.
Loyalty points-per-currency / redeem rateDefines how many points a customer earns per unit spent, how much each point is worth when redeemed, and the minimum points needed to redeem at all.
Membership Tier thresholds & multipliersLifetime spend cut-offs for Silver/Gold/Platinum status, each with its own bonus points-earn multiplier applied automatically at checkout.
SMTP Host / Port / User / PasswordThe outgoing mail server credentials BazaarPOS uses to send scheduled reports, low-stock alerts and customer emails; test with the Send Test Email button before relying on it.
Receipt Paper Size / CopiesChooses A4, A5, 80mm or 58mm output and how many copies print per completed sale.
Digital Catalog toggle + URLPublishes a public product catalog at a fixed /catalog URL that customers can browse without logging in.
WhatsApp Business NumberGenerates a wa.me deep link used both for a "test" button here and for sharing invoices to customers via WhatsApp from the billing screen.
Feature toggle + per-role overrideMaster on/off switch for an app-wide capability (GST, Loyalty, Barcode, Purchase Orders, etc.) plus an optional per-role Allow/Block override on top of it.
Custom Field builderDefines extra data fields (Text/Number/Date/Yes-No/Select/Multi-Select) attachable to Products, Customers, Sales or Invoices, each with its own key, type and required flag.
Branch access matrix (Staff / Users)Per-staff-member list of which branches they can log into, what role they hold at each branch, and which branch they land in by default.
Staff Permissions matrixPer-role, per-item permission level (No Access through Full Control) covering every Settings tab and every sidebar menu item at once; "Set all" bulk-applies one level per role.
Reset App confirmation ("RESET")Type-to-confirm safety gate that must exactly match before the destructive delete button on Reset App becomes clickable.

Tips & Best Practices

Troubleshooting & FAQ

I don't see the Staff / Users tab.
Staff / Users, Shop Info, AI Features, Roles, Staff Permissions and Reset App are permanently Admin-only — no permission setting can expose them to Managers or Cashiers. Log in as an Admin, or ask your Admin to make the change for you.
The GST E-Invoice or Tax tab is empty or missing entirely.
GST E-Invoice and Tax only appear when your plan's "gst" feature is switched on and, for GST E-Invoice specifically, when your Shop Info country is set to India. Check Settings → Features (or your subscription plan) and Settings → Shop Info → Country.
I changed Staff Permissions but a logged-in employee still has the old access.
Permission changes apply the next time that user refreshes the page or logs back in — an already-open session keeps its access until then.
I clicked Reset Now — can I undo it?
No. Reset App permanently deletes the selected data categories with no built-in backup or undo. Always export what you need via Import/Export or Reports first.
Notifications tab shows an email toggle but no emails are being sent.
The Notifications tab only decides which alerts are turned on; the actual mail server is configured separately under Email Settings. Fill in SMTP Host/Port/User/Password there and use Send Test Email to confirm delivery.
A tab I use every day disappeared after switching to Basic mode.
Basic mode intentionally shows only 7 onboarding-essential tabs (Shop Info, Invoice, Tax, Payment Methods, Branches, Staff/Users, Security). Switch back to Advanced mode in the header toggle to see every tab your role can access.
Why does the "Configuring for" dropdown not show up on some tabs?
It only appears on operational tabs (Invoice, Tax, Payment, Stock Settings, Loyalty, Notifications, Receipt, Online Store and related tabs) and only when your business actually has more than one branch or company level set up — a single-branch shop never needs it.
My AI API keys disappeared after switching computers.
AI Features keys are saved only in that browser's local storage, not on the server — they do not sync across devices or browsers and are lost if browser data is cleared.

🧑‍💻 Developer Notes

Source component(s):

  • frontend-app/packages/pos-react-lib/src/pages/Settings.jsx
  • frontend-app/packages/pos-react-lib/src/components/Layout/navItems.jsx (SETTINGS_ITEM.children — the 19-tab menu definition)
  • frontend-app/packages/pos-react-lib/src/pages/settings/BusinessTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/InvoiceTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/InvoiceTemplateTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/EInvoicingTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/TaxTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/TaxMasterTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/TenantTaxConfigTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/PaymentTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/InventoryTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/LoyaltyTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/NotificationsTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/EmailSettingsTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/ReceiptTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/ThermalThemeTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/OnlineStoreTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/FeaturesTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/BillingFeaturesTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/CustomFieldsTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/AIIntegrationTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/UsersTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/SecurityTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/RolesTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/RoleAccessTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/FactoryResetTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/StoresTab.jsx (Branches — reached from Setup group)
  • frontend-app/packages/pos-react-lib/src/pages/settings/TerminalsTab.jsx (registered POS terminals)
  • frontend-app/packages/pos-react-lib/src/pages/settings/ConnectionTab.jsx (backend/data-sync/cloud URLs, LAN certificate setup)
  • frontend-app/packages/pos-react-lib/src/pages/settings/DataScopeTab.jsx (Company/Unit/Branch visibility scope per entity)
  • frontend-app/packages/pos-react-lib/src/pages/settings/CustomerGroupsTab.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/UnitsTab.jsx / UnitsManager.jsx
  • frontend-app/packages/pos-react-lib/src/pages/settings/PurchasesTab.jsx (purchase budget controls)
  • frontend-app/packages/pos-react-lib/src/pages/settings/RecurringInvoiceTab.jsx (wraps RecurringInvoiceListPage)
  • frontend-app/packages/pos-react-lib/src/pages/settings/_shared.jsx (Field/Input/Toggle/SectionCard/SaveButton/Select/ActionButton/StatusBadge/InfoBox primitives shared by every tab)

Backend endpoints used:

  • GET/PUT /settings
  • GET/PUT /settings/:storeId/settings
  • GET /settings/businesses
  • POST /settings/businesses
  • PUT /settings/businesses/:id
  • PUT /settings/businesses/:id/default
  • PATCH /settings/businesses/:id/toggle-active
  • GET/PUT /settings/businesses/:id/settings
  • GET /settings/stores
  • POST /settings/stores
  • PUT /settings/stores/:id
  • GET/PUT /settings/role-access
  • GET /settings/roles
  • POST /settings/roles
  • PUT /settings/roles/:id
  • DELETE /settings/roles/:id
  • GET /settings/users
  • POST /settings/users
  • PUT /settings/users/:id
  • PUT /settings/users/:id/reset-password
  • PUT /settings/change-password
  • GET/POST /settings/:storeId/custom-fields
  • PUT/DELETE /settings/:storeId/custom-fields/:id
  • GET /settings/:storeId/features
  • PUT /settings/:storeId/features/:key
  • GET/POST /settings/gst-rates
  • PUT/DELETE /settings/gst-rates/:id
  • GET /tax-master/countries
  • GET/POST /tax-master/taxes
  • PUT/DELETE /tax-master/taxes/:id
  • POST /tax-master/tenant-taxes/initialize
  • GET /tax-master/tax-groups
  • GET/POST /tax-master/tenant-config
  • GET /settings/accessible-scopes
  • GET /settings/customer-groups
  • GET /settings/units
  • GET /stores/:storeId/thermal-themes
  • POST /stores/:storeId/thermal-themes/seed
  • POST/PUT/DELETE /thermal-themes(/:id)
  • POST /thermal-themes/:id/set-default
  • POST /settings/factory-reset
  • POST /auth/security-questions/setup
  • POST /report-schedules/test-email

Related tables (db-core repositories):

  • StoreSettings
  • Business
  • Store
  • User
  • Role
  • RoleAccessConfig (JSON)
  • CustomField
  • StoreFeature
  • GstRate
  • TaxMasterCountry
  • TaxMasterTax
  • TenantTaxConfiguration
  • TaxGroup
  • ThermalTheme
  • CustomerGroup
  • Unit
  • Terminal

Redux slices:

  • auth (current user, role, selectedStoreId)
  • scopeSlice (setAvailableScopes — parent/sub-company/branch scope selector)
  • taxConfigSlice (setTaxConfig)
  • navAccessSlice (setNavAccess — drives which sidebar items and settings tabs render)
  • licenseSlice (selectLicenseInfo — plan feature gates and user-count limits)

Settings.jsx is a single component that owns nearly all state (settings object, scope, users, businesses, stores, custom fields) and passes it down as props into whichever tab is active — most tabs are dumb forms driven by a shared { settings, set, setToggle, saving, isManager, onSubmit } prop shape from formTabProps. Visible tabs are computed from a hard-coded ADMIN_ONLY_TABS set combined with a dynamic roleAccessConfig fetched from /settings/role-access (configured on the Staff Permissions tab), further filtered by PLAN_FEATURE_TABS (gst/loyalty/notifications) and Basic/Advanced mode. Saving pushes changes through dataSyncEngine.push() so the mobile app picks up store_settings changes without a manual sync.