Skip to content
ARRANTO

Fatoora Lite Pro — Feature Documentation

Plain-language explanation of every module: what it is, why a user needs it, what problem it solves, how it works. This directly answers the "I don't understand what this is for" questions.


Authentication & Accounts

What: Login, sign up, sessions. Why: A commercial SaaS needs each business to have its own secure account. Problem solved: Today there's a login form but no way to create an account, and a fake user (Khalid) is pre-seeded. How: /register creates a company + owner; /login authenticates; sessions are signed JWT cookies; passwords are hashed.

Onboarding

What: A guided first-run wizard. Why: Issuing a legal e-invoice in Saudi Arabia requires ZATCA credentials; a new user can't just start. Problem solved: Right now the app drops you into a dashboard for a pre-made company. Instead, the first thing a new user does is create their company and connect it to ZATCA. How: company profile → ZATCA connection (CSID) → branches → finish → dashboard.

Dashboard

What: The command center after onboarding. Why: Owners want an at-a-glance compliance posture. Problem solved: Current KPIs are stuck "Loading…" and numbers are fake. How: real KPIs (VAT collected, invoices, clearance success, certificate health), live clearance feed, and 7-day volume — all from the tenant's data.

Invoices

What: Create and manage e-invoices (standard B2B + simplified B2C). Why: This is the core job. Problem solved: "Loading invoices…" forever; create doesn't really submit. How: a form builds line items, the engine computes VAT, the document is signed and (per type) cleared or reported to ZATCA, and a QR-stamped PDF is produced.

Credit / Debit Notes

What: Corrections to issued invoices (refunds, adjustments). Why: ZATCA requires formal credit/debit notes, not edited invoices. Problem solved: the note form looks real but does nothing. How: select the original invoice, give a reason (mandatory), and issue through the same signing/submission pipeline, referencing the original.

Customers

What: Your buyers' directory. Why: Standard invoices need full buyer identity; reuse saves typing. Problem solved: stuck on infinite loading. How: CRUD; customers appear in the invoice buyer picker. Bulk import/export (Pro): upload a CSV of customers via a downloadable template, or export the full directory — see "Bulk CSV Import/Export" below.

Products

What: Your catalog of goods/services with price + VAT category. Why: Fast, consistent invoice lines. Problem solved: "Loading Products…" forever. How: CRUD; products appear as selectable invoice line items. Bulk import/export (Pro): same CSV tool as Customers.

Invoice Delivery (Email & WhatsApp)

What: Send a finished invoice straight to the customer from the invoice screen, as an email with the PDF attached or as a WhatsApp message. Why: Issuing an invoice and getting it to the buyer used to be two separate steps (download, then send it yourself). How: the recipient is always read from the customer's own record on file — never a typed-in address — so a delivery can't accidentally go to the wrong person. WhatsApp delivery is a Pro feature and must be turned on for your account before it appears; email delivery has no separate toggle.

Bulk CSV Import/Export (Pro)

What: Import customers or products from a spreadsheet, or export either list to CSV. Why: Setting up a catalog of hundreds of products or a customer list one-by-one doesn't scale. How: download the provided template, fill it in, and upload — each row is checked before anything is saved, and the whole file is rejected (nothing partially imported) if any row has a problem, so you always know exactly what happened. Limits: 1MB / 500 rows per upload. Export has no size limit and needs no Pro plan.

ZATCA Integration — explained in full

What it is: The bridge between Fatoora Lite Pro and the Saudi government's Fatoora platform. To issue legal e-invoices, your billing device (an "EGS unit") must be onboarded: it generates a cryptographic key, requests a certificate (CSID) from ZATCA, passes compliance checks, and receives a production certificate. After that, the app uses that certificate to clear standard invoices and report simplified ones.

Why you need it: Without a valid CSID and a working connection, your invoices are not legally valid and standard invoices cannot be shared with buyers (they must be cleared first). This module is what makes the whole product legal.

What problem it solves: ZATCA onboarding is a multi-step cryptographic process (CSR, compliance CSID, sample-invoice checks, production CSID, environment switching). Fatoora Lite Pro does it for you and then monitors the connection.

