Customers, orders, invoices, returns, and how they connect to POS
Sales Management covers everything after the register: customer records, order history, invoicing, and returns. Most day-to-day selling happens in Point of Sale; this area is for review, follow-up, and formal documents.
Open the Sales section from the sidebar. Each page respects your role permissions (typically sales.view).
Central customer directory with contact details, credit terms, and linked activity.
Search and filter customers; open a detail drawer for full profile
View related orders, invoices, and returns from the customer record
Create and edit customers; quick-add from dashboard shortcuts
Supports walk-in and account customers used at POS
Tip: Use consistent phone/email fields — POS customer lookup relies on them
Sales Orders
/sales/orderssales.view
List of completed and in-progress sales with status, totals, and warehouse context.
Date-range filtering aligned with the global calendar on list pages
Order detail: line items, payments, discounts, taxes, and staff attribution
Status updates where your workflow allows (e.g. fulfilment states)
Print or export-friendly views for receipts and summaries
Invoices
/sales/invoicessales.view
Formal invoices separate from POS tickets — draft, send, track payment status.
Create invoices from scratch or from existing orders
Statuses: Draft, Sent, Paid, Overdue, Cancelled
Line-level products, tax, and discounts
Record payments against open invoices
Returns
/sales/returnssales.view
Post-sale returns and refunds with stock restoration rules.
Link returns to original sale or order when possible
Reason codes and notes for audit
Refund method tracking (cash, card, store credit)
Inventory impact reflected in stock transactions
Payments (roadmap)
/sales/paymentssales.view
Reserved route for a dedicated payments ledger; the live UI is still a placeholder — use Invoices and POS payment flows today.
Route exists in the app shell for future AR/collections work
Record customer payments today via Sales → Invoices or POS checkout
Common workflows
Typical flow: POS sale → order record
1Ring up the sale at /pos and complete payment
2Order appears under Sales Orders with session and warehouse metadata
3Issue an invoice later from /sales/invoices if the customer needs a formal bill
Desktop offline
On the desktop app, recently synced orders and customers remain readable offline; creating invoices may queue until connectivity returns.
Purchases Management
Suppliers, purchase orders, goods receipt, and supplier bills
Purchases connects suppliers to inbound stock. Create a purchase order (PO), receive goods against it, then record supplier bills for accounts payable.
Stock levels and inventory flow charts on the Stock page react when receipts are posted.
console.tallyhubgh.com/purchases
swipe →
Goods receipt · GRN-1184
Against PO-2026-0331 · Adom Wholesale
Search
Match billReceive
Supplier
Purchase order
Goods receipt · GRN-1184
Stock up
Supplier bill
Payment
Line
Ordered
Received
Unit cost
Batch
Expiry
Rice 5kg — Perfumed
120
120
78.00
B-4421
—
Milo Tin 400g
60
60
31.00
B-4422
Mar 2027
Ideal Milk 380g
80
72
7.40
B-4423
Nov 2026
Key Soap 700g
200
200
5.20
—
—
Goods value
GH₵ 14,132
before landed cost
Freight allocated
GH₵ 480
into product cost
Short received
8 units
Ideal Milk 380g
Base route:
/purchases
Permission:
purchases.view
Pages in this module
Suppliers
/purchases/supplierssuppliers.view
Vendor master data — contacts, terms, and performance context.
Add and edit suppliers with address and tax details
Supplier-scoped filters on PO and bill lists
Link suppliers to default products where configured
Purchase Orders
/purchases/orderspurchases.view
Authoring and tracking POs from draft through received/cancelled.
Multi-line POs with variant-level quantities and costs
Status pipeline: Pending, Approved, Sent, Acknowledged, Partially received, Received, Cancelled
Warehouse-scoped POs; appears in Stock page supply pulse when open
Quick reorder shortcuts from low-stock items on /inventory/stock
Goods Receipt
/purchases/receiptspurchases.view
Record physical receipt of goods and increase on-hand stock.
Receive against an existing PO or ad-hoc receipt
Partial receipts update PO line received quantities
Posts stock transactions and updates stock_items automatically
Batch/expiry capture when products use lot tracking
Supplier Bills
/purchases/billspurchases.bills
Accounts payable — supplier invoices matched to POs or standalone.
Bill lifecycle and payment recording
Reference PO or receipt for three-way match style workflows
Outstanding balance visibility for finance roles
Desktop offline
Desktop offline: PO list and stats can load from SQLite; creating or receiving may enqueue for sync when online.
Inventory Management
Stock levels, movements, adjustments, transfers, counts, and locations
Inventory is the source of truth for on-hand quantity per warehouse. Every sale, receipt, adjustment, transfer, and count writes to the stock transaction ledger.
Use Stock Levels for operational overview; use Transactions for audit; use Adjustments and Add Stock for corrections.
console.tallyhubgh.com/inventory/stock
swipe →
Stock levels
Accra Main · live quantities
Search
TransferAdjust
Stock value
GH₵ 214,860
+3.1%vs last
Units on hand
18,402
+1.7%vs last
Low stock
7
+2vs last
In transit
3 transfers
+1vs last
Item
Location
On hand
Reserved
Reorder at
Status
Rice 5kg — Perfumed
Accra Main
58
6
20
Healthy
Sugar 1kg
Accra Main
7
0
25
Reorder
Milo Tin 400g
Accra Main
44
2
15
Healthy
Ideal Milk 380g
Kumasi
9
1
20
Low
Key Soap 700g
Warehouse
612
40
100
Healthy
Recent stock movements
+120Goods receipt · GRN-118407:42
−3POS sale · POS-2026-00481309:15
−48Transfer to Kumasi11:02
+2Refund returned to stock12:38
Base route:
/inventory
Permission:
inventory.view
Pages in this module
Stock Levels
/inventory/stockinventory.view
Warehouse-scoped roster of SKUs with health status, value, and analytics strip.
Roster tabs: All, Healthy, Low stock, Out of stock with server-side pagination
Supply pulse: in/out flow chart (7-day navigator), pending PO pipeline
Panorama breakdown across warehouses (plan-gated advanced analytics)
Product drawer: timeline of recent movements, quick adjust, reorder panel
Desktop offline create via local SQLite + sync queue
Transfers
/inventory/transfersinventory.transfer
Move stock between warehouses with in-transit tracking.
Source and destination warehouses with line-level quantities
Transfer out / transfer in transaction pair
Status tracking until fully received
Stock Counts
/inventory/countsinventory.count
Physical stocktake sessions with variance posting.
Count sheets by warehouse and product selection
Record counted qty vs system qty
Post variances as adjustment transactions
Locations
/inventory/locationstenants.settings
Warehouses and stores — also reachable from Settings → Locations.
Warehouse vs retail location types
Default warehouse for POS and stock views
Product–warehouse assignments for catalog scoping
Common workflows
Add stock for a new variant
1Create the product in Catalog → Products (optional initial stock at create)
2On Stock Levels, click Add Stock in the header
3Pick the variant line (includes catalog-only SKUs with zero on hand)
4Submit an INCREASE adjustment — on-hand updates after processing
Desktop offline
Tauri desktop app keeps stock_items and stock_transactions locally; quick adjust and Add Stock work offline and sync when connectivity returns.
Catalog Management
Products, categories, brands, variants, and price lists
Catalog is your merchandise master data. Products hold marketing fields; variants hold SKU, barcode, and price; stock lives per warehouse under Inventory.
POS and sales screens always resolve to a variant ID.
console.tallyhubgh.com/catalog/products
swipe →
Products
1,284 variants across 3 locations
Search
ImportAdd product
AllDrinksProvisionsLow stockUnpublishedExport
Product
SKU
Category
Cost
Sell
Margin
Status
Rice 5kg — Perfumed
RCE-5K
Provisions
78.00
96.00
18.8%
Live
Milo Tin 400g
MLO-400
Drinks
31.00
38.50
19.5%
Live
Voltic 750ml
VLT-750
Drinks
3.10
4.00
22.5%
Live
Key Soap 700g
KEY-700
Household
5.20
6.50
20.0%
Live
Ideal Milk 380g
IDL-380
Provisions
7.40
9.00
17.8%
Low
Indomie Carton
IND-CTN
Provisions
34.50
42.00
17.9%
Draft
Products
612
Variants
1,284
Published online
348
Base route:
/catalog
Permission:
products.view
Pages in this module
Products
/catalog/productsproducts.view
Primary product workspace with grid/list, filters, and rich create/edit drawers.
Multi-variant products with images, category, brand, and tax flags
Track stock toggle; optional opening stock on create
Warehouse toolbar filter scopes visible products
Bulk actions where permissions allow
Desktop offline: categories/brands from SQLite; create queues locally
Categories
/catalog/categoriesproducts.view
Hierarchical category tree for navigation and reporting.
Parent/child categories with drag reorder
Active/inactive flag
Used in POS category sidebar and product filters
Brands
/catalog/brandsproducts.view
Brand directory with logo and optional website.
Link brands to products for filtering and labels
Offline read on desktop when API unavailable
Variants
/catalog/variantsproducts.view
Flat or grouped variant list with per-warehouse stock health summary.
SKU, barcode, price, cost, and attribute JSON
Stock health badges: in stock / low / out
Flat export-style list for pickers (e.g. Add Stock drawer online)
Price Lists
/catalog/pricingproducts.update
Location- or segment-specific pricing rules.
Override base variant price per context
Bulk price update tools
Requires products.update permission
Desktop offline
Product and variant rows sync to SQLite on desktop; edits enqueue to the sync worker.
Expenses
Track operating expenses and review expense transactions
Expenses capture money out of the business outside of inventory purchases — rent, utilities, salaries, and other overheads. Totals feed the dashboard performance summary alongside sales.
console.tallyhubgh.com/expenses
swipe →
Expenses
August 2026 · paid from cash and bank
Search
LedgerAdd expense
Spent this month
GH₵ 9,240
+2.8%vs last
Budget left
GH₵ 2,760
−18%vs last
Unpaid
GH₵ 1,150
−GH₵ 400vs last
Expense
Category
Date
Account
Amount
Status
Shop rent — August
Rent
01 Aug
GCB current
GH₵ 3,500.00
Paid
ECG prepaid top-up
Utilities
03 Aug
Till cash
GH₵ 620.00
Paid
Delivery fuel
Logistics
05 Aug
Till cash
GH₵ 410.00
Paid
Freight — Adom Wholesale
Landed cost
07 Aug
MoMo float
GH₵ 480.00
Capitalised
Casual labour
Wages
08 Aug
—
GH₵ 1,150.00
Unpaid
Where the money went
Last 6 months
Base route:
/expenses
Permission:
expenses.view
Pages in this module
Expenses
/expensesexpenses.view
Main expense register with categories and approval-style list views.
Create expenses from dashboard quick action (?openAdd=1)
Category and type classification
Date filtering with shared calendar component
Attachment notes and reference numbers where enabled
Expense Transactions
/expenses/transactionsexpenses.view
Ledger-style view of expense-related movements.
Cross-cut view for accountants
Export and search
Expense Types & Categories
/expenses/typesexpenses.view
Supporting masters for classifying spend (/expenses/types, /expenses/categories).
Configure reusable types
Organize spending for P&L style reports
Notifications
In-app alerts, filters, and the header notification bell
Notifications keep your team informed about stock, sales, billing, security, and system events. The bell in the dashboard header shows a preview; the full inbox lives at /notifications.
Requires notifications.view (enforced by dashboard route guards).
Base route:
/notifications
Permission:
notifications.view
Pages in this module
Notifications inbox
/notificationsnotifications.view
Full-page feed with stats, filters, sort, detail drawer, and deep links.
Stats row: Unread, Critical, Today, Total
Filters: All, Unread, and by type (Inventory, Sales, Billing, Security, System)
Sort: newest, oldest, or by severity
Mark one read, mark all read, dismiss, open linked route (?id= for drawer)
Categories include low stock, out of stock, expiry, orders, payments due/overdue, billing, security
Pending return approvals can be actioned from the drawer when payload allows
Tip: Deep link: /notifications?id= opens the detail drawer on load
Header preview
/
Bell dropdown in the dashboard layout lists recent items without leaving your current page.
Unread badge count
Mark all read from dropdown
View all → /notifications
Marketplace & Store
Public marketplace browse and your organization storefront listings
The marketplace lets buyers discover products published by organizations on the platform. Store Management is where your tenant curates which catalog items appear publicly and how the storefront looks.
These routes use the marketplace layout (distinct from the main dashboard chrome). Sidebar entries may be disabled in some builds — routes remain available when you have products.view.
console.tallyhubgh.com/store
swipe →
Online store
mensah-stores.tallyhubgh.com · live
Search
PromotePublish
Mensah StoresFeatured
Rice 5kg — Perfumed
GH₵ 96
Milo Tin 400g
GH₵ 38.50
Indomie Carton
GH₵ 42
Key Soap 700g
GH₵ 6.50
Voltic 750ml
GH₵ 4
Sugar 1kg
GH₵ 18
Store orders
ORD-8841New
MoMo · paidGH₵ 184.00
ORD-8838Confirmed
Cash on deliveryGH₵ 96.00
ORD-8834Fulfilled
MoMo · paidGH₵ 412.50
Where shoppers find you
TallyHubGh web marketplace
Shopper mobile app
Your store QR code
Base route:
/marketplace
Permission:
products.view
Pages in this module
Marketplace browse
/marketplaceproducts.view
Public catalog discovery with search, filters, and featured products.
Manage your organization's marketplace listings and store profile stats.
Listing grid with add/edit listing drawer
Store profile card (name, accent color, slug)
Links to marketplace browse and store settings
Stats cards for published vs draft listings
Store settings
/store/settingsproducts.view
Branding and identity for your public storefront.
Store name and URL slug (/marketplace/store/)
Accent color and description
Logo / banner fields where configured
Public store page
/store/{slug}products.view
Customer-facing storefront for your slug (tenant name derived slug when configured).
Organization-scoped product showcase
Shares catalog data with internal products
AI, Support & Customer Display
AI assistant, support chat, second screen, and customer payment QR
Beyond module pages, the dashboard shell exposes tools from the header and title bar: AI insights, human support chat, a customer-facing display, and hosted payment QR for MoMo/card flows.
Pages in this module
AI Assistant
/
Natural-language queries and saved SQL snippets (plan / role gated).
Opened from header sparkles control or Tools menu (Cmd/Ctrl+Shift+A on desktop)
Single AIChatDrawer hosted in layouts/dashboard.vue
Home dashboard AI Insight card uses the same assistant stack
Storekeepers may hide AI on POS routes only
Custom Support
/
In-app ChatWidget for TallyHubGh support conversations.
Title bar and Help → Custom Support
Desktop tray Tools menu entry
Customer display
/customer-display
Second-screen experience for shoppers: idle branding, live cart, checkout QR.
Open from POS toolbar when enabled
States: idle, active cart mirror, remote checkout QR split
Uses customer-display layout (fullscreen)
Idle content configurable from organization settings
Public pay link
/pay
Hosted payment page customers open from QR (no dashboard login).
Public route — validates payment session from POS
Shows error state when link expired
Completes MoMo / card flows initiated at register
Reports & Analytics
Analytics hub, sales reports, and inventory reports
Reports turn operational data into decisions. Analytics (plan-gated) provides cross-module KPIs; Sales and Inventory reports drill into specific domains with export-friendly tables.
Many report and analytics surfaces require the subscription feature advancedAnalytics — locked modules show an upgrade gate instead of charts.
console.tallyhubgh.com/reports
swipe →
Profit & loss
01 Jul – 31 Jul 2026 · compared with June
Search
CompareExport
Revenue
GH₵ 296,480+12%
Retail counter
184,120+9%
Wholesale dispatch
98,410+21%
Online store
13,950+31%
Cost of goods sold
GH₵ 203,320+10%
Gross profit
GH₵ 93,160+18%
Rent and utilities
24,600+2%
Wages
18,4000%
Logistics
9,120+6%
Net profit
GH₵ 41,040+26%
Revenue vs expenses
Report centre
Sales by cashier
Stock ageing by location
Payment mix by hour
Base route:
/reports
Permission:
reports.view
Pages in this module
Analytics
/reports/analyticsreports.view
Cross-business analytics dashboard with charts and comparisons.
Period selectors: daily, weekly, monthly, yearly
Comparison to previous period
Tied to subscription advancedAnalytics feature gate on home dashboard
Sales Reports
/reports/salesreports.sales
Revenue, tenders, and product/customer breakdowns.
Summary and detail modes
Date range and warehouse filters
Export for spreadsheets
Inventory Reports
/reports/inventoryreports.inventory
Stock valuation, movement pages, and ageing views.
Movement ledger report aligned with /inventory/transactions
Low stock and valuation snapshots
Desktop offline reads from SQLite where implemented
Settings
Profile, team, organization, billing, security, and preferences
Settings configure how your organization runs on TallyHubGh. Access via the user menu or /settings routes. Visibility depends on owner role and fine-grained permissions.
console.tallyhubgh.com/settings
swipe →
Team & roles
8 members · 3 locations
Search
PermissionsInvite
Member
Role
Locations
Status
Ama Boateng
Owner
All locations
Active
Kwesi Antwi
Manager
Accra Main
Active
Efua Dede
Cashier
Accra Main
Active
Yaw Mensah
Storekeeper
Warehouse
Active
Nana Osei
Accountant
All locations
Invited
Cashier permissions
Create sales
Give discounts
Refund without PIN
See profit reports
Security
Two-factor authentication
Session lock with PIN
Manager PIN for voids
Trusted device list
Base route:
/settings
Pages in this module
Profile
/settings/profile
Your user name, email, avatar, and password changes.
Update contact info
Change password
Locale preferences
Locations
/settings/locationstenants.settings
Organization warehouses — same data as Inventory → Locations.
Create warehouses and retail stores
Set codes and addresses
Control which products appear per warehouse
Tax & Discount
/settings/tax-discounttaxes.view
Tax rates and discount presets applied at POS and invoicing.
Tax groups
Default discount rules
Receipt display options
Team
/settings/teamusers.invite
Invite users and assign roles with permission labels.
Role templates (Owner, Manager, Cashier, etc.)
Per-membership permission overrides
Pending invitations
Organization
/settings/organizationsettings.billing
Business legal profile, currency, and regional defaults.
Business name and branding
Currency symbol and decimal rules
Fiscal year settings where applicable
Billing
/settings/billingsettings.billing
Subscription plan, payment method, and invoices from TallyHubGh.
Plan upgrade/downgrade
Paystack checkout flow
Entitlement sync to desktop SQLite for offline enforcement
Security
/settings/security
Session lock PIN/password for shared devices.
Optional auto-lock timer
Desktop offline PIN verification against local bcrypt hash
Reconcile with server when back online
Preferences
/settings/preferences
Theme, keyboard shortcuts reference, and UI defaults.
30+ DaisyUI themes (light/dark)
Keyboard shortcut cheat sheet
Default landing module preferences
POS Settings
/settings/postenants.settings
Receipt header/footer, printer targets, and POS behavior flags.
Receipt customization
Hardware printer integration on desktop
Desktop App & Offline Sync
Tauri desktop install, SQLite cache, and sync queue behavior
TallyHubGh ships as a web dashboard and as a Tauri desktop app (Windows/macOS). The desktop build keeps a local SQLite copy of your tenant data so you can sell and adjust stock when the internet drops.
Changes queue in sync_queue and push automatically when you are back online — use Tools → Sync Now or Ctrl/Cmd+R.
Pages in this module
What works offline
/
Read/write capabilities without network on desktop.
POS: complete sales, payments, cash movements, session close
Catalog: browse/create products; categories & brands from SQLite
Download from tallyhubgh.com — Tauri bundles migrations on first launch
Help menu links to this documentation
Auto-update channel when enabled in release builds
Desktop app notes
Run migrations once per install; do not edit SQLite manually unless debugging — use TablePlus only in dev environments.
Platform operations (not in tenant app)
What platform operators use vs what your store team sees
The tenant dashboard documented here does not include a /admin UI for everyday store users. Platform-wide tenant/user/subscription administration is handled by separate operator tooling and server APIs (under server/api/admin on the backend).
If you are a store owner or cashier, use Settings → Billing and Settings → Team instead — not a global admin console.
Pages in this module
Tenant admin = Settings
/settings
Organization owners manage their own subscription, team, and locations inside the app.
Billing → /settings/billing
Team invites → /settings/team
Organization profile → /settings/organization
Backend admin APIs
/
Engineering-only endpoints for migrations and platform maintenance.
Not exposed as a sidebar module in the retail dashboard
Used by TallyHubGh operators during support incidents
Web & mobile experience
Responsive web, desktop app, and PWA — not a separate native store app
TallyHubGh is built as a responsive Nuxt web app. There is no separate native iOS/Android module in this dashboard repository — mobile staff typically use the browser or install the site as a PWA, while stores that need offline use the Tauri desktop build.
Pages in this module
Mobile browser / PWA
/
Full dashboard and POS in a mobile viewport.
Responsive layouts; POS optimized for touch
Add to Home Screen for app-like shortcut
Requires connectivity unless using desktop app
Desktop app (recommended offline)
/
See Desktop & Offline module for SQLite sync.
Windows/macOS Tauri shell
Same routes as web with native menu and tray
Barcode & hardware
/pos
Camera scanning and printers depend on device/browser.
POS barcode input via scanner wedge or camera where supported
Receipt printing via Settings → POS on desktop
Desktop app notes
Do not expect Settings → Mobile App device pairing in the current dashboard — that flow is not implemented in settings pages.