customer/statement • portal/index • portal/invoices • portal/quotes • portal/statement • portal/warranties Customer Statements, AR Aging & Client Self-Service Portal
Understand how Running Balance Statements of Account and 30/60/90/120+ Day Age Analysis work in double-entry accounting, and take a complete tour of the white-labeled Client Self-Service Portal where your customers can approve quotes online, download invoices and statements, upload Proofs of Payment (POP), inspect serialized hardware warranties, and log SLA support tickets 24/7.
14.1 Plain-English Accounting: Reading a Statement of Account & Age Analysis
While an Invoice shows a single purchase, a Statement of Account is a chronological passbook of every financial event between your company and a customer over a selected date range, culminating in a single Closing Balance Due and an Age Analysis strip.
Suppose you run a Statement from 01 Oct to 31 Oct. How does Keystone X calculate the first line?
- Opening Balance (Balance Brought Forward): Keystone X sums every finalized Invoice (`+Debit`), Payment (`-Credit`), and Credit Note (`-Credit`) that occurred prior to 01 Oct. That historical net balance becomes your starting line on 01 Oct.
- Period Debits (Billed): Every new Tax Invoice issued between 01 Oct and 31 Oct adds (`+`) to the Running Balance.
- Period Credits (Paid / Credited): Every Payment Receipt (`RCT-`) and applied Credit Note (`CN-`) between 01 Oct and 31 Oct subtracts (`-`) from the Running Balance.
- Closing Balance Due:
Opening Balance + Period Debits − Period Credits.
At the bottom of every Statement is an Age Analysis grid that breaks the customer's unpaid balance into time buckets based on how old each unpaid invoice is:
- Current (0–30 Days): Recent invoices that are within current trading terms.
- 30 Days: Invoices 31–60 days old (1 month past current).
- 60 Days: Invoices 61–90 days old (requires firm collection follow-up).
- 90 Days / 120 Days / 180+ Days: Severely delinquent debt at high risk of bad-debt write-off; consider placing the account on Credit Hold.
14.2 Back-Office Customer Statement Preview, PDF & Email Dispatch (customer/statement/{id})
Staff can generate a customer statement at any time from the Customer Directory (`customer/index`) or inside the 360° Customer Profile (`customer/profile/{id}`) by clicking Statement (`customer/statement/{id}`).
📸 [SCREENSHOT PLACEHOLDER: backoffice-customer-statement-preview.png]
How to Capture: Navigate to /customer/statement/{id} for an active customer. Capture the Date Range & Action Bar (Refresh, Download PDF, Email), the Statement Details table (showing Opening Balance, Invoices, Payments, and Running Balance), and the 6-bucket Age Analysis bar at the bottom.
- Start Date (`start_date`) & End Date (`end_date`) Filter: Select any historical period and click Refresh to recompute the Opening Balance Brought Forward and chronological transactions on screen.
- Download Button: Generates and downloads the official branded Statement of Account PDF (`customer/downloadStatement/{id}`) complete with your company logo, banking details, and aging strip.
- Email Button: Dispatches the Statement of Account PDF directly to the customer's billing email address in 1 click (`customer/emailStatement/{id}`).
14.3 The Client Self-Service Portal Command Center (portal/index)
When you grant a customer access to the Client Self-Service Portal (or when an administrator clicks Login As Client / Impersonate from `customer/impersonate/{id}`), the client lands on their personalized Client Self-Service Command Center (`portal/index`).
📸 [SCREENSHOT PLACEHOLDER: client-portal-dashboard-overview.png]
How to Capture: Log into the Client Portal (/portal/index) or use Admin Impersonation on a customer with active invoices and quotes. Capture the Welcome header chips, the Action Required banners, the 6 KPI cards, the 12-Month Billing vs. Payments Velocity chart, the Account Aging & Copyable EFT Banking Details card, and the 4-tab workspace at the bottom.
1. Smart Header Chips & Action Required Alert Banners
- Account Identity Chips: Displays the customer's Account Number (`ACC-0001`), Payment Terms, assigned Account Manager name, and a green Unallocated Credit Wallet pill whenever they have credit on account.
- Overdue Account Balance Banner (Red): Automatically appears if the client has past-due invoices, showing the exact overdue amount and a 1-click Review & Upload POP button.
- Commercial Proposals Awaiting Sign-Off Banner (Amber): Automatically appears when the client has open Quotes or Pro-Forma Invoices waiting for online approval (`Review Proposals`).
2. The 6 Client Portal KPI Cards
| Portal KPI Card | What the Customer Sees & Click Destination |
|---|---|
| 1. Net Balance Due / Account In Credit | Shows total unpaid balance across open invoices (or green/blue Account In Credit if their Credit Wallet exceeds their debt). Clicks through to `portal/statement`. |
| 2. Overdue Exposure | Total rand value and count of invoices past their due date. Clicks through to `portal/invoices`. |
| 3. Active Proposals | Count and total value of open Quotes/Pro-Forma Invoices awaiting sign-off. Clicks through to `portal/quotes`. |
| 4. Settled (YTD) | Total verified payments received in the current calendar year. Clicks through to `portal/payments`. |
| 5. Projects & Jobs | Count of active Projects and Field Service Job Cards in progress. Clicks through to `portal/projects` or `portal/jobcards`. |
| 6. Support Desk | Count of open SLA Helpdesk Tickets. Clicks through to `PortalTicket/index`. |
3. 12-Month Billing Chart & 1-Click Copyable EFT Banking Card
Below the KPIs, the portal displays a 12-Month Billing vs. Payments Velocity bar chart alongside an Account Aging & Remittance card. The Remittance box displays your company's official EFT Banking Details (Bank Name, Account Number, Branch Code, and the customer's exact Payment Reference `ACC-XXXX`) with a 1-click Copy button so the client never makes a reference typo when paying via online banking!
14.4 Portal Invoices, Waybill Downloads & Online POP Upload (portal/invoices & viewInvoice)
Clicking View Invoices (`portal/invoices`) opens the customer's dedicated Tax Invoices & Remittance Hub.
- Instant Status Filter Pills: The customer can filter their table in real time between
All Invoices,Open / Unpaid,Overdue, andPaid in Full, or search by Invoice #, PO #, or Project. - Direct Tax Invoice & Waybill PDF Downloads: Every row provides direct download buttons for both the Official Tax Invoice PDF (`portal/downloadInvoice/{id}`) and any linked Delivery Note / Waybill PDF (`portal/downloadDeliveryNote/{id}`).
- Interactive Invoice View & Proof of Payment (POP) Upload (`portal/viewInvoice/{id}`): Opening any unpaid invoice displays the full SARS Tax Invoice breakdown (including allocated Serial Numbers `S/N:`) and a green Upload Proof of Payment button (`#uploadPopModal`). When the client uploads their bank POP (`PDF/JPG/PNG`) and confirms the amount paid and EFT reference, Keystone X automatically logs the payment into your back-office Treasury Clearing Pipeline (`POP Under Review`) and notifies your finance team!
14.5 Online Quote Sign-Off & PO Acceptance (portal/quotes & viewQuote)
When you send a Quote or Pro-Forma Invoice (`QUO-`), your client can review and sign it off online inside Proposals & Quotes (`portal/viewQuote/{id}`):
📸 [SCREENSHOT PLACEHOLDER: client-portal-quote-online-approval.png]
How to Capture: Open a pending quote in the Client Portal at /portal/viewQuote/{id}. Capture the blue Ready for Online Approval & Sign-Off banner with the Decline and Approve & Sign Off buttons and the Proposal document card below it.
- Approve & Sign Off Modal (`#approveQuoteModal`): Captures the client's Authorized Signatory Name, optional/mandatory Customer Purchase Order (PO) Number, and acceptance notes, stamping the exact date and time (`accepted_at`) and transitioning the quote to `Approved`.
- Decline Modal (`#declineQuoteModal`): Allows the client to decline a proposal while providing structured feedback (`Decline Reason`) so your sales representative knows whether to revise pricing or scope.
14.6 Portal Statement, Serialized Asset Warranties, Subscriptions & Helpdesk
Beyond Invoices and Quotes, the Client Self-Service Portal empowers your customers with four additional self-service modules:
| Portal Self-Service Module | Route | Key Capabilities for the Customer |
|---|---|---|
| 1. Interactive Statement of Account | portal/statement |
Includes 1-click period presets (This Month, 3 Months, YTD, All Time), 4 summary KPIs (Opening Balance, Period Invoiced, Payments & Credits, Closing Balance Due), a clickable chronological ledger where every Invoice, Payment, and Credit Note links to its source document, a 5-bucket Age Analysis bar, and a Download Statement PDF button (`portal/downloadStatement`). |
| 2. Serialized Assets & Warranty Register | portal/warranties |
Lists every serialized hardware unit (`S/N`) ever dispatched to the customer, showing the SKU, Purchase Invoice link (`#INV-XXXX`), Dispatch Date, Warranty Expiry Date, live countdown badge (`Active (240d left)`, `Expiring (14d left)`, or `Expired`), and a 1-click Log RMA button (`PortalTicket/index?serial=...`) that opens a support ticket pre-tagged with that exact serial number! |
| 3. Recurring Subscriptions & Contracts | portal/subscriptions |
Displays all active recurring retainers and stock replenishment contracts (`SUB-XXXX`), showing the billing frequency, Cycle Value (Excl. & Incl. VAT), Next Billing Date, subscribed line items, and a direct link to the most recently generated Tax Invoice. |
| 4. Projects, Job Cards & SLA Helpdesk | portal/projectsportal/jobcardsPortalTicket/index |
Allows clients to track real-time milestone progress percentages on active Projects, inspect Field Service Job Cards and technician fault reports, and log/reply to SLA Helpdesk Support Tickets with file attachments. |