Tenant Owner Manual — SanadiqCloud

Product version: 1.0.0+1
Last updated: 2026-08-03 Audience: Tenant Owners (organization administrators with full access)


A. Introduction

What is SanadiqCloud?

SanadiqCloud is a cloud-based business management platform. It helps you organize your products, track inventory across warehouses, manage your team, handle billing, and monitor every activity in your organization — all from one place.

Who is this guide for?

This guide is for Tenant Owners — users who own or have been granted full administrative access to an organization (called a tenant) on SanadiqCloud. As a Tenant Owner, you have unrestricted access to all features: product catalog, inventory, billing, team management, audit logs, settings, and more.

If you are a team member (Employee), see the Employee Manual.

Signing in

  1. Open SanadiqCloud in your browser or on your device.
  2. Click Sign In.
  3. Enter your email and password, or click Sign in with Google to use your Google account.
  4. If it is your first time on a new device, check your email for a one-time verification code and enter it to complete sign-in.
  5. After signing in, you will land on your workspace. If you belong to multiple organizations, you will be prompted to pick one.

Tip: If you forgot your password, click Forgot password on the sign-in screen, enter the email verification code you receive, then set your new password.


B. Your Workspace

Creating an organization

The Create Organization wizard has three steps:

  1. Organization details — Name, URL slug, country (stored in description metadata), and organization type (Enterprise vs SME / Startup).
  2. Language — Choose your preferred app language (English or Arabic).
  3. Review & confirm — Check your entries and tap Create Organization.

On success the app creates the tenant, sets it as current, and returns to the shell (pop(true)). You are the Tenant Owner. There is no automatic Plans Catalog or Stripe checkout after create — open Billing → Plans when you are ready.

Choosing a plan (separate from create)

  1. Go to side rail Billing → Plans (or Billing → Subscription).
  2. Browse plans and tap Subscribe / pay via Stripe Checkout.
  3. Already subscribed? Use Adjust under Billing instead of a second checkout.

Payment

SanadiqCloud uses Stripe for payment processing. Card details are handled by Stripe — SanadiqCloud never stores full card numbers. Checkout opens when you subscribe or adjust from Billing.

Organization settings

  1. Go to Settings → Organizations (list / detail / form).
  2. Edit name, description, website, logo, and active status (tenant:update). Slug is immutable after create.
  3. There is no country or contact-email field on the tenant entity; organization detail does not expose an internal UUID in the merchant UI.
  4. Regional defaults, feature toggles, and limits: Settings → General (tenant:settings:*).
  5. App language / theme / about / sign-out: Settings hub body only (no Preferences route).

Inviting team members

  1. Open side rail TeamInvites (or Members → Invite User).
  2. On the invites page, fill the inline form: email, first name, last name, and one tenant role.
  3. Tap Send invitation.

The invitee opens the email link (/accept-invitation?token=…), sets a password, then signs in. There is no personal-message field on the invite form.

Roles

Roles control what a team member can see and do. SanadiqCloud comes with built-in roles such as:

Role Permissions
Tenant Owner Full access. Protected — cannot be removed/demoted via normal member actions.
Manager Broad operational read/write (products, inventory, billing as configured).
Employee Typically narrower / read-oriented access unless expanded by custom roles.
Custom roles You define name, description, and permissions on Team > Roles.

To create a custom role:

  1. Go to Team > Roles (/settings/users-roles).
  2. Tap Create.
  3. Enter name and optional description; save.
  4. Open the role detail and set permissions in the permission editor.
  5. Save.

To assign a role to an existing member:

  1. Go to Team > Members.
  2. Use Assign on the row or open detail → Assign role.
  3. Select roles on the assign page and submit.

C. Dashboard

The dashboard is your home screen. It shows a summary of your organization's key metrics at a glance.

The shell uses a side navigation rail on every screen size. On compact widths the rail shows icons only; on desktop it expands to show labels.

KPIs (Key Performance Indicators)

Your dashboard displays a grid of metric cards, including:

  • Active members — Active / total team members.
  • Products — Products in your catalog.
  • Low stock — Items below reorder / min levels (dashboard projection).
  • Expiring soon — Stock approaching expiry (live inventory, ~30 days).
  • Pending requisitions — Open requisition pipeline count.
  • Transactions (MTD) — Inventory movements this month.
  • In-transit transfers — Open transfers.
  • Storage used — Media storage vs plan.
  • Subscription status — Plan / subscription health.

A Business section may also show inventory value, sales / COGS / gross profit MTD, and a monthly trend.

Each card shows a value and label. Tapping navigates only when your role allows that module; cards still appear with dashboard:read.

Quick actions

From the dashboard you can:

  • Navigate via the side navigation rail.
  • Open a related section from a KPI card when permitted (for example, Inventory from Low stock).

There is no separate quick-action shortcut strip and no Export report on this page.


D. Product Catalog

Adding products

  1. Go to Product Catalog from the side navigation rail.
  2. Products → Add Product (list / hub app bar) opens the product form (catalog shell only). Add SKUs afterward from product detail → Items.
  3. For product + first SKUs (+ optional gallery) in one submit, use the Product Setup Wizard from the hub hero / empty CTA or the roadmap intro wizard (not the list Add button).
  4. Wizard / form product fields typically include: - Name (required) - Product Type — Physical, digital, or service - Status — Active, Inactive, or Discontinued - Description and Short Description - Brand, Category, Manufacturer — select existing or create when permitted - Product Image — optional primary catalog image
  5. SKU, barcode, price, UoM, and dimensions are entered on Items (wizard Items step or item form).

Tip: Use the Product Setup Wizard for the first SKUs and variation matrix in one atomic flow. Manage ongoing brands, categories, manufacturers, and UoM from their list screens.

Brands

  1. Go to Product Catalog > Brands.
  2. Tap Add Brand.
  3. Enter the brand name and description.
  4. Optionally upload a brand logo.
  5. Tap Save.

To edit or delete a brand, open it from the list.

Categories

  1. Go to Product Catalog > Categories.
  2. Tap Add Category.
  3. Enter the category name and description (parent category when applicable).
  4. Tap Save.

Categories help you organize products (e.g., "Electronics", "Clothing", "Food & Beverages").

Variations

Variations let you define options that differentiate items within a product (e.g., size, color, material). Options can be added or changed later.

  1. Go to Product Catalog > Variations (or a category’s variations list).
  2. Tap Add Variation, then manage options for that variation.
  3. On a product item detail page, use the Variants panel to attach options to the SKU (or set them in the setup wizard Items step).

Items

An item is a SKU under a product. Each variant line has its own SKU, barcode, price, UoM, dimensions, variation options, and images.

  1. Open a product and go to the Items section (or open item detail from the items list).
  2. Tap Add Item (or create items in the setup wizard).
  3. Enter: - SKU and optional Barcode - Price - Unit of Measure, Weight, and Dimensions (optional) - After save, manage Variants and Images on the form or the unified item detail page
  4. From item detail, tap Create inventory item to stock that catalog line in inventory (requires inventory permission).

Items are what you track inventory against. When you receive stock, it is assigned to a specific product item.


E. Media Library

Library and upload

  1. Side rail Media (/media) — search + type chips; grid on wide / list on phone.
  2. Upload opens /media/upload (media:create): type, optional alt/description/tags, file picker.
  3. Open a file for detail, public URL, delete (media:delete).

Quota warnings appear on the Merchant Dashboard (and as upload errors), not as a library progress bar. There is no post-upload metadata editor.

Using media in products

Attach images from product / product-item Images panels (and brand flows) as those features provide — the Media hub remains the shared library.


E2. Sales

Use the side rail Sales area to:

  1. Manage Customers.
  2. Create a Sale as draft, confirm it (stock decreases on confirm), then generate an invoice.
  3. Review Sales invoices.

Voiding a sale does not restore stock. Quotas / POS / quotes screens are not part of the current MVP. See Sales Overview.


F. Inventory Management

Hierarchy (quick reminder)

Location (site address) → Warehouse (facility) → Warehouse zones + Stock pool → Items / bins

Warehouses

A warehouse is a facility linked to a Location (site address). You can have multiple warehouses.

Creating a warehouse:

  1. Open the Inventory warehouse hub (or Warehouses).
  2. Tap Add warehouse.
  3. Enter name, type, status, and select the parent Location.
  4. Tap Save.

Warehouse detail is configuration (edit, stock pools, Add zone, barcode) — not document shortcuts. Full zone module: Inventory → Warehouse zones (/inventory/zones). See Warehouse Zones.

Locations (addresses)

Locations are site addresses under Inventory > Locations — not bins.

  1. Go to Inventory > Locations.
  2. Tap Add Location.
  3. Enter address / contact / map fields as needed.
  4. Tap Save.

Physical Locations (bins)

Physical locations are bins/shelves under a stock pool. Optional warehouse zone picker (warehouse_zone_id), free-text zone label, and bin type preset (standard, pallet, shelf, floor, cold) live on this form.

  1. Go to Inventory > Physical Locations.
  2. Tap Add Physical Location.
  3. Select the stock pool; set warehouse zone / bin type / aisle-rack-shelf-bin, capacity, and code as needed.
  4. Tap Save.

Stock

Inventory > Stock lists stock pools. Open a pool for its inventory items.

Stock item detail typically includes:

  • Quantities (on hand, reserved, available, incoming)
  • Stock levels (min/max, reorder)
  • Tracking (batch/lot/serial, expiry, placard barcode)
  • Commerce (unit cost, currency, supplier)
  • Allocations across bins
  • Ledger / activity

Barcode scanner: from stock or search, scan to open the matching stock or product item.

Item placard: from stock item detail, open Placard for a printable PL-… label / PDF.

Lot / serial tracking: set on create (Setup or item form). Blank batch/lot auto-generate; serial never auto-generates.

Adjustments

Stock adjustments correct inventory counts when physical counts differ from system records.

  1. Go to Inventory > Adjustments, or item Operations → Create adjustment (pool + SKU locked).
  2. Choose type: count types use counted on-hand; damage / expiry / issue use units to remove. Optional bin per line.
  3. Submit, then approve (stock changes on approve).

An adjustment creates an audit trail showing who made the change and why.

Transfers

Transfers move stock between stock pools. Same-pool bin moves use item bin transfer; same-pool inventory issue uses Pick Lists (source bin only — no destination bin).

  1. Go to Inventory > Transfers, pool Operations, or item Operations (item locked; choose source/destination bins).
  2. Select source and destination pools.
  3. Add lines (item, bins, qty) and save (pending).

Statuses: pending → approved → in_transit → completed (or cancelled).

Requisitions

Requisitions are inbound replenishment into a pool (optional supplier). Approve raises incoming; accept posts a receipt (on-hand up). Not internal consumption.

  1. Go to Inventory > Requisitions, or item Operations (item locked).
  2. Choose pool, optional supplier, lines and quantities.
  3. Submit → approve → start processing → accept.

Statuses: draftawaiting_approvalapprovedprocessingaccepted (or rejected / cancelled).

Transactions

The Transactions Ledger records every stock movement in your organization — adjustments, transfers, requisition fulfillments, and manual entries.

  1. Go to Inventory > Transactions.
  2. View the complete list of transactions with type, date, items, and user.
  3. Tap any transaction to see full details.
  4. Filter by type (receipt, issue, adjustment, transfer) and reference (pick_list, bin_transfer, requisition, …).

Item Ledger

The Item Ledger shows the complete history of a single inventory item — every transaction that changed its quantity, cost, or location.

  1. Go to Inventory > Stock and open a stock item.
  2. Tap View Ledger.
  3. Review the chronological list of movements with quantities, running balances, and reasons.

Suppliers

Manage the companies you purchase stock from.

  1. Go to Inventory > Suppliers.
  2. Tap Add Supplier.
  3. Enter: - Name (required) - Contact person, email, phone. - Address. - Payment terms.
  4. Tap Save.

Link suppliers to requisitions and stock items for full traceability.

Setup

Inventory > Setup stocks one catalog SKU into an existing (or inline-created) warehouse and stock pool, with optional initial bin.

  1. Go to Inventory > Setup.
  2. Complete Storage → Catalog item → Tracking and quantity → Review and create.
  3. Tap Finish to create the inventory item and open its detail.

Create warehouses, site locations, and bins from their own screens when you need master data beyond a single SKU stock-in.


G. Billing & Subscription

Hub

  1. Side rail Billing → hub tiles (Subscription, Plans, Invoices, Usage).
  2. Subscription shows plan/status/seats/months; Plans quote months/employees/storage → Pay via Stripe Checkout.
  3. Already subscribed → Adjust (/billing/subscription/adjust) instead of a second checkout.
  4. Invoices: filter, detail, Pay unpaid via Checkout (PDF URLs are not currently produced by the billing API).
  5. Usage: period metrics for the active subscription.

There is no Payments page, Elements card form, cancel-subscription page, or Billing Statistics page in the current app. See Billing overview.


H. Notifications

Inbox

  1. Open the app-bar bell (not a side-rail tab) → Inbox.
  2. Search + All/Read/Unread/Archived; mark all read; overflow → Preferences / Devices.
  3. Tap a row for detail (read/unread, archive, delete, optional related link).

Preferences / devices

Channel toggles and language from the API; register/remove push devices. No notification:* AppPermissions gating — available to signed-in users.


I. Audit Logs

What is tracked

The organization audit trail records significant actions for your tenant. Each entry can include action, actor, target (entity type/id), occurred time, and optional before/after / IP / user agent.

Typical areas: catalog, inventory operations, team/roles, settings, billing-related events, media, and auth-related events when stored for the tenant.

Viewing and filtering

  1. Open side rail Audit (/audit/logs).
  2. Use Search, Action (CREATE/UPDATE/DELETE/…), and Date range.
  3. Open a row for full detail (changes + technical JSON).
  4. Pagination is previous/next (about 20 rows per page).

There is no actor autocomplete, target-id-only field, or filter URL bookmarking in the current UI.

Exporting:

  1. Requires audit:export:create.
  2. Tap Export → confirm → share a CSV of the currently loaded rows (not a full server dump; not JSON from the UI).

Audit logs are read-only in the app.

See Audit overview and Audit logs.


J. Team (Members, Invites, Roles)

Members

  1. Go to Team > Members.
  2. View members with name, email, role, and Active / Inactive status.
  3. Tap a member for detail (membership metadata, active switch, remove).
  4. Use Assign role for the full assign page — not a dialog.
  5. Pending invitees live under Invites, not as a “Pending” member status.

Invites

See Invites: inline form (email, first/last name, one role); Resend / Revoke on pending rows.

Custom roles

See Section B (Roles) and Custom Roles.

Assignments

  1. Team > MembersAssign (or detail → Assign role).
  2. Select roles and submit.
  3. Effective permissions = union of assigned roles.

Owner membership is protected from demotion/removal.


K. Settings

Profile

Your profile is reached from the avatar menu in the top app bar, not from the Settings hub.

  1. Tap your avatar in the app bar and choose Profile.
  2. Update your: - Display name. - Email address (changing this may require verification). - Profile picture. - Preferred language (English or Arabic).
  3. Tap Save.

Changing your password:

  1. Open Profile from the avatar menu.
  2. Tap Change Password.
  3. Enter your current password and the new password.
  4. Confirm and save.

Organization

  1. Go to Settings → Organizations.
  2. Manage identity on the org form: name, description, website, logo, active (tenant:update). Slug cannot be changed after create.
  3. For timezone / currency / feature toggles / limits, open Settings → General (tenant:settings:update).

Permission: Org CRUD uses tenant:read|create|update|delete. tenant:settings:* is for General only.

Language and theme

  1. Open the Settings hub (/settings).
  2. Use the App preferences card on the hub — language (English / العربية), theme, about, and sign-out.
  3. There is no separate Preferences route.

Language preference on the hub is per-user. Tenant default language for General settings is separate.

Subscription summary

  1. Open Settings → Subscription for a read-only snapshot, or the hub subscription card.
  2. Manage plans and invoices from Billing.

Need help? Contact your SanadiqCloud support representative or email support@sanadiq.com.