Credit and collections · NetSuite TD3016323
Payment timing, DSO, aging concentration, and collections priority for the receivables portfolio, from live invoice and payment data.
The receivables portfolio has two populations that behave nothing alike. Customers who pay, pay early: the 246 net-30 invoices settled in the last 24 months were paid an average of 28 days before their due date, 99.6% on time, with no partial payments. Customers who don't pay, don't pay at all: 14 customers hold $562,592 of open balances, none of them has a single settled invoice in 24 months, and the oldest item is 460 days past due.
That split is the finding. Open receivables total $927,459, and 85.4% of it is more than 30 days past due. Half of the open balance ($472,126) is past 90 days. Payment behavior among active payers gives no early warning, because the accounts at risk never entered the paying population. Collections effort should be concentrated on the 14 never-paid accounts, starting with the four above $80,000.
Risk based on: open balance more than 60 days past due, presence of a payment history, and age of the oldest open item. Customers are sorted by open balance. "No paid invoices" means no invoice for that customer was settled in the 24-month window.
| Customer | AR balance | DSO | On-time % | Over 60 days | Risk | Action |
|---|---|---|---|---|---|---|
| Global Information | $110,579 | 365 | no paid invoices | $110,579 | High | Escalate: no payment history, >180 days. Credit hold review and demand letter. |
| Red Rivers Consulting | $102,906 | 365 | no paid invoices | $102,906 | High | Direct outreach this week; confirm invoice receipt and dispute status. |
| Magna Tech Limited | $97,942 | 365 | no paid invoices | $0 | Watch | Collections call; confirm expected payment date. |
| Falcon Systems | $86,007 | 365 | no paid invoices | $86,007 | High | Direct outreach this week; confirm invoice receipt and dispute status. |
| Mercury Co. | $80,079 | n/a | no paid invoices | $80,079 | High | Escalate: no payment history, >180 days. Credit hold review and demand letter. |
| Gotter inc. | $68,119 | 365 | no paid invoices | $68,119 | High | Escalate: no payment history, >180 days. Credit hold review and demand letter. |
| Blockster Inc. | $53,424 | 349 | 100% | $53,424 | High | Collections call; confirm expected payment date. |
| Haskell Associates | $43,941 | 365 | no paid invoices | $43,941 | High | Escalate: no payment history, >180 days. Credit hold review and demand letter. |
| Macgruber Incorporated | $35,372 | 247 | no paid invoices | $0 | Good | Monitor; within terms. |
| John G. Roche Opticians | $31,810 | 365 | no paid invoices | $31,810 | High | Direct outreach this week; confirm invoice receipt and dispute status. |
| Informics International | $29,239 | 365 | no paid invoices | $29,239 | High | Direct outreach this week; confirm invoice receipt and dispute status. |
| Greenwood Consulting | $26,275 | 365 | no paid invoices | $0 | Watch | Collections call; confirm expected payment date. |
| Marshall Industries | $25,355 | 83 | 100% | $0 | Good | Monitor; within terms. |
| Heidelberg Haus | $22,474 | 365 | no paid invoices | $0 | Watch | Collections call; confirm expected payment date. |
| Dazzlesphere Company | $20,054 | 365 | no paid invoices | $0 | Watch | Collections call; confirm expected payment date. |
| Pineapple Republic | $15,687 | 41 | 100% | $0 | Good | Monitor; within terms. |
| Design Excellence Ltd. | $13,842 | 34 | 100% | $0 | Good | Monitor; within terms. |
| Davis Supplies | $12,447 | 43 | 100% | $0 | Good | Monitor; within terms. |
| Panaderia Co. | $11,302 | 31 | 100% | $0 | Good | Monitor; within terms. |
| Hugo Limited | $6,171 | 48 | 100% | $0 | Good | Monitor; within terms. |
DSO per customer = open balance / trailing 12-month invoiced x 365, capped at 365 when the customer had no invoicing in the window.
Calculated using: open invoice balances on 2026-09-23 divided by invoices raised in the trailing twelve months, times 365. Portfolio DSO is 175 days against 30-day terms, which is well past the "concern" threshold of terms plus 30. But the number is misleading if read as typical customer behavior. Among customers with a settled invoice, days to pay averaged 2.1 days on net-30 terms. The portfolio DSO is driven almost entirely by balances from customers who have never paid.
The trend among paying customers is stable. Net-30 invoices were paid about 30 days early in every quarter through the first quarter of 2026, then about 23 days early in the second and third quarters. That is a shift of a week, still comfortably inside terms, and worth a note rather than an action.
Retail cash-terms invoices (480 due on receipt) were paid the same day in 92.3% of cases and within a day otherwise. They are excluded from the net-30 statistics above so that they don't flatter the B2B numbers.
Aging buckets: days between the invoice due date and 2026-09-23. Current means not yet due.
| Bucket | Balance | Share |
|---|---|---|
| Current | $129,007 | 13.9% |
| 1-30 days | $6,191 | 0.7% |
| 31-60 days | $176,246 | 19.0% |
| 61-90 days | $143,890 | 15.5% |
| Over 90 days | $472,126 | 50.9% |
The aging is concentrated in a small number of accounts. The twelve largest open balances account for 83% of receivables. Red bars are customers with no payment history; blue bars are customers who have paid before.
Priority score: past-due balance over 60 days weighted by the age of the oldest item. All customer-specific actions below require human review before any account hold, credit change, or write-off.
| # | Customer | Balance | Past due >60 | Oldest (days) | Score | Recommended action |
|---|---|---|---|---|---|---|
| 1 | Mercury Co. | $80,079 | $80,079 | 460 | 100 | Escalate: no payment history, >180 days. Credit hold review and demand letter. |
| 2 | Global Information | $110,579 | $110,579 | 262 | 100 | Escalate: no payment history, >180 days. Credit hold review and demand letter. |
| 3 | Gotter inc. | $68,119 | $68,119 | 256 | 100 | Escalate: no payment history, >180 days. Credit hold review and demand letter. |
| 4 | Red Rivers Consulting | $102,906 | $102,906 | 155 | 100 | Direct outreach this week; confirm invoice receipt and dispute status. |
| 5 | Haskell Associates | $43,941 | $43,941 | 328 | 100 | Escalate: no payment history, >180 days. Credit hold review and demand letter. |
| 6 | Falcon Systems | $86,007 | $86,007 | 83 | 100 | Direct outreach this week; confirm invoice receipt and dispute status. |
| 7 | Informics International | $29,239 | $29,239 | 152 | 60 | Direct outreach this week; confirm invoice receipt and dispute status. |
| 8 | Blockster Inc. | $53,424 | $53,424 | 81 | 70 | Collections call; confirm expected payment date. |
| 9 | John G. Roche Opticians | $31,810 | $31,810 | 130 | 58 | Direct outreach this week; confirm invoice receipt and dispute status. |
| 10 | Ghetti Ltd | $2,741 | $2,741 | 288 | 60 | Escalate: no payment history, >180 days. Credit hold review and demand letter. |
| 11 | Schmidt & Sons Consulting | $1,770 | $1,770 | 413 | 84 | Escalate: no payment history, >180 days. Credit hold review and demand letter. |
| 12 | Macomb Industries | $4,459 | $4,459 | 61 | 17 | Direct outreach this week; confirm invoice receipt and dispute status. |
| ID | Type | Name | Handle | Scope | Used for | Complete |
|---|---|---|---|---|---|---|
| DL-001 | SuiteQL | Invoices | transaction (CustInvc, posting) | Last 24 months, 764 rows | Population, terms | Yes |
| DL-002 | SuiteQL | Payment applications | nexttransactionlinelink (linktype Payment) | 737 applications to 737 invoices | Days to pay | Yes |
| DL-003 | SuiteQL | Open invoices | transaction, foreignamountunpaid > 0 | 38 rows on 2026-09-23 | Aging, DSO | Yes |
| DL-004 | SuiteQL | Customers | customer, term | 273 active customers | Terms, credit limits | Yes |
| DL-005 | SuiteQL | GL receivables | transactionaccountingline, AcctRec | All posted | Control total | Yes, does not reconcile |
Adaptations from the prompt's query templates, made to run in this account: the invoice-to-payment link is nexttransactionlinelink rather than createdfrom on the payment header, which is not populated for payments; the open balance column is foreignamountunpaid, since foreignamountremaining is not exposed to SuiteQL; and transaction.subsidiary is not exposed, so subsidiary filtering was not applied. Days to pay uses the date of the last payment application against each invoice.
SELECT inv.id, inv.tranid, inv.entity, inv.trandate, inv.duedate, inv.foreigntotal, inv.foreignamountunpaid,
pay.id AS payment_id, pay.trandate AS pay_date, ntl.foreignamount AS applied
FROM transaction inv
JOIN nexttransactionlinelink ntl ON ntl.previousdoc = inv.id AND ntl.linktype = 'Payment'
JOIN transaction pay ON pay.id = ntl.nextdoc AND pay.type = 'CustPymt'
WHERE inv.type = 'CustInvc' AND inv.posting = 'T' AND inv.trandate >= ADD_MONTHS(SYSDATE, -24)
SELECT id, tranid, entity, trandate, duedate, foreigntotal, foreignamountunpaid, TRUNC(SYSDATE) - TRUNC(duedate) AS days_past_due
FROM transaction WHERE type = 'CustInvc' AND posting = 'T' AND foreignamountunpaid > 0
SELECT c.id, c.entityid, c.companyname, c.creditlimit, BUILTIN.DF(c.terms), t.daysuntilnetdue
FROM customer c LEFT JOIN term t ON t.id = c.terms WHERE c.isinactive = 'F'
SELECT entity, COUNT(*), SUM(foreigntotal) FROM transaction
WHERE type = 'CustInvc' AND posting = 'T' AND trandate >= ADD_MONTHS(SYSDATE, -12) GROUP BY entity
SELECT a.acctnumber, a.fullname, SUM(tal.amount) FROM transactionaccountingline tal
JOIN transaction t ON t.id = tal.transaction JOIN account a ON a.id = tal.account
WHERE tal.posting = 'T' AND a.accttype = 'AcctRec' GROUP BY a.acctnumber, a.fullname| Assumption | Category | Rationale | Sensitivity | Impact if wrong |
|---|---|---|---|---|
| Last application date is the payment date | Data | 737 of 737 settled invoices had a single application | Low | Days to pay |
| On time = paid on or before due date | Business logic | Standard definition | Low | On-time % |
| Over 60 days past due = severely past due | Business logic | Prompt threshold | Medium | Risk classification |
| DSO = open AR / trailing 12-month invoicing x 365 | Method | Countback not possible without monthly AR snapshots | Medium | DSO level, not ranking |
| Due-on-receipt invoices excluded from net-30 statistics | Method | Different population (retail) | Low | B2B averages |
| Test | Objective | Result |
|---|---|---|
| G1-001 | Open invoices reconcile to GL receivables | Fail $927,460 vs $2,169,529; difference attributed to journal postings, disclosed above |
| G1-002 | Payment linkage valid | Pass every settled invoice has an application; no settled invoice lacks one |
| G1-003 | Date fields populated | Pass due date present on all 764 invoices |
| G2-001 | Days-to-pay arithmetic | Pass computed in code from dates, spot-checked on 5 invoices |
| G2-002 | Aging buckets sum to total | Pass buckets sum to $927,460 |
Confidence: 90% that net-30 customers pay about four weeks early (full payment history); 85% that the never-paid accounts represent collection risk rather than data entry gaps (no payment applications, but the GL discrepancy shows journals touch receivables and a manual review of those accounts is required).