Skip to main content

Clients

What it is

The customer master — every counterparty you quote and invoice, their pricing tier, payment terms and contact details. Clicking a row expands it into a full editing panel in place.

Who can open it

Any signed-in staff account that is active. Two gates, both in proxy.ts: account status, then the sales.clients feature grant while FEATURE_GRANULAR_RBAC is on, with the owner bypassing.

Before you start

Two kinds of row will not be in the list at first glance:

  • Sub-clients are hidden by default. A customer billed under a parent's statement is not shown as its own row. When any exist, a Show N sub-clients button appears next to the filters; the parent's expanded panel also lists them. The Total Clients tile counts what is shown, so it moves when you toggle that button.
  • Customers shared in from another of your companies are marked with a shared badge and are read-only. Their actions column reads Read-only instead of the usual menu. They also ignore the entity filter — a shared row belongs to the context you are working in, not to the entity you filtered to.

Every control on the page

Header:

ControlWhat it does
Filters⚠️ Applies nothing. Saved Views inside it does work and restores both the search and the entity filter.
ColumnsName, Tier, Contact, Email, Phone, Status, Payment Terms, Markup Tier, KYC Status, Last Order. Remembered; Reset restores the default six.
⋯ MoreExport CSV, Print, Archive selected, Bulk-tagonly Print works. The table has its own working CSV export.
+ Add ClientOpens the New Client form.

Four tiles (once at least one customer exists): Total Clients, Gold Tier, Platinum, Avg Pay Terms (the average of everyone's payment terms, counting 30 days where none is set).

Filter row:

ControlWhat it does
🔍 Search clients or contacts…Matches the company name and the contact name.
All EntitiesRestrict to one of your companies. Shared-in rows stay visible regardless.
N clientsHow many the table is showing.
Show / Hide N sub-clientsOnly present when sub-clients exist.

Tick rows and the bulk bar offers 🗑 Delete.

Per row: 📄 Statement opens the customer's statement of account; 🔗 Portal copies their portal link to the clipboard and is only shown when they have one; the row menu is Edit / Delete, replaced by Read-only on a shared-in customer.

Clicking a row expands it into the edit panel — the same fields as the New Client form — with ✓ Save Changes at the bottom.

New Client form — Entity and Company Name are required. Also contact name, email, phone, WhatsApp, GSTIN, state, pincode, address, currency (defaulted from the entity), payment terms, markup tier and the parent client for a sub-client.

Partly built

  • ⋯ More → Export CSV, Archive selected and Bulk-tag do nothing. Use the table's own export.
  • The Filters panel applies nothing — the search box and the entity dropdown are the real filters.
  • On a completely empty list, the offered Import Clients (CSV) and Connect Address Book buttons link nowhere. Add Client on that same empty state works.

What it writes

ActionWhat it writes
Save Client / ✓ Save ChangesCreates or updates the clients row, including the parent link for a sub-client.
🗑 Delete (row or bulk)Deletes the customer records. Asks first.
🔗 PortalCopies to the clipboard; writes nothing.
📄 StatementNavigates; writes nothing.

When it goes wrong

A customer you know exists is missing. Check three things in order: the search box, the entity dropdown, and whether it is a sub-client — those are hidden until you press Show N sub-clients.

A customer's row has no Edit or Delete. It is shared in from another company and is read-only there. Edit it from the company that owns it.

Save is greyed out. The company name is empty; it is required.

There is no 🔗 Portal button. That customer has no portal token yet.

The Total Clients tile disagrees with the number of rows. The tile counts what is currently shown, which changes when you show or hide sub-clients.

⋯ More → Export CSV did nothing. Use the export on the table itself.

  • Suppliers — the same pattern for vendors.
  • Address Book — contacts, as distinct from billing customers.
  • Invoices — where payment terms decide what counts as overdue.