Sample output from the Customer Payment Behavior Analyzer prompt in the NetSuite AI Prompt Library, run against a NetSuite test account. Every name and number here is test data. Back to the post · The library

Credit and collections · NetSuite TD3016323

Customer Payment Behavior Analysis

Payment timing, DSO, aging concentration, and collections priority for the receivables portfolio, from live invoice and payment data.

Prepared 2026-09-23 · Scope: all subsidiaries, invoices dated after 2024-09-23 · Source: NetSuite via SuiteQL · Prompt: Customer Payment Behavior Analyzer, NetSuite AI Prompt Library v1 · Standard Review depth

Executive Summary

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.

Open receivables
$927,459
38 open invoices
Past due over 30 days
85%
$792,262
Portfolio DSO
175 days
open AR / trailing 12-month invoicing x 365
Net-30 on-time rate
99.6%
246 settled invoices, avg 28 days early
Data integrity flag (G1-001). The general ledger Accounts Receivable balance is $2,169,529, against $927,459 of open invoices. The $1.24M difference is not invoice activity; it is consistent with journal entries posted directly to the receivables account. This analysis is built from invoices and payment applications, which is the correct basis for payment behavior, but the GL balance should be reconciled separately before the aging is used in reporting.

Payment Behavior Scorecard

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.

CustomerAR balanceDSOOn-time %Over 60 daysRiskAction
Global Information$110,579365no paid invoices$110,579HighEscalate: no payment history, >180 days. Credit hold review and demand letter.
Red Rivers Consulting$102,906365no paid invoices$102,906HighDirect outreach this week; confirm invoice receipt and dispute status.
Magna Tech Limited$97,942365no paid invoices$0WatchCollections call; confirm expected payment date.
Falcon Systems$86,007365no paid invoices$86,007HighDirect outreach this week; confirm invoice receipt and dispute status.
Mercury Co.$80,079n/ano paid invoices$80,079HighEscalate: no payment history, >180 days. Credit hold review and demand letter.
Gotter inc.$68,119365no paid invoices$68,119HighEscalate: no payment history, >180 days. Credit hold review and demand letter.
Blockster Inc.$53,424349100%$53,424HighCollections call; confirm expected payment date.
Haskell Associates$43,941365no paid invoices$43,941HighEscalate: no payment history, >180 days. Credit hold review and demand letter.
Macgruber Incorporated$35,372247no paid invoices$0GoodMonitor; within terms.
John G. Roche Opticians$31,810365no paid invoices$31,810HighDirect outreach this week; confirm invoice receipt and dispute status.
Informics International$29,239365no paid invoices$29,239HighDirect outreach this week; confirm invoice receipt and dispute status.
Greenwood Consulting$26,275365no paid invoices$0WatchCollections call; confirm expected payment date.
Marshall Industries$25,35583100%$0GoodMonitor; within terms.
Heidelberg Haus$22,474365no paid invoices$0WatchCollections call; confirm expected payment date.
Dazzlesphere Company$20,054365no paid invoices$0WatchCollections call; confirm expected payment date.
Pineapple Republic$15,68741100%$0GoodMonitor; within terms.
Design Excellence Ltd.$13,84234100%$0GoodMonitor; within terms.
Davis Supplies$12,44743100%$0GoodMonitor; within terms.
Panaderia Co.$11,30231100%$0GoodMonitor; within terms.
Hugo Limited$6,17148100%$0GoodMonitor; 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.

DSO Analysis

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.

0d10d20d30d40d2024-Q42025-Q12025-Q22025-Q32025-Q42026-Q12026-Q22026-Q3Net-30 invoices: avg days paid before due

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 Analysis

Aging buckets: days between the invoice due date and 2026-09-23. Current means not yet due.

Current$129,0071-30 days$6,19131-60 days$176,24661-90 days$143,890Over 90 days$472,126
BucketBalanceShare
Current$129,00713.9%
1-30 days$6,1910.7%
31-60 days$176,24619.0%
61-90 days$143,89015.5%
Over 90 days$472,12650.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.

