Expenses and reports

Reports overview

Use ESMCloud reports to inspect sales, purchases, stock, customers, payments, taxes, registers, and activity.

Back to docs
Reports menu
Reports menu

Core report filters

Reports depend heavily on date range, location, contact, product, category, brand, and payment status filters.

  1. Set the date range before comparing results.
  2. Use All locations first if you are not sure which branch contains the transaction.
  3. Use export buttons after filtering, not before.

Common reports

Each report answers a different operational question.

  1. Profit/Loss shows high-level business performance.
  2. Purchase & Sale Report compares transaction movement.
  3. Stock Report shows current stock value and movement totals.
  4. Product purchase and sell reports show product-level behavior.
  5. Payment reports show cash, card, cheque, bank transfer, and due movement.

Troubleshooting report numbers

When numbers look wrong, inspect the source transaction before editing reports.

  1. Check transaction date, status, location, and contact.
  2. Check payment status and payment records.
  3. Check stock-managed setting for products involved.

Detailed operating workflow

Use reports to validate operational data rather than relying only on table screens.

  1. Start with Purchase & Sale Report for high-level movement and Profit/Loss for profitability.
  2. Use Stock Report and Stock History for inventory checks.
  3. Use Payment Reports and Contact Reports for due amounts and reconciliation.
  4. Always apply the intended date range and location before exporting.
Check before moving on Date range only applies after clicking Apply where that report requires it. Filters update the table without reloading to stale defaults. Export buttons reflect the currently filtered table.

Review signals and troubleshooting

Use these checks when the screen looks correct but the numbers, records, or workflow do not behave as expected.

  1. If page totals do not match table totals, check scrollable total rows and hidden columns.
  2. If pagination counts change, inspect recordsTotal and recordsFiltered in the AJAX response.
  3. If a report seems empty, confirm the date range includes the seeded or real transactions.
Practical notes
  • Use reports as a verification layer after changing settings, imports, pricing, or stock workflows.