How it works / what the controls mean (replacing the confusing tiles):

  • Environment (Sandbox vs Production): sandbox is ZATCA's test gateway for setup and trials; production is live. You start in sandbox, then promote.
  • CSID status & expiry: your certificate's health; renew before it expires or clearance stops.
  • Compliance test ("Create Test"): sends sample invoices to ZATCA's sandbox to prove your setup is correct before going live.
  • Connection health / latency: is the gateway reachable and how fast.
  • ("ERP" tile, etc. were decorative — removed unless we add a real ERP import later.)

Compliance Center

What: A real-time monitor of your invoices' legal status. Why: You must know what was accepted, what's pending, what was rejected, and what's about to miss its 24-hour reporting deadline. Problem solved: the screen shows fake numbers (99.2%, 3 rejected, 14 pending, 87 clear). How: real aggregates from your invoices and ZATCA responses, a deadline tracker for simplified invoices, the integrity of the PIH hash chain, and a live event feed.

Audit Vault

What: A tamper-evident archive of every artifact exchanged with ZATCA (XML, signed XML, QR, gateway responses). Why: Auditors and ZATCA can demand proof. How: every issued invoice stores its artifacts; the vault lets you search and inspect them.

Analytics

What: Business intelligence on your invoicing (revenue, VAT, top customers, clearance rate). Why: Owners want trends, not just compliance. Problem solved: mock charts. How: aggregates over real invoices; empty states when there's no data yet.

Reports

What: VAT-return summaries and exports for a chosen period. Why: You file VAT with ZATCA and your accountant needs CSVs. How: period/range selection, totals, CSV export. This is also where the AI's "make a 7-day report" command lands. Two VAT figures, shown side by side: "Declarable" (every invoice you've issued in the period) and "Cleared" (only the ones ZATCA has actually cleared/reported). They can differ when something is issued near a period boundary and hasn't cleared yet — both figures are net of any credit/debit notes, so a refund correctly reduces what you owe rather than inflating it.

Security & Audit Trail

What: A record of who did what, when — logins, permission changes, role changes, and every action taken on an invoice or certificate. Why: For compliance software, "who touched this" needs to be answerable, not just "what does the invoice say now." How: every sensitive action is recorded automatically in the background; nothing you do slows down or fails because of it.

AI Assistant

What: An embedded expert that answers ZATCA questions and does things for you. Why: The rules are complex; users want answers grounded in the actual regulations and the ability to act by typing. Problem solved: today it's a non-working box with no model, no chatbot, no real AI. How:

  • RAG (real retrieval): ZATCA regulations + your own data are embedded into a vector database; your question retrieves the most relevant passages and the model answers from them, with citations — not guesses.
  • Agentic actions: a safe server-side registry lets the assistant create invoices, generate reports, add users, etc., validated and permission-checked.
  • Model selection + streaming, available on every page via a floating dock. Why a vector DB: a relational database is great for structured records but can't do semantic search ("find the rule about exempt categories"). A vector store enables real meaning-based retrieval so the AI stops hallucinating.

Notifications

What: Alerts for compliance-relevant events. Why: You must act before deadlines and fix rejections fast. Problem solved: badge says "4" but the panel is empty and the bell is dead. How: a generator turns real events (rejections, near-deadline, expiring CSID) into notifications; the bell opens a working panel; the badge equals the unread count.

Users & Roles

What: Team management with access control. Why: A business has an owner, accountants, auditors — each needing different access. Problem solved: the section is empty. How: invite users with a role/designation; manage 5 system roles plus custom roles built from permission checkboxes; permissions gate both API and UI.

Settings

What: Central administration. Why: Every aspect of the app should be configurable. Problem solved: only a few placeholder options exist. How: sections for Company, ZATCA, Users & Roles, AI, Appearance (theme/language), Notifications, Security, and Billing — each control persisting and taking effect.

Appearance (Theme & Language)

What: Dark/light themes and Arabic/English (RTL). Why: Saudi users expect polished Arabic-first UX. Problem solved: theming is inconsistent and rough. How: a single CSS-variable theme system, consistent across every screen, with standardized motion tokens for smooth, premium animations.