Reports
Review Sales Tax Collected
Sales Tax Collected is an operational cross-check built from taxed sale-item rows. It is not a tax return, invoice register or substitute for Tax Summary and statutory GST reports.
- Menu path
- Reports -> Money -> Tax -> Sales Tax Collected
- Verified from
- Posnic demo and current POS source reviewed on 2026-09-08
Technical source evidence
frontend/modules/taxdiscountReport.html, frontend/static/script/js/modules/js/report_taxdiscount.js, api/src/controllers/sales.controller.js taxSalesReports, api/src/repositories/sale.repository.js taxSalesReportPage
Run the Report
- Open Reports -> Money -> Tax.
- Keep Sales Tax Collected selected.
- Open Filter.
- Choose the reporting date range and one or more branches.
- Apply.
- Review each Tax Name and Amount, then compare the total with Tax Summary and the underlying sales invoices.
What the Report Includes
| Rule | Current behavior | Operator consequence |
|---|---|---|
| Sale process | Includes Add, Edit and PartialReturn sale records. | Review return reports separately before treating the result as net tax. |
| Tax threshold | Only item rows with stored tax_amount greater than zero are selected. | Zero-tax, exempt, missing and malformed tax rows do not appear. |
| Date field | The API filters sale updated_date in the shop timezone. | An edited sale can fall into a different window than expected from its original sale date. |
| Branch | Only selected valid branch IDs are queried. | An empty branch selection cannot prove zero tax across the business. |
| Output | Rows are combined by tax name and positive amounts are displayed. | Use the amount as a control total, not invoice-level evidence. |
How the Amount Is Calculated
- For inclusive tax, the browser first backs tax out of item_price; for exclusive tax it uses item_price directly.
- The browser applies the stored line discount before calculating each tax field.
- Multiple tax_fields create separate components that are combined by tax name.
- When tax_fields is null but a positive tax exists, the stored tax_name and rate are used.
- The repository groups by the complete embedded item object before the browser totals rows. Because this is not an invoice-by-invoice tax register, reconcile against Tax Summary and invoices.
Understand No Records
- No Records means no qualifying taxed item rows were returned for the selected updated-date and branch scope.
- It does not prove that the shop has no taxable sales or no tax liability.
- Check that tax was enabled, each item had the correct tax assignment before sale, the sale was saved in the selected branch, and the update date falls inside the range.
- Use a controlled test sale only in an approved test shop, then confirm the invoice tax and rerun the report.
- The public demo resets regularly and can legitimately show an empty tax report while ordinary untaxed sales exist.
Export and Access
- Export All To CSV creates sales-tax-discount-reports.
- CSV fields are TaxName and Amount, formatted to two decimal places.
- The export button is disabled when there are no matching records and on the free-plan gated view.
- The API requires Report Read permission; session filtering can narrow the permitted date range.
- PDF, CSV, Excel and Email in the page toolbar are shared report-delivery controls, while the row export is the dedicated tax-name CSV.
Reconciliation Checklist
- Use identical date and branch scope in Sales Tax Collected and Tax Summary.
- Compare tax-name totals with taxable invoice lines.
- Review edited sales near the period boundary because this report filters updated_date.
- Review partial and full returns separately.
- Resolve missing item tax assignments before relying on future reports.
- Use the applicable statutory report and accountant-approved process for filing.
Troubleshooting
| Problem | Check | Action |
|---|---|---|
| Report is empty | Branch, updated-date range and positive item tax_amount | Correct scope and verify a taxed invoice line. |
| Tax name is unexpected | Item tax or tax-group assignment at sale time | Correct catalog setup for future sales and preserve historical evidence. |
| Amount differs from invoice register | Inclusive/exclusive price, discount, returns and edited sale date | Reconcile at invoice-line level. |
| Amount differs from Tax Summary | Report scope and each report's calculation path | Do not force a match; identify and document the source records. |
| Export is unavailable | Rows, plan and Report Read permission | Correct access or report scope. |