Home / Help Center / pos-app / Reports / Customer Reports
🤝 Reports

Customer Reports

Customer Reports (internally called Party Reports) covers both customers and suppliers as "parties" — six tabs for account statements, profit contribution per party, a searchable directory, item-level drill-downs and party-group roll-ups.

📍 Menu path: Reports → Customer Reports
👤 Who uses it: Roles with Reports permission (export buttons need Export permission)
🏷️ Plan tier: advanced+

Overview

This page treats customers and suppliers under one umbrella called a "party". Several tabs use a shared Party Picker control: choose Customer/Supplier/All, then type to search and select the exact party before the report loads.

The six tabs are: Party Statement, Party Wise P&L, All Parties, Party Report by Item, Sale/Purchase by Party and Sale/Purchase by Group.

Party Statement and Party Report by Item require you to pick a specific party before they load anything — they show an empty prompt state until a party is selected.

Before You Start

Step-by-Step Guide

1 Look up one party's full account statement

  1. Open Party Statement, use the Party Picker to choose Customer or Supplier and search/select the exact party by name.
  2. Set the date range, then read the Closing Balance banner at the top (Dr = amount receivable from them, Cr = advance/overpaid).
  3. Review Total Debit, Total Credit and Net Balance cards, then scroll the Account Ledger table (date, type, reference, debit, credit, running balance, note).

2 See profit contributed by each customer

  1. Open Party Wise P&L, set a date range, and review Total Revenue, Total COGS, Total Gross Profit and Active Parties cards.
  2. Read the Top 10 Parties — Revenue vs Gross Profit bar chart, then use the search box in the table header to filter the full party list by name; the table shows invoices, revenue, COGS, gross profit, margin % and tax per party.

3 Browse and search your full party directory

  1. Open All Parties, use the All Parties / Customers Only / Suppliers Only buttons, and type in the search box to filter by name.
  2. Read the Total Customers, Total Suppliers, Total Business and Outstanding cards, plus the Party Mix pie chart.
  3. Scroll the table for phone/GSTIN, transaction count, total business and outstanding balance per party.

4 Drill into what a specific party bought or supplied

  1. Open Party Report by Item, pick a party with the Party Picker, and set a date range.
  2. For a customer, the item table shows Qty Sold, Revenue, COGS, Gross Profit and Invoices per product; for a supplier it shows Qty, Spend and Orders instead.

5 Compare all customers and suppliers side by side

  1. Open Sale/Purchase by Party, set a date range, and use All/Customers/Suppliers filter buttons plus the search box.
  2. Read the Top Customers by Sale and Top Suppliers by Purchase bar charts, then the combined table (sale amount + count, purchase amount + count per party).

6 Roll sales and purchases up by party group

  1. Open Sale/Purchase by Group and set a date range.
  2. Review Customer Groups and Supplier Groups pie charts with their tables (count, amount, tax per group) — assign a Party Group to your customers/suppliers first if this is empty.

Every Field & Button, Explained

Field / ButtonWhat it does
Party PickerShared control on Party Statement and Party Report by Item — choose party type (All/Customer/Supplier), search by name, and select the exact party from the dropdown before the report loads.
Party Statement tabLedger of debits/credits/running balance for one selected party, with a Closing Balance Dr/Cr banner.
Party Wise P&L tabRevenue, COGS, gross profit and margin per customer, with a top-10 revenue vs gross-profit bar chart and a name search box.
All Parties tabSearchable directory of every customer and supplier with total business and outstanding balance, plus a customer/supplier mix pie chart.
Party Report by Item tabProduct-level breakdown of what one selected party bought (customer) or supplied (supplier), including gross profit for customers.
Sale/Purchase by Party tabSide-by-side sale amount and purchase amount per party with top-customer/top-supplier bar charts.
Sale/Purchase by Group tabSame sale/purchase totals rolled up by each party's assigned Party Group, shown as pie charts and tables.
Closing Balance bannerParty Statement only — shows whether the balance is Dr (they owe you) or Cr (you owe them / they overpaid), colour-coded red/green.
Export buttonDownloads the currently loaded tab's table (statement entries, party list, item list, etc.) where Export permission is granted.

Tips & Best Practices

Troubleshooting & FAQ

Party Statement / Party Report by Item shows nothing.
Both tabs require you to select a specific party first with the Party Picker — an unselected picker shows an empty prompt instead of data.
Sale/Purchase by Group says "No group data for selected period".
This tab only aggregates parties that have a Party Group assigned. Add a group to your customers/suppliers under their profile, then reload.
A customer or supplier is missing from All Parties.
Check the All Parties / Customers Only / Suppliers Only filter and clear the search box — the party may simply be filtered out, not missing from the system.
Party Wise P&L shows zero gross profit for a customer.
Gross profit needs Cost Price set on the products that customer bought. Set Cost Price under Products and reload the report.

🧑‍💻 Developer Notes

Source component(s):

  • frontend-app/packages/pos-react-lib/src/pages/PartyReports.jsx

Backend endpoints used:

  • GET /reports/party/all (params: type, search) — Party Picker search + All Parties tab
  • GET /reports/party/statement (params: partyId, partyType, from, to) — Party Statement tab
  • GET /reports/party/profit-loss (params: from, to) — Party Wise P&L tab
  • GET /reports/party/by-item (params: partyId, partyType, from, to) — Party Report by Item tab
  • GET /reports/party/sale-purchase (params: from, to) — Sale/Purchase by Party tab
  • GET /reports/party/sale-purchase-group (params: from, to) — Sale/Purchase by Group tab

Related tables (db-core repositories):

  • Customer
  • Supplier
  • Sale
  • SaleItem
  • PurchaseOrder

Redux slices:

  • scope (selectCurrentScope / getScopeQueryParams)

Feature flag key: reports (requires advanced plan tier or above)

The PartyPicker component is shared between the Party Statement and Party Report by Item tabs and debounces its search query by 300ms before calling /reports/party/all. "Party" is a generic term in this codebase covering both Customer and Supplier records, distinguished by a type field returned from the API.