X
XISSuite
Commerce Operating System
Tenant User Manual · 2026

Running your store, module by module.

A complete guide to operating your XISSuite store — inventory, the register, customers, your online shop, delivery, accounting and administration. Every section explains what a screen is for, how to use it step by step, and the things worth knowing before you click.

1

Getting oriented

Everything you do lives in the back-office at your store address (for example yourstore.xissuite.com). Sign in with the email and password created when the store was opened. The owner account is created at sign-up; everyone else is added as staff.

The sidebar & what you can see

The left sidebar is grouped into sections — Dashboard, Inventory, Point of Sale, Online Orders, Delivery, Accounting and Administration. A link only appears when both of these are true:

  • Your plan includes the module. Inventory, POS, Online Orders, Delivery and Accounting are paid modules. If a whole section is missing, that module isn't on your plan — the owner can switch it on under Billing → Change plan. (Administration always shows.)
  • Your role grants the permission. Within a module, each screen is gated by a permission. Staff see only what their role allows.
Two gates, two different fixes. A missing section = a module not on your plan (billing). A missing screen inside a section = a permission your role lacks (roles). The owner bypasses all permission checks and sees everything.

The Dashboard · requires dashboard.view

Your home screen shows an at-a-glance summary: total Products, Low stock and Expiring counts, Today's sales (count and total), Staff count, your 8 most recent sales, and a Sales-over-time chart (last 14 days and last 12 months). Staff without dashboard.view (for example cashiers) get a plain welcome screen with no figures, so sensitive numbers stay private.

Roles that ship with every store

Four ready-made roles exist from day one. You can edit them, add your own, or assign several to one person.

RoleMade forRoughly can…
AdministratorOwners / managersEverything.
ManagerShop managersRun operations — inventory, purchasing, POS, customers, reports.
CashierTill staffUse the register, see products & customers; no reports or settings.
AccountantBookkeepersBooks, financial reports, tax, journals, and pay suppliers.
Test roles as a non-owner. Because the owner bypasses every permission, a role that's missing a tick looks fine when you test it while signed in as the owner. Verify staff access by signing in as that staff member (or a test account).
2

Inventory & Catalog

Your product catalogue, stock, purchasing and stock reports. Everything here needs the Inventory module on your plan.

Products & variants · Inventory → Products · inventory.view to see, products.manage to edit

The product is everything you sell — price, cost, stock, images, tax and variants. The list has a typo-tolerant search (name, SKU or barcode), a category filter, and quick-filter chips for “⚠ Needs attention” and “No price / out of stock”. Rows carry badges: No sale price, Out of stock, Expired, Expiring.

To add a product:

  1. Products → Add product.
  2. Enter the Name, pick or create a Category, set the Tax rate, and optionally a Reorder level and Expiry date.
  3. Add a cover Image (upload or use the device camera; a built-in editor lets you crop, rotate, tidy the background and watermark) and any gallery images.
  4. In the variants grid, add a row per sellable version. Name up to three option axes (e.g. Size, Colour). Set each variant's SKU, Barcode (use Gen for a unique one), Cost, Price and opening Stock. A simple product just uses one row with no options.
  5. Toggle Track stock, Active and Featured (pins it to the storefront bestsellers) as needed → Save.
FieldNotes
Reorder levelApplies to the default warehouse only. Blank = no reorder flag.
Stock (variant grid)An absolute figure — saving records the difference as an adjustment into the default warehouse. (The Stock Adjustment screen instead takes a +/− amount.)
SKUMust be unique across all products and variants. Reuse one and the system appends -2, -3… Leave blank to auto-generate.
Expiry dateDrives the expiry badge, the dashboard alert and the Expiring Stock report.
Tip. The form quietly auto-saves a local draft as you type, so a tablet refresh won't lose an in-progress edit. A product always keeps at least one variant, and the first variant's price/cost/SKU is what the till and online shop use.

Categories · Inventory → Categories · categories.view / categories.manage

A nestable tree to organise products; filters cascade to sub-categories. Add category → enter a Name and optional Parent → Save. You can also create a category inline while editing a product or a purchase order. Deleting a category doesn't delete its products — they simply become uncategorised.

Suppliers · Inventory → Suppliers · suppliers.manage

Vendor records with Name, Email, Phone and Address, plus an Owed balance (what you owe that vendor). The balance rises automatically when you receive a purchase order. When a supplier is owed money, a Pay link lets you settle it: enter the Amount, choose the cash/bank account to pay from, and an optional reference — this posts the payment to the books. Paying is also open to staff with purchases.pay (e.g. an accountant).

Purchase Orders · Inventory → Purchase Orders · purchases.view / purchases.manage

Order stock from a supplier into a warehouse, then receive it to raise stock on hand.

  1. Purchase Orders → New purchase order.
  2. Choose the Supplier (optional) and Warehouse, set the Order date, add a Note.
  3. Add line items: search a product, set Quantity and Unit cost (pre-filled from the product's cost).
  4. Create purchase order — it's saved as a draft with a reference like PO-XXXXXXXX. No stock moves yet.
  5. When the goods arrive, open the PO → Receive order. Stock on hand goes up, the status becomes received, and the books post Dr Inventory / Cr the supplier's payables.
Receiving is one-way. There's no partial receive and no un-receive — the whole order lands at once and can't be reversed. Split a delivery into separate POs if it arrives in parts.

Warehouses · Inventory → Warehouses · warehouses.manage

Multiple stock locations; stock on hand is tracked per warehouse. Fields: Name, Code, Address, and Set as default. There is always exactly one default (setting a new one clears the old), and the default can't be deleted. Several actions always target the default warehouse — the product form's Reorder level and Stock column, bulk restock, and CSV opening stock. To place stock in another warehouse, use a Stock Adjustment or a PO addressed to it.

Stock levels, adjustments & movements · Inventory → Stock Levels · stock.view / stock.adjust

Stock Levels lists every product×warehouse row with on-hand and reorder level (rows at/below reorder are highlighted). To correct a count, Adjust stock → pick the product and warehouse, enter a +/− quantity (e.g. 10 to add, -5 to remove) and a note. Product Movements is the full ledger of every change — Stock in, Purchase received, Return, Import, Adjustment, Sale, Stock out — filterable by date, category, type and product, with CSV export.

Barcodes & labels

Generate scannable barcodes and print sticker labels.

  • Generate: the Gen button next to a barcode field creates a unique code, or select products in the list and use Generate barcodes (only fills ones without a code). Codes are valid EAN-13 with a “restricted circulation” prefix, so they never clash with real retail barcodes.
  • Print: select products → 🏷 Print labels. Choose a label size, labels per product, and tick Roll printer for thermal printers, then Print. Each label shows the name, barcode, code and price. If a code is too dense to scan at the chosen size, the label is flagged red — pick a bigger size.

Import products from CSV · Inventory → Import Products · products.manage

  1. Import Products → choose the Source (CSV recommended; Shopify or Odoo exports also supported).
  2. Click ⬇ Download CSV template, fill one row per product, and upload it → Import products.

CSV columns: name, sku, barcode, category, cost_price, sale_price, tax_rate, track_stock, opening_stock, is_active, description. Only name is required. Rows are matched by SKU — a match updates, otherwise a new product is created; unknown categories are auto-created; opening_stock books into the default warehouse. The import runs in the background and the page then shows a summary (created / updated / skipped / errors). Re-uploading the same file updates rather than duplicates. Limit 20 MB.

Alerts: out of stock, below reorder, expiring · Inventory · inventory.view

ListShows
Out of StockStock-tracked products with on-hand ≤ 0, with a suggested order quantity and 90-day demand.
Below ReorderProducts still holding stock but at/below their reorder level (empty ones appear under Out of Stock instead).
Expiring StockProducts with an expiry date that has passed or falls within the look-ahead window (default 60 days). Adjustable via a days filter.
Only counts stock you still hold. The expiry badge, dashboard alert and Expiring report only include products with on hand > 0 — something you've sold out of won't appear.

Inventory reports

  • Product Report — per-product stock state plus sales activity and stock value.
  • Product Movements — the full stock ledger (see above).
  • Stock Valuation (stock.valuation) — what your on-hand stock is worth at cost and retail, potential profit and margin, broken down by category.
  • Purchase Report — spend by status, supplier, warehouse and top items, on an order-date or received-date basis.

Every report filters on screen and exports to CSV.

3

Point of Sale

The till, cash drawer, credit sales, refunds and sales reports. Needs the POS module on your plan.

The Register / checkout · Point of Sale → Register · pos.use

The cashier's screen: products on the left, cart and payment on the right, with the current register and a Shift open / No open shift badge up top.

  1. Add items — tap a product tile, type in the search box (name, SKU — typo-tolerant), or scan a barcode (the scan field stays focused, so a keyboard-wedge scanner just works). If a product has several variants, a picker opens.
  2. Adjust — change quantities with the −/+ steppers; add a per-line disc or a whole-cart Cart discount; type a coupon code and Apply.
  3. Select the customer — “Walk-in” by default, or search by name/phone or scan a loyalty card. Picking a customer reveals their wallet balance and points.
  4. Redeem loyalty points or pay from the customer's wallet if available.
  5. Take payment — add one or more tender rows (method + amount); + Add method for split payment, and the = due button fills the remainder.
  6. Complete — the button shows the total, or “X on credit” if a balance is left owing. The receipt opens (and auto-prints if enabled).
Hold a sale. The Hold button parks the current cart and starts a fresh one; Held (n) lists parked sales to resume. Held sales are stored on that device/register.
Two guardrails. Stock-tracked items at zero can't be sold (checkout names them), and a credit/part-paid sale requires a selected customer. Sales are numbered INV-0001, INV-0002

Registers, shifts & the cash drawer · Point of Sale → Registers & Shifts · registers.manage

Define one or more tills (Name, Code, optional Warehouse, Active). To reconcile cash, work in shifts:

  1. Open shift on the register card — enter the opening float.
  2. During the day, use Cash in / Cash out on the Register (amount + reason) for non-sale cash movements.
  3. Close shift — enter the counted cash. The system shows the expected amount (float + cash sales + cash-in − cash-out) so you can see any over/short.
Cash movements need an open shift. Only payments taken as cash count toward the expected drawer — card/transfer/credit don't affect it.

Credit sales & taking payments later · pos.use

Choosing a tender flagged as credit records the amount as owed rather than received (the sale becomes partially paid with a balance due — and needs a customer). Collect later two ways:

  • Against one sale — open the sale → Record payment (amount + method, capped to the balance). Clearing it flips the sale to completed.
  • Across all a customer's sales — on the customer profile → Receive payment. One amount is applied oldest-invoice-first; tick add overpayment to store credit to bank any leftover as wallet credit.

Refunds & returns · open a sale → Return items · sales.refund

  1. Sales → open the sale → in Return items, enter a quantity per line (or Return all).
  2. Process return. Stock is restored, revenue and tax reversed, points unwound, and the refund recorded.
Note. You can't refund a partially-paid sale (settle the balance first). Any part of the original sale paid from a wallet is refunded back as store credit, not cash.

Sales history & receipts · Point of Sale → Sales · sales.view

Browse past sales (filter by status, date, sale number, product or payment method). Open a sale to see items, totals, cashier, customer and payments — and to record a payment or process a return. The Receipt button prints (sized to your 58 mm / 80 mm setting) or re-prints any past sale; the ✉ Email button sends it to the customer.

POS reports & settings

  • Sales Report (sales.reports) — revenue analytics: gross, discounts, tax, net, COGS, gross profit & margin, returns, money collected, and outstanding credit, with breakdowns by payment method, product, cashier, register and day. Set the range to “today” for an end-of-day/Z-report.
  • Payment Summary (sales.reports) — every money movement in a period grouped by source and method, with drill-downs.
  • Returns (sales.view) — every return with its cash / store-credit split.
  • Settings (pos.settings)Register Display (grid columns, receipt width, auto-print), Payment Methods (your tender list; mark one as “credit”), and Cash Reasons (the reasons in the cash in/out dialog).
4

Customers & CRM

Customer records, statements, store-credit wallets and the loyalty programme. Part of the POS module.

Customers · Point of Sale → Customers · customers.view / customers.manage

Create customers with Name, Email, ID/Tax number, Loyalty number (the card scanned at the till, and what enrols them to earn points), Phone, Address and Notes. A customer's profile shows their wallet balance, loyalty points, anything they owe you, wallet & loyalty history, and recent purchases.

Statement — a printable running ledger of invoices and payments with opening/closing balances and optional date range. The closing balance is what the customer currently owes.

Store-credit wallets · Point of Sale → Wallets · wallets.view / customers.manage

Each customer can hold store credit, usable as a tender at the till. Every change is written to a ledger.

  • Top up one customer — profile → Top up wallet (amount, method, note).
  • Withdraw / pay out — profile → Withdraw from wallet (capped to the balance).
  • Bulk top-up — select many customers and credit them at once.
  • Redeem — the “Pay from wallet” control on the Register draws the balance down.

Loyalty points · Point of Sale → Loyalty Program · loyalty.manage

Configure the programme: turn it active, set the earn rate (points per unit of net spend), the redeem value (cash per point) and a minimum points to redeem. Customers with a loyalty number earn points on net (ex-tax) spend; at the till they can redeem points for a discount. You can also manually adjust a customer's points from their profile.

Loyalty is a marketing perk — earning and redeeming post no accounting entries. The programme is off by default for a new store.
5

Online Store

Your public shop, online orders, coupons, subscribers and analytics. Needs the Online Orders module.

Storefront settings · Online Orders → Storefront · storefront.manage

Controls how your public shop looks and who's notified about orders. Fill the cards and Save (blank text fields fall back to sensible defaults):

  • Hero (title, subtitle, image), Brand story, Promo banner (with an on/off toggle), Logo, Testimonials, Social handles, Footer tagline.
  • Featured collections — up to 6 categories highlighted on the home page, each with a subtitle and optional image.
  • Contact — phone and address shown to shoppers.
  • Order-alert recipients — the emails and phone numbers notified when an online order comes in (falls back to the store contact + owner if left blank).
  • Community listing — “List my products in the XISSuite community search.” Opting in lists your active products in the public /community search so new shoppers can find you.

Online Payments · Online Orders → Online Payments · payments.manage

Connect your own Paystack account so customers can pay by card. Tick Enable, paste your public and secret keys (the secret is encrypted and never shown again — leave blank to keep the existing one), and choose whether to require full payment or allow a minimum deposit %. With a gateway configured, checkout offers pay-in-full, deposit and pay-on-delivery; without one, only pay-on-delivery is available.

Orders · Online Orders → Orders · orders.view / orders.manage / orders.fulfill

Online orders flow pending → confirmed → preparing → ready → dispatched → delivered → completed (or cancelled). Payment status is unpaid / partial / paid / refunded.

  • Record payment — method and (if allowed) partial amount.
  • Fulfil — this is where stock is decremented and the books post, then the order is marked completed. An order must be paid in full before it can be fulfilled (unless you don't require full payment, in which case fulfilling creates a receivable).
  • Cancel before completion, or Refund a paid order (a fulfilled order restores stock and reverses the books).
  • Orders Report — gross/net/tax/profit, status & fulfilment mix, shipping and payment breakdowns, top products, refunds — with CSV export.
Revenue is recognised at fulfilment, not when the order is placed — so your books reflect goods actually shipped.

Coupons · Online Orders → Coupons · coupons.manage

One coupon works identically online and at the POS. Set the code, type (percent or fixed), value, optional minimum order, usage limit, expiry and active toggle.

Subscribers & broadcasts · Online Orders → Subscribers · subscribers.view

Your storefront mailing list. Search, export to CSV, or remove subscribers. Broadcast sends a “new arrivals” email featuring your latest products — set a subject, intro and how many products to feature. Tick test to send only to yourself first as a preview.

Meta Pixel & Conversions API · on the Storefront page · storefront.manage

Add your Meta Pixel ID to track shop activity in the browser, and a Conversions API token for the server-side counterpart that reports purchases straight to Meta (so conversions still land when a browser blocks the pixel). Both are needed for the server side to fire; they're de-duplicated into one conversion.

6

Delivery

Track deliveries, manage drivers and set shipping options. Needs the Delivery module.

Deliveries board · Delivery → Deliveries · deliveries.view / deliveries.manage

Track each delivery through pending → assigned → out for delivery → delivered (or failed).

  1. Create a delivery — you can prefill it from an order (recipient, address, fee). Otherwise enter recipient, phone, address, city, zone, fee, schedule, driver and notes. A tracking number is generated automatically.
  2. Assign a driver → status becomes assigned.
  3. Dispatchout for delivery (also pushes the linked order to “dispatched”).
  4. Deliverdelivered (pushes the order to “delivered”). Use Fail with a reason if it couldn't be completed.
Advancing a delivery updates the linked order's status, but it does not fulfil the order's stock and books — do that from the order itself (Online Orders → Orders → Fulfil).

Drivers · Delivery → Drivers · drivers.manage

Your driver roster: Name, Phone, Vehicle, Active. Only active drivers appear in the assign dropdowns.

Shipping methods · Delivery → Shipping Methods · shipping.manage

The options customers pick at checkout. Each row: label, fee, and a pickup flag (pickup carries no fee and needs no address). With none configured, the store falls back to Standard Delivery and Store Pickup.

7

Accounting

Real double-entry books that post themselves from your sales and purchases. Needs the Accounting module.

Chart of Accounts · Accounting → Chart of Accounts · accounting.view / accounts.manage

The accounts every transaction posts against, grouped by type (asset, liability, equity, income, expense). Your store starts with a standard set — Cash (1000), Bank (1010), Accounts Receivable (1200), Inventory (1300), Accounts Payable (2000), Owner Equity (3000), Sales Income (4000), COGS (5000), Operating Expenses (6000). Add one with a unique Code, Name and Type.

Add these two if you take tax or store credit. Automatic postings also use 2100 Tax Payable and 2200 Customer Store Credit, which aren't in the starter set — create them so those entries resolve cleanly. An account can't be deleted once it has any journal activity.

Journal Entries · Accounting → Journal Entries · accounting.view / journals.manage

The ledger — both automatic postings and your own manual adjustments. To post a manual entry: set the date, add at least two lines (each an account with a debit or credit), and Save. Debits must equal credits or it's rejected.

Completing a POS sale posts automatically: Dr Cash / Store Credit / Receivable, Cr Sales Income and Tax, plus Dr COGS / Cr Inventory. Purchases and online orders post their own entries.

If your plan doesn't include Accounting, sales still complete — they just don't create journal entries.

Tax Rates · Accounting → Tax Rates · taxes.manage

Reusable tax percentages: Name, Rate (0–100%), Active. A No Tax (0%) rate is created for you.

Financial Reports · Accounting → Financial Reports · reports.view

ReportWhat it tells youDefault period
Trial BalanceEvery account's opening balance, movement and closing balance — the books' balancing check.This month
Profit & LossIncome vs expenses and net profit/loss.Year to date
Balance SheetAssets = Liabilities + Equity as of a date.Today
Accounts ReceivableWho owes you, aged Current / 31-60 / 61-90 / 90+.Live
Account StatementLedger detail for one chosen account with a running balance.This month

Every report exports to CSV.

8

Administration

Staff, roles, store preferences and device security. Always available (no module needed).

Staff · Administration → Staff · users.view / users.manage

The people who can sign into your back office. Create → name, email, password, and tick one or more roles. When editing, leave the password blank to keep it, and untick Active to disable sign-in.

The owner can't be de-roled or deleted, and you can't delete your own account.

Roles & permissions · Administration → Roles · roles.view / roles.manage

Bundle permissions into named roles. Create → give it a name and description, then tick permissions grouped by module. The four system roles (Administrator, Manager, Cashier, Accountant) can be edited but not deleted.

If a new feature is blocked for staff. When the platform adds a brand-new permission, existing stores don't get it until an admin runs the permission sync — until then a non-owner can be blocked from the new feature while the owner (who bypasses permissions) sees it working. Ask support to run tenants:sync-permissions if a new capability is missing for staff.

Preferences · Administration → Preferences · users.manage

SettingWhat it does
TimezoneSets local time across the app (e.g. Africa/Lagos).
Only approved devices may sign inRestricts staff (not the owner) to admin-approved devices; new devices appear under Administration → Devices. Turning it on approves the browser you're using now, so you don't lock yourself out.
Gemini API keyOne Google Gemini key powering both the AI image tools and smart search, billed to your own Google account. Stored encrypted; leave blank to keep, or tick “remove” to clear.
Smart product searchTurns on semantic search (needs the Gemini key). Enabling it starts indexing your catalogue right away.
Your store's app name and icon are set centrally and aren't editable here. To style your public shop, use Online Orders → Storefront instead.
9

AI Features

Two tools powered by the one Gemini key you set in Preferences.

AI Product Studio · inside a product's edit form · products.manage + Gemini key

Turn one photo into a full set of product shots. Open a product for editing, scroll to ✨ AI image tools, pick an operation and click — each result is saved to the product's gallery:

  • Plain background — remove/replace the backdrop (choose a colour).
  • Recolour — change the product's colour, keeping shape and lighting.
  • Add angle view — generate a Side / Back / ¾ / Top-down shot.
  • Lifestyle / model shot — show the product in use or worn by a model.
The panel only appears when editing an existing product and stays disabled until the Gemini key is set in Preferences. It needs a usable cover image to work from.

Smart (semantic) search · enable in Preferences · users.manage + Gemini key

Finds products by meaning, not just spelling — “notebook” can match “laptop”, and it tolerates typos. Enable it in Preferences (with a Gemini key set); your catalogue is indexed within about 15 minutes and search keeps working meanwhile. It powers the product search box across the app.

10

Billing & Domains

Owner only — these two screens are visible only to the store owner.

Billing · Administration → Billing

Shows your subscription status (active, on trial with days left, or past due), your plan, monthly amount and anything due now. Pay with Paystack settles it and saves the card for automatic monthly renewals (these routes stay reachable even if the store is suspended, so you can always pay to reactivate).

Change plan lists the public plans and the modules each includes. Switching applies modules immediately (the sidebar changes at once) but the new rate is charged at your next renewal — no charge today.

Domains · Administration → Domains

Buy a custom domain and point it at your store without leaving the app.

  1. Search for an available domain.
  2. Register — fill the contact details (years, name, address, country, phone, email); the price shows in the platform currency.
  3. Checkout via Paystack — on success the domain is registered and pointed at your store (DNS can take a little while to propagate).

Each domain then has a control panel to edit DNS records (A, AAAA, CNAME, TXT, MX) and toggle auto-renew. Your store keeps working on yourstore.xissuite.com regardless.

11

Permissions Appendix

A quick reference for building roles. Grant these on Administration → Roles. Remember: owners bypass all of them, and each module also needs the matching subscription.

AreaPermissionGrants
Dashboarddashboard.viewSee dashboard figures & charts
Inventoryinventory.viewView products, movements, alert lists, labels
products.manageAdd/edit products, bulk actions, CSV import, barcodes, AI images
categories.view / categories.manageView / manage categories
stock.view / stock.adjust / stock.valuationView stock / adjust stock / valuation report
suppliers.manage / warehouses.manageManage suppliers / warehouses
purchases.view / purchases.manage / purchases.payView / create-receive POs / pay suppliers
Point of Salepos.useUse the register, checkout, cash in/out, record payments
sales.view / sales.reportsView sales & returns / revenue reports
sales.refundProcess returns & refunds
customers.view / customers.manageView customers / manage customers, wallets, loyalty
wallets.view / loyalty.manageWallets overview / loyalty programme settings
registers.manage / pos.settingsRegisters & shifts / POS settings
Online Ordersstorefront.manage / payments.manageStorefront content / Paystack settings
orders.view / orders.manage / orders.fulfillView / take payment & status / fulfil, cancel, refund
coupons.manageCoupons (also used at POS)
subscribers.viewSubscribers & broadcasts
Deliverydeliveries.view / deliveries.manage / drivers.manage / shipping.manageDeliveries / drivers / shipping methods
Accountingaccounting.view / accounts.manage / journals.manageView books / chart of accounts / manual journals
taxes.manage / reports.viewTax rates / financial reports
Administrationusers.view / users.manage / roles.view / roles.manageStaff / roles & preferences & devices
Owner-onlyBilling DomainsNo permission — restricted to the store owner