Dashboard
The CloudPOS dashboards for sales executives, company admins and suppliers, every card and graph, the data behind it and the permissions that show or hide it.
The dashboard is the first screen a company admin sees after login. Sales executives open it from the Dashboard menu item. It shows sales, money in cash and bank, customers, products, ZATCA status and team activity for the chosen period.
You need the permission menu.dashboard.main.access to see the Dashboard menu item.
Which dashboard you get
The app picks the dashboard by your role.
Role | Dashboard | Title on screen |
|---|---|---|
| Sales executive dashboard | Sales Executive Dashboard |
| Supplier dashboard | Supplier Dashboard |
Every other role (for example | Company admin dashboard | company dashboard |
Only company_admin lands on the dashboard straight after login. Other roles land on their work screen (Billing, Restaurant, Attender or Kitchen Master) and open the dashboard from the menu.
Choosing the period
- Find the period selector at the top right, next to the date.
- Pick Today, This Week, This Month or This Year.
- The dashboard reloads every period-based card.
The starting period comes from the company setting DASHBOARD_DEFAULT_PERIOD (today, week, month or year). If the setting is missing, the dashboard starts on Today.
How the dates are worked out:
Period | Start date | End date |
|---|---|---|
Today | today | today |
This Week | 7 days ago | today |
This Month | first day of this month | today |
This Year | 1 January this year | today |
The sales executive dashboard
This is what a sales executive such as salesexecutiv2 at store "متجر النجمة Store" sees. The header says Welcome, salesexecutiv2! (or Welcome back! if the name is not loaded).

*Sales Executive Dashboard: failed ZATCA banner, sales overview and company account overview*
The sections, from top to bottom:
Failed Zatca Invoice banner
A red banner titled Failed Zatca Invoice with the subtitle Tap to review and resend. and a count.
- It shows only when ZATCA Phase 2 is on (
ZATCA_PHASE_2) and the count is above 0. - It shows only if you have the invoice permission
menu.transactions.invoice.access. - Tap it to open Transactions → Invoice, where you can resend failed invoices.
- In the demo the banner showed 323.
The count is the number of invoices with ZATCA status failed (GET /api/v1/invoice/list-invoices?zatca_status=failed). The banner loads its own count. If the first try fails, it retries once after 5 seconds.
Sales Overview
Six cards for the chosen period:
Card | What it shows | Demo (Today) |
|---|---|---|
Count | number of sales in the period | 2 |
Amount | value of sales in the period, with currency | SAR 410 |
Customers | customers who bought in the period | 1 |
Products | total products in the catalogue | 4874 |
Revenue | all-time sales value | SAR 1,866,557.25 |
Orders | all-time order count | 4651 |
These come from GET /api/v1/dashboard. The response has total_sales.today, .week, .month and .year, each with total_sales, total_customers and total_amount, plus all-time count and total, and total_products.
Company Account Overview

*Dashboard: company account overview and activity overview cards*
Cards for Bank Account (money received into bank), Cash Account (cash received), Total Revenue, Total Customers and Total Orders.
Data: GET /api/v1/dashboard/company-overview?start_date=&end_date=.
Activity Overview
Small cards: Catalog Products, Products Added Today, Products Added This Week, Products Added This Month, New Orders, New Customers. Same data source as the account overview (products.*, orders.new_orders, customers.new_customers).
ZATCA Overview and Your Account Overview

*Dashboard: ZATCA overview for invoices and vouchers, and your own cash/bank overview*
ZATCA Overview has two groups, Invoice ZATCA and Voucher ZATCA. Each has four cards:
Card | Meaning |
|---|---|
Successfully sent | accepted by ZATCA |
Not sent | waiting to be submitted |
Failed | needs attention; resend from the invoice or voucher list |
Warning | accepted with warnings; review required |
In the demo, Not sent showed 3 invoices. This section shows only when ZATCA Phase 2 is on. Use the refresh icon (Refresh ZATCA overview) to reload it. Data: GET /api/v1/dashboard/zatca-overview for the chosen period.
Your Account Overview shows four cards: Cash Received, Cash Sent, Bank Received and Bank Sent.
Your Sales Performance and customers

*Dashboard: your sales performance, your customers (debit, credit, VVIP) and product overview*
Your Sales Performance: Today's Sales, This Week, This Month and Total Sales.
Customers: Total Customers, Debit Customers (customers who owe money), Credit Customers (customers with balance in their favour) and Crucial Customers (VVIP clients). Data: GET /api/v1/dashboard/customer-stats?period=&start_date=&end_date=.
Product Overview and Category Overview

*Dashboard: product breakdown (inactive, sellable, purchasable, taxable) and category overview*
Product Overview: Total Products, Active Products, Low Stock, Total Stock Qty, Inactive Products, Sellable Products, Purchasable Products, Taxable Products, Non-Taxable Products, Products In Stock.
Category Overview: total, sellable, purchasable, taxable and non-taxable categories.
Data: GET /api/v1/dashboard/products-stats.
Works Team, Sales Graph, Orders and Customers

*Dashboard: works team, hourly sales graph and orders & customers graph*
- Works Team: the team members returned with the dashboard data (name, email, phone).
- Sales Graph: sales over time. It has its own selector: Today, This Week, This Month. Data:
GET /api/v1/dashboard/executive-sales-graph?period=. - Orders & Customers: monthly orders and new customers for the current year. Data:
GET /api/v1/dashboard/orders-graph?year=andGET /api/v1/dashboard/customers-graph?year=. - Sales by Channel: sales split by POS, Web and Kiosk. Data:
GET /api/v1/dashboard/sales-stats. - Sales Executive Overview: Total Executives and Sales per Executive graph. Data:
GET /api/v1/dashboard/executives-overview?start_date=&end_date=.
Extra widgets
At the bottom, each with its own refresh button (Refresh widget):
Widget | Cards or columns | Endpoint |
|---|---|---|
Orders Summary | Orders Today, Average Order Amount |
|
Latest Orders | Order ID, Date, Customer, Status, Total |
|
Customer Transactions Summary | Total Customers, Total Credit, Total Debit, Balance |
|
Revenue Stats | Total On Order, Credit Collected, Credit Sales, Total In Bank, Total In Cash |
|
Suppliers Graph | supplier activity graph |
|
If a widget fails, it shows Could not load this widget. The rest of the dashboard keeps working.
The company admin dashboard
The admin dashboard uses the same building blocks in this order:
- Failed Zatca Invoice banner.
- Sales Overview cards (Count, Amount, Customers, Products, Revenue, Orders).
- Company Account Overview: Bank Accounts (Total Bank Balance), Cash Accounts (Total Cash Balance), Total Revenue (Overall Revenue), Total Customers (Active Customers), Total Orders (Completed Orders).
- ZATCA Overview.
- Product Overview: Total Products, Active Products (Currently Selling), Low Stock (Needs Attention), Total Stock Qty (Overall Inventory), Sellable Products (Ready for Sale).
- Customer Overview: All Customers, Debit Customers (Pending Payments), Credit Customers (Balance Available), Crucial Customers (VVIP Clients), New Customers (Added Today).
- Sales Executive Overview: Total Executives, Total Sales and a sales trend.
- Sales graphs and the extra widgets.
- Works Team.
The supplier dashboard
Title Supplier Dashboard. It shows:
- Supplier Overview: Total Suppliers and New Suppliers (
dashboard/suppliers-overview). - Supplier Purchase Graph (
dashboard/suppliers-purchase-graph). - Supplier Transactions Graph (
dashboard/supplier-transactions-graph). - Supplier Credit/Balance Graph (
dashboard/supplier-credit-balance). - The Suppliers Graph widget.
Widget permissions
Every card checks a permission before it shows. Nothing restricted appears until the role list has loaded. If you cannot see a card, ask the admin to tick it in Admin Panel → Roles → Dashboard Widgets.
There are two forms:
- Whole widget:
dashboard.widgets.<widget>.access - One card:
dashboard.widgets.<widget>.<field>.access
Widget | Whole-widget permission | Card permissions used by the app |
|---|---|---|
Company overview |
|
|
Products stats |
|
|
Customer stats |
|
|
Executives overview |
|
|
ZATCA overview |
|
|
Orders widget |
|
|
Customer transactions summary |
|
|
Suppliers overview |
|
|
Latest orders |
| – |
Orders graph |
| – |
Customers graph |
| – |
Executive sales graph |
| – |
Sales stats |
| – |
Revenue stats |
| – |
Suppliers graph |
| – |
Suppliers purchase graph |
| – |
Supplier transactions graph |
| – |
Supplier credit balance |
| – |
A section is hidden completely when you have none of its card permissions. The backend also defines dashboard.widgets.section.access as the parent entry of these widget permissions.
How it works
- Figures are server-side. The dashboard shows what the server returns for the active store and your sign-in. Offline sales that have not synced yet (see Sales → Confirmed Orders) are not counted until they reach the server.
- Reload on period change. Changing the period always refetches; cached figures are not reused, so the numbers match the selected period.
- Timeouts. Each call waits up to 15 seconds. A failed call leaves its section empty or shows No data available; the other sections still load.
- Currency. Money cards use the company
CURRENCYsetting (SAR in the demo). - ZATCA sections depend on
ZATCA_PHASE_2. With Phase 2 off, the banner and the ZATCA overview are hidden.