Global Information$110,579Red Rivers Consulting$102,906Magna Tech Limited$97,942Falcon Systems$86,007Mercury Co.$80,079Gotter inc.$68,119Blockster Inc.$53,424Haskell Associates$43,941Macgruber Incorporated$35,372John G. Roche Opticians$31,810Informics International$29,239Greenwood Consulting$26,275

Collections Priority

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.

#CustomerBalancePast due >60Oldest (days)ScoreRecommended action
1Mercury Co.$80,079$80,079460100Escalate: no payment history, >180 days. Credit hold review and demand letter.
2Global Information$110,579$110,579262100Escalate: no payment history, >180 days. Credit hold review and demand letter.
3Gotter inc.$68,119$68,119256100Escalate: no payment history, >180 days. Credit hold review and demand letter.
4Red Rivers Consulting$102,906$102,906155100Direct outreach this week; confirm invoice receipt and dispute status.
5Haskell Associates$43,941$43,941328100Escalate: no payment history, >180 days. Credit hold review and demand letter.
6Falcon Systems$86,007$86,00783100Direct outreach this week; confirm invoice receipt and dispute status.
7Informics International$29,239$29,23915260Direct outreach this week; confirm invoice receipt and dispute status.
8Blockster Inc.$53,424$53,4248170Collections call; confirm expected payment date.
9John G. Roche Opticians$31,810$31,81013058Direct outreach this week; confirm invoice receipt and dispute status.
10Ghetti Ltd$2,741$2,74128860Escalate: no payment history, >180 days. Credit hold review and demand letter.
11Schmidt & Sons Consulting$1,770$1,77041384Escalate: no payment history, >180 days. Credit hold review and demand letter.
12Macomb Industries$4,459$4,4596117Direct outreach this week; confirm invoice receipt and dispute status.

30 / 60 / 90 day framing

Appendix: Data Lineage

IDTypeNameHandleScopeUsed forComplete
DL-001SuiteQLInvoicestransaction (CustInvc, posting)Last 24 months, 764 rowsPopulation, termsYes
DL-002SuiteQLPayment applicationsnexttransactionlinelink (linktype Payment)737 applications to 737 invoicesDays to payYes
DL-003SuiteQLOpen invoicestransaction, foreignamountunpaid > 038 rows on 2026-09-23Aging, DSOYes
DL-004SuiteQLCustomerscustomer, term273 active customersTerms, credit limitsYes
DL-005SuiteQLGL receivablestransactionaccountingline, AcctRecAll postedControl totalYes, 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.

Queries
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

Appendix: Assumptions and Verification

AssumptionCategoryRationaleSensitivityImpact if wrong
Last application date is the payment dateData737 of 737 settled invoices had a single applicationLowDays to pay
On time = paid on or before due dateBusiness logicStandard definitionLowOn-time %
Over 60 days past due = severely past dueBusiness logicPrompt thresholdMediumRisk classification
DSO = open AR / trailing 12-month invoicing x 365MethodCountback not possible without monthly AR snapshotsMediumDSO level, not ranking
Due-on-receipt invoices excluded from net-30 statisticsMethodDifferent population (retail)LowB2B averages
TestObjectiveResult
G1-001Open invoices reconcile to GL receivablesFail $927,460 vs $2,169,529; difference attributed to journal postings, disclosed above
G1-002Payment linkage validPass every settled invoice has an application; no settled invoice lacks one
G1-003Date fields populatedPass due date present on all 764 invoices
G2-001Days-to-pay arithmeticPass computed in code from dates, spot-checked on 5 invoices
G2-002Aging buckets sum to totalPass 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).

Analysis is read-only and derived from live SuiteQL. Customer- and vendor-specific actions require human review before any account change.SuiteStep, LLC