This is a reference for the computed amounts and quantities shown in the Sales, Purchases, and Inventory reports under Reporting — margins, net amounts, aging buckets, turnover, and the rest. Use it when a customer asks how a specific figure was worked out, or why two reports show different numbers for what looks like the same thing.
After reading this article you will be able to explain how each report column is derived, know which columns are summed inside a group, and understand how the aging, turnover, and stock-level figures are bucketed and rounded.
How report figures are built
Reporting figures are not recalculated live from your orders each time you open a report. Qoblex maintains a separate reporting store: as you create and authorize orders, shipments, invoices, refunds, and stock movements, it writes the per-line amounts (gross, net, tax, cost of goods, margin, and so on) into that store. Each report then sums those stored per-line amounts for the rows your filters select, and computes a small number of ratios (margin %, turnover, sell-through) on top of the totals.
Two practical consequences:
- A figure can only ever be as current as the last time the reporting store was updated for that record.
- Amounts that reduce a value — cancellations, discounts, and refunds — are stored as negative numbers, so the report can simply add every component together.
Sales figures
These appear in the Sales by product and Sales details reports (Reporting > Sales). Each line’s amounts come from the order line, with cancellations, discounts, and refunds carried as negative values.
| Metric (column) | How it is derived |
|---|---|
| Gross Sales | Tax-exclusive unit price × quantity sold. |
| Canceled Gross Sales | The gross value of the canceled quantity, stored as a negative. |
| Discounts | The line discount amount, stored as a negative. |
| Refunds | The refunded net amount for the line, stored as a negative. |
| Net Sales | Gross Sales + Canceled Gross Sales + Discounts + Refunds (the negatives reduce the total). |
| Tax / Taxes | Net Sales × the line’s tax rate ÷ 100. |
| Total Sales | Net Sales + Tax. |
| COGS (column “Cost Of Goods”) | The cost of goods sold recorded for the line. |
| Realized COGS | The realized cost of goods sold recorded for the line. |
| Margin | Net Sales − COGS. |
| Margin Percentage | If Net Sales is greater than 0: (Margin ÷ Net Sales) × 100. Otherwise Qoblex shows 0. |
Grouped sales and the summary row
When the Sales by product report is grouped (by customer, brand, location, and so on), the amount and quantity columns are summed within each group, and an Orders column shows the count of distinct orders in the group. The group’s Margin Percentage is recomputed from the group totals: (sum of Margin ÷ sum of Net Sales) × 100 when the group’s Net Sales is above 0, otherwise 0.
Shipment figures
The Shipments report (Reporting > Sales) reports the shipped portion of each line, so its amounts can differ from the order line above:
- Net Sales (shipment) = the shipped quantity valued at the shipment net price.
- Margin (shipment) = shipment Net Sales − shipment COGS.
- Margin Percentage (shipment) = (shipment Margin ÷ shipment Net Sales) × 100 when shipment Net Sales is above 0, otherwise 0.
Return rows in the Shipments report carry a Return COGS but show 0 for gross, net, and margin.
Customer aging figures
The Customer aging report (Reporting > Sales) works at the order level, across orders that are not canceled or deleted. Amounts are taken from each order’s invoices, payments, and refunds.
- Invoiced Amount = invoice gross amount − invoice discount amount + invoice tax amount.
- Paid Amount = payments recorded against the order.
- Refunded Amount = the refunded total (stored as a negative).
- Due Amount = Invoiced Amount − Paid Amount + Refunded Amount. If that result is below 0, the Due Amount is shown as 0.
How the aging buckets are filled
Qoblex spreads each invoice’s outstanding amount into one bucket, based on that invoice’s due date relative to today, and only when the invoice still has an amount owing (above 0):
- If the due date is today or in the future, the amount goes into a Due in bucket: Due in 1-30 / 31-60 / 61-90 / 91+ Days, by how many days remain until the due date.
- If the due date is in the past, the amount goes into an Overdue bucket: Overdue 1-30 / 31-60 / 61-90 / 91+ Days, by how many days have passed since the due date.
- If the invoice has nothing owing, it contributes 0 to every bucket.
Supplier aging figures
The Supplier aging report (Reporting > Purchases) groups by supplier and works from each supplier bill’s amounts.
- Billed Amount = the sum of the supplier bill totals.
- Paid Amount = the payments recorded against those bills.
- Refunds = the supplier refund total for the bills.
- Due Amount = Billed Amount − Paid Amount + Refunds.
The aging buckets are filled per bill, using the bill’s due date and the same bands as customer aging — Due in 1-30 / 31-60 / 61-90 / 91+ Days for bills due today or later, and Overdue 1-30 / 31-60 / 61-90 / 91+ Days for bills past due — and only while the bill still has an amount owing (above 0). Each supplier row then sums its own bills’ bucket amounts.
Purchase figures
These appear in the Purchases by product report (Reporting > Purchases). As with sales, discounts and refunds are stored as negatives.
| Metric (column) | How it is derived |
|---|---|
| Gross Amount | Tax-exclusive purchase price × ordered quantity. |
| Discounts | Gross Amount × the line discount % ÷ 100, stored as a negative. |
| Refunds | The refunded net amount for the line, stored as a negative. |
| Net Amount | Gross Amount + Discounts + Refunds. |
| Taxes | The tax amount recorded for the purchase line. |
| Landed Costs | The landed cost allocated to the purchase line. |
| Cost (column “Cost”, the Total with landed cost) | Net Amount + Landed Costs. |
| Total Amount | Net Amount + Taxes + Landed Costs. |
Received goods figures
The Received goods report (Reporting > Purchases) reports each goods-receipt line rather than the ordered line:
- Received Amount (column “Amount”) = the net amount of the received quantity.
- Landed Cost = the landed cost allocated to that receipt line.
- Total Cost = Received Amount + Landed Cost.
Return rows in this report show their return amount with 0 landed cost and 0 total cost.
Stock on hand figures
The Stock on hand report (Reporting > Inventory) reports the current position per product variant. These quantities are maintained on the inventory record, not recalculated in the report:
- Quantity (column “Total Quantity”) — the variant’s current on-hand quantity (shown as 0 if negative).
- Allocated Quantity (column “Total Allocated Quantity”) — the quantity committed to open demand.
- Available Quantity (column “Total Available Quantity”) = Quantity − Allocated − Buffer.
- Incoming Quantity (column “Total Incoming Quantity”) — quantity expected on inbound purchases.
- Buffer Quantity (column “Total Buffer Quantity”) — the buffer reserve set for the variant.
- On Backorder Quantity — how far demand exceeds what is available to allocate. When Available Quantity is at or above 0 it reflects only the still-to-allocate demand; when Available Quantity is negative, that shortfall is added in as well.
- Total Cost = Quantity × the variant’s moving average cost.
When the report includes location data, each location row shows the same quantity, allocated, available, incoming, and buffer fields for that location.
Reorder inventory figures
The Reorder inventory report (Reporting > Inventory) uses each location’s Min Quantity (the location alert level) and Max Quantity to flag stock levels. The stock-level filter offers three states:
- Low stock — Available Quantity is at or below Min Quantity.
- Low stock including incoming — Available Quantity + Incoming Quantity is below Min Quantity.
- Within threshold — Min Quantity ≤ Available Quantity ≤ Max Quantity.
The Sold Quantity column is only populated when you filter by a Sales date range; it is the quantity shipped out of that location during the selected range. Without a Sales date filter it stays at 0.
Reorder actions use the selected rows together with their supplier, location, quantity, and cost details to prepare purchase orders or stock transfers.
Inventory turnover figures
The Inventory turnover report (Reporting > Inventory) is built from daily stock-movement records for each variant over the selected period.
- COGS = the sum of the movement cost of goods sold for the variant in the period.
- Daily SOH = the average of the daily closing stock value across the days in the period.
- Opening Balance = the opening balance on the earliest movement date in the period.
- Closing Balance = the closing balance on the latest movement date in the period.
- In Quantity = the sum of inbound movement quantity.
- Out Quantity = the sum of outbound movement quantity.
- Turnover = COGS ÷ Daily SOH when Daily SOH is not 0; otherwise Qoblex shows 0.
- Sell-Through = Out Quantity ÷ (In Quantity + Opening Balance) when that denominator is not 0; otherwise Qoblex shows 0.
Inventory aging figures
The Inventory aging report (Reporting > Inventory) ages the remaining on-hand stock of each variant by how long it has been held. Only stock-movement records with a remaining quantity above 0 are included.
- On-hand Quantity = the sum of the remaining quantities for the variant.
- On-hand Value for each movement record = (Closing Value ÷ Closing Balance) × Remaining Quantity when Closing Balance is above 0; otherwise 0. The report row’s On-hand Value is the sum of those record values.
- Age of a record = the number of days from the record’s date to today.
- Oldest Age (days) = the largest record age among the variant’s included records.
- Average Age (days) = the sum of (Age × Remaining Quantity) across records ÷ On-hand Quantity. If On-hand Quantity is 0, Qoblex shows 0.
Aging buckets
The report sums remaining quantity (the “Qty” columns) and On-hand Value (the “Value” columns) into these age bands, by each record’s Age in days:
- 0-30
- 31-60
- 61-90
- 91-120
- 121-150
- 151-180
- 181-270
- 271-365
- over 365 (the “+365” columns)
Where these reports live
The Sales, Purchases, and Inventory reports are under Reporting in the main menu, at the Sales reports, Purchases reports, and Inventory reports entries. Each report tab is visible only to users whose role grants the matching reporting permission (Sales, Purchases, or Inventory reporting). For full report behavior — filters, columns, grouping, export, and per-report troubleshooting — see the Sales Reports, Purchases Reports, and Inventory Reports articles.
