Skip to content
Report · Purchasing

Purchase orders vs bills received by month

The value ordered on purchase orders each month against the value billed on bills created from purchase orders.

  • monthly
  • commitments
  • purchasing
Sample preview, fictional dataYour own figures appear after import.

01

About this report

Two rows per month for the last 24 months, in base currency before tax. Ordered is the value of purchase order lines by order date, leaving out rejected orders. Billed is the value of vendor bill lines created from a purchase order, by bill date. Bills entered without a link to their purchase order do not count as Billed.

If Ordered stays ahead of Billed for several months, orders are waiting for invoices or bills are being entered without the purchase order link. On a dashboard, a line chart grouped by Month with Kind as the series shows the two side by side.

02

Sample preview

Fictional figures in the shape you will see. Yours come from your account.

MonthKindDocumentsAmount
2026-07Ordered38212,400
2026-07Billed41198,750.50
2026-08Ordered44256,100
2026-08Billed39221,320
2026-09Ordered29174,980
2026-09Billed27139,115.25

03

The SuiteQL

This is the query each report runs. Read it, copy it, or change it after import.

Purchase orders vs bills received by month
SELECT period, kind, documents, amount
  FROM (SELECT TO_CHAR(t.trandate, 'YYYY-MM') AS period,
               'Ordered' AS kind,
               COUNT(DISTINCT t.id) AS documents,
               SUM(tl.foreignamount * t.exchangerate) AS amount
          FROM transaction t
          JOIN transactionline tl ON tl.transaction = t.id
         WHERE t.type = 'PurchOrd'
           AND t.status NOT IN ('PurchOrd:C', 'C')
           AND tl.mainline = 'F'
           AND tl.taxline = 'F'
           AND t.trandate >= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -23)
         GROUP BY TO_CHAR(t.trandate, 'YYYY-MM')
        UNION ALL
        SELECT TO_CHAR(t.trandate, 'YYYY-MM'),
               'Billed',
               COUNT(DISTINCT t.id),
               SUM(tl.foreignamount * t.exchangerate)
          FROM transaction t
          JOIN transactionline tl ON tl.transaction = t.id
          JOIN transaction po ON po.id = tl.createdfrom
         WHERE t.type = 'VendBill'
           AND t.posting = 'T'
           AND po.type = 'PurchOrd'
           AND tl.mainline = 'F'
           AND tl.taxline = 'F'
           AND t.trandate >= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -23)
         GROUP BY TO_CHAR(t.trandate, 'YYYY-MM'))
 ORDER BY period, kind DESC

ReportPurchasing

Purchase orders vs bills received by month

Screenshot of the Purchase orders vs bills received by month report in HiScale Advanced Reports, filled with fictional sample data
Sample preview, fictional dataOpen image full size (opens in a new tab)