Skip to content
Report · Receivables

Open receivables

Every open invoice and unapplied customer credit, with due date, days overdue and aging bucket.

  • detail
  • collections
  • operational
Sample preview, fictional dataYour own figures appear after import.

01

About this report

One row per posted invoice with an unpaid balance, and per credit memo or customer payment with an unapplied amount, shown as a negative. Each row gives the document, type, top-level customer, date, due date, days overdue, aging bucket, and the open amount in the transaction currency and in base currency at the transaction's rate.

Opened from AR aging by customer, it arrives filtered to one customer and bucket. On its own, filter on Aging bucket or sort by Days overdue to build a collections call list.

02

Sample preview

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

DocumentTypeCustomerDateDue dateDays overdueAging bucketCurrencyOpen (transaction currency)Open amount
INV20931InvoiceHarbor & Pine Co.2026-09-192026-10-19-25CurrentUS Dollar48,20048,200
INV20877InvoiceHarbor & Pine Co.2026-08-152026-09-14101-30US Dollar12,50012,500
INV20790InvoiceBrightline Dental Group2026-07-112026-08-104531-60US Dollar8,7508,750
PYMT08812PaymentBrightline Dental Group2026-09-022026-09-02Unapplied creditUS Dollar-1,200-1,200
INV20511InvoiceCoastal Freightways2026-05-022026-06-01115Over 90Canadian Dollar12,4909,120

03

The SuiteQL

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

Open receivables
SELECT o.document__id,
       o.document,
       o.type,
       NVL(c.altname, c.entityid) AS customer,
       TO_CHAR(o.tran_date, 'YYYY-MM-DD') AS tran_date,
       TO_CHAR(o.due_date, 'YYYY-MM-DD') AS due_date,
       CASE WHEN o.open_amount < 0 THEN NULL ELSE TRUNC(SYSDATE) - TRUNC(o.due_date) END AS days_overdue,
       CASE WHEN o.open_amount < 0 THEN 'Unapplied credit'
            WHEN TRUNC(SYSDATE) - TRUNC(o.due_date) <= 0 THEN 'Current'
            WHEN TRUNC(SYSDATE) - TRUNC(o.due_date) <= 30 THEN '1-30'
            WHEN TRUNC(SYSDATE) - TRUNC(o.due_date) <= 60 THEN '31-60'
            WHEN TRUNC(SYSDATE) - TRUNC(o.due_date) <= 90 THEN '61-90'
            ELSE 'Over 90' END AS aging_bucket,
       o.currency,
       o.open_fx,
       o.open_amount
  FROM (SELECT e.toplevelparent AS customer__id,
               t.id AS document__id,
               t.tranid AS document,
               BUILTIN.DF(t.type) AS type,
               t.trandate AS tran_date,
               NVL(t.duedate, t.trandate) AS due_date,
               BUILTIN.DF(t.currency) AS currency,
               t.foreignamountunpaid AS open_fx,
               t.foreignamountunpaid * t.exchangerate AS open_amount
          FROM transaction t
          JOIN entity e ON e.id = t.entity
         WHERE t.type = 'CustInvc'
           AND t.posting = 'T'
           AND t.foreignamountunpaid > 0
        UNION ALL
        SELECT e.toplevelparent,
               t.id,
               t.tranid,
               BUILTIN.DF(t.type),
               t.trandate,
               t.trandate,
               BUILTIN.DF(t.currency),
               -t.foreignpaymentamountunused,
               -t.foreignpaymentamountunused * t.exchangerate
          FROM transaction t
          JOIN entity e ON e.id = t.entity
         WHERE t.type IN ('CustCred', 'CustPymt')
           AND t.foreignpaymentamountunused > 0) o
  JOIN entity c ON c.id = o.customer__id
 ORDER BY customer, o.due_date

04

Appears in

ReportReceivables

Open receivables

Screenshot of the Open receivables report in HiScale Advanced Reports, filled with fictional sample data
Sample preview, fictional dataOpen image full size (opens in a new tab)