Sample output from the KPI Dashboard Generator 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

Performance measurement · NetSuite TD3016323

KPI Dashboard

Financial, operational, customer, and efficiency KPIs for the trailing twelve months, with definitions, thresholds, and the one metric in the concern band.

Prepared 2026-09-23 · Consolidated, subsidiaries 1 to 3, elimination excluded · Source: NetSuite general ledger and transactions via SuiteQL · Prompt: KPI Dashboard Generator, NetSuite AI Prompt Library v1 · Standard Review depth

KPI Dashboard Summary

Scope: Standard Review, multi-category KPIs, trailing twelve months to September 23, 2026, consolidated across the three operating subsidiaries with the elimination entity excluded. September is a partial month and is shown but not used in any trailing figure that would be distorted by it.

Three things stand out. Profitability is healthy and improving: operating margin ran between 8% and 9% through the autumn of 2025 and has run between 15% and 19% since May 2026, on revenue that is up 24% year on year for August. Liquidity is strong to the point of being idle, with a current ratio of 4.6 and $2.6M in the bank. And receivables are the problem: DSO is 175 days against 30-day terms, which is the one KPI on the dashboard in the concern band, and the cash conversion cycle it produces is 251 days.

TTM revenue
$12,244,025
Aug 2026 vs Aug 2025 +24%
Gross margin
39.5%
trailing twelve months
Operating margin
13.4%
$1,638,077 operating income
DSO
175 days
30-day terms
Two data qualifications. First, 84% of recognized income in a recent quarter was posted by journal entry rather than by invoices or cash sales (the billing-document revenue is shown separately in the operational section below). The margin KPIs take the ledger as posted. Second, the general ledger receivables balance is $2.17M against $927K of open invoices; DSO uses the open invoices, which is the correct basis for the metric, but the GL balance should be reconciled before either figure is reported externally.

Metric Definitions and Current Values

KPIValueThreshold (from the prompt)Status
Revenue growth, Aug 2026 vs Aug 2025+24.4%> 15% strong, 5 to 15 acceptableStrong
Gross margin, trailing twelve months39.5%> 40% strong, 25 to 40 acceptableAcceptable
Operating margin, trailing twelve months13.4%no prompt threshold; shown for contextContext
DSO175 days< 30 strong, 30 to 45 acceptableConcern
DPO29 daysno prompt thresholdContext
Inventory turns3.5x105 days of inventoryContext
Current ratio4.56> 2.0 strong, 1.5 to 2.0 acceptableStrong
Quick ratio3.10no prompt thresholdContext
Active customers, trailing twelve months107of 273 customer recordsContext
Revenue per active customer$18,080invoiced revenue basisContext

Calculated using: revenue, cost of goods sold, and operating expense are posted GL amounts by posting period; gross margin = (revenue less COGS) / revenue; operating margin = (gross profit less operating expense less other expense) / revenue; DSO = open invoice balances / (trailing twelve-month invoicing / 365); DPO = open vendor bills / (trailing twelve-month bills / 365); inventory turns = trailing twelve-month COGS / inventory asset balance; current ratio = (bank + receivables + other current assets) / (payables + other current liabilities); quick ratio excludes other current assets. Revenue growth compares August 2026 with August 2025 because the extract begins in August 2025.

Financial KPIs by Month

MonthRevenueGross marginOperating expenseOperating incomeOperating margin
Aug 2025$889,06135.2%$232,122$79,1448.9%
Sep 2025$953,18636.8%$221,945$126,90513.3%
Oct 2025$955,92135.6%$258,874$79,1068.3%
Nov 2025$940,87436.4%$262,069$78,3948.3%
Dec 2025$1,047,37349.6%$282,197$234,62522.4%
Jan 2026$911,04137.9%$271,492$71,7127.9%
Feb 2026$906,91639.4%$277,202$77,4778.5%
Mar 2026$1,035,77745.6%$274,210$195,22218.8%
Apr 2026$971,98039.3%$265,462$113,93011.7%
May 2026$1,067,15140.0%$255,321$169,24215.9%
Jun 2026$1,090,88738.4%$252,090$165,08315.1%
Jul 2026$1,148,11440.5%$241,609$222,02419.3%
Aug 2026$1,106,33938.5%$241,828$182,09616.5%
Sep 2026$1,061,65332.0%$287,596$49,1664.6%

September 2026 is a partial month. Cost of goods sold has posted ahead of the month's revenue, which is why its margins are the lowest on the table; they will recover as the month closes.

0%15%30%45%60%Aug’25Sep’25Oct’25Nov’25Dec’25Jan’26Feb’26Mar’26Apr’26May’26Jun’26Jul’26Aug’26Sep’26Gross margin %Operating margin %

Gross margin is stable in a 35% to 40% band, with two months above 45% (December 2025 and March 2026) where cost of goods sold dipped without a matching dip in revenue. Operating expense has been flat at roughly $240,000 to $280,000 a month for the whole period. Every point of operating margin improvement since the spring is therefore revenue growth against a fixed cost base, which is the healthiest kind.

Operational and Customer KPIs

The figures below use billing documents only, invoices and cash sales, and so exclude the journal-posted income noted above. They describe the transactional business.

MonthInvoicesBilled revenueBilled customersSales ordersAverage order value
2025-1029$91,5135829$2,973
2025-1131$84,9335930$2,550
2025-1232$265,2705929$2,738
2026-0132$81,0386032$2,270
2026-0231$95,0755931$2,867
2026-0334$226,2316032$2,744
2026-0434$127,1826131$2,799
2026-0525$203,8805224$4,566
2026-0636$218,6766234$4,708
2026-0747$254,1226845$2,758
2026-0845$195,5986643$2,800
2026-0928$143,0946058$3,650
2025-10$91,5132025-11$84,9332025-12$265,2702026-01$81,0382026-02$95,0752026-03$226,2312026-04$127,1822026-05$203,8802026-06$218,6762026-07$254,1222026-08$195,5982026-09$143,094

Billed revenue has roughly doubled over the year, from about $85,000 a month in the autumn of 2025 to $190,000 to $250,000 a month in the summer of 2026, with the customer count per month rising from around 30 to the mid-40s. Average order value moved from the $2,300 to $2,900 range to above $4,500 in May and June before settling near $2,800, which points to a few large orders rather than a price change.

Customer base. 273 active customer records, of which 107 were billed in the trailing twelve months and 166 (61%) were not. Revenue per active customer is $18,080 on an invoiced basis. The prompt's "new customers in twelve months" metric returns all 273 records, because every customer record in the account was created within the year; the metric is not informative here and is reported rather than interpreted.

Liquidity and Efficiency

Balance sheet lineBalance
Bank$2,642,083
Accounts receivable (GL)$2,170,035
Other current assets, mostly inventory$2,263,004
Current assets$7,075,122
Accounts payable$1,278,301
Other current liabilities$272,361
Current liabilities$1,550,662

Working capital is $5,524,460. The current ratio of 4.56 is more than twice the prompt's "strong" threshold; a business holding two years of operating expense in current assets is safe, but it is also not putting its balance sheet to work. The cash conversion cycle, 175 days of receivables plus 105 days of inventory less 29 days of payables, is 251 days, and receivables are two-thirds of it.

Trend Analysis and Targets

No budget data exists in the account, so target-versus-actual is not available and the prompt's thresholds serve as targets instead. Against those: gross margin sits just below the 40% "strong" line and has for a year, with no trend; operating margin has stepped up and held; DSO is far outside the acceptable band and the driver is a small number of accounts that have never paid, not a general slowing of collections; liquidity is well above target.

30 / 60 / 90 day framing

Appendix: Data Lineage

IDTypeNameHandleScopeUsed forComplete
DL-001SuiteQLMonthly P&L by account typetransactionaccountingline join account, accountingperiodAug 2025 to Sep 2026, subsidiaries 1 to 3Revenue, marginsYes
DL-002SuiteQLBilling activitytransaction (CustInvc, CashSale, SalesOrd) by monthTrailing 12 monthsOperational KPIsYes
DL-003SuiteQLBalance sheet by account typetransactionaccountingline join accountCumulative to dateLiquidity ratiosYes
DL-004SuiteQLOpen balances and customer countstransaction, customerCurrentDSO, DPO, customer KPIsYes
DL-005SuiteQLInventory and COGStransactionaccountingline join accountCurrent and trailing 12 monthsInventory turnsYes

Adaptations from the prompt's templates: the profitability query uses transactionaccountingline and the posting period rather than transactionline.amount and the transaction date, so that months match the ledger; the efficiency query's customer.balance and vendor.balance were replaced by open invoice and bill balances from foreignamountunpaid, and its accountingperiod.currentbalance join, which does not exist, by cumulative posting sums; transaction.subsidiary is not exposed, so the elimination entity is excluded through the line; the account has no budget table.

Queries
SELECT ap.periodname, ap.startdate, a.accttype, SUM(-tal.amount)
FROM transactionaccountingline tal JOIN transaction t ON t.id = tal.transaction
JOIN transactionline tl ON tl.transaction = tal.transaction AND tl.id = tal.transactionline
JOIN account a ON a.id = tal.account JOIN accountingperiod ap ON ap.id = t.postingperiod
WHERE tal.posting = 'T' AND a.accttype IN ('Income','COGS','Expense','OthIncome','OthExpense') AND tl.subsidiary <> 4 AND ap.startdate >= ADD_MONTHS(SYSDATE, -14)
GROUP BY ap.periodname, ap.startdate, a.accttype

SELECT TO_CHAR(t.trandate, 'YYYY-MM'), t.type, COUNT(*), SUM(t.foreigntotal), COUNT(DISTINCT t.entity)
FROM transaction t WHERE t.type IN ('CustInvc','CashSale','SalesOrd') AND t.trandate >= ADD_MONTHS(SYSDATE, -12) AND t.trandate <= SYSDATE
GROUP BY TO_CHAR(t.trandate, 'YYYY-MM'), t.type

SELECT a.accttype, SUM(tal.amount) FROM transactionaccountingline tal JOIN transaction t ON t.id = tal.transaction
JOIN transactionline tl ON tl.transaction = tal.transaction AND tl.id = tal.transactionline JOIN account a ON a.id = tal.account
WHERE tal.posting = 'T' AND t.trandate <= SYSDATE AND tl.subsidiary <> 4 AND a.accttype IN (balance sheet types) GROUP BY a.accttype

SELECT (SELECT SUM(foreignamountunpaid) FROM transaction WHERE type = 'CustInvc' AND posting = 'T' AND foreignamountunpaid > 0),
       (SELECT SUM(foreignamountunpaid) FROM transaction WHERE type = 'VendBill' AND posting = 'T' AND foreignamountunpaid <> 0),
       (SELECT SUM(foreigntotal) FROM transaction WHERE type = 'VendBill' AND posting = 'T' AND trandate >= ADD_MONTHS(SYSDATE, -12)),
       (SELECT SUM(foreigntotal) FROM transaction WHERE type = 'CustInvc' AND posting = 'T' AND trandate >= ADD_MONTHS(SYSDATE, -12)),
       (SELECT COUNT(*) FROM customer WHERE isinactive = 'F'), (SELECT COUNT(*) FROM customer WHERE isinactive = 'F' AND datecreated >= ADD_MONTHS(SYSDATE, -12)),
       (SELECT COUNT(DISTINCT entity) FROM transaction WHERE type IN ('CustInvc','CashSale') AND posting = 'T' AND trandate >= ADD_MONTHS(SYSDATE, -12))
FROM dual

Appendix: Assumptions and Verification

AssumptionCategoryRationaleSensitivityImpact if wrong
365-day year for DSO and DPOMethodStandardLowDays figures
Posted transactions onlyDataAccuracyMediumAll KPIs
Ledger amounts as posted, including journal-posted incomeBusiness logicThe P&L is what the books sayHighRevenue and margin levels; billing-document view provided
Inventory = other current asset accounts named inventoryMethodChart of accounts namingMediumInventory turns
Elimination entity excludedMethodConsolidationLowTotals
TestObjectiveResult
G1-001Revenue matches P&LPass monthly income sums equal the income statement by period
G1-002Customer count validQualified 273 records, all created within twelve months; the new-customer metric is uninformative
G1-003Balance data currentPass balances cumulative to 2026-09-23
G2-001KPI formulasPass computed in code; formulas stated above
G2-002Trend arithmeticPass month-over-month values foot to the period table

Confidence: 95% in the ledger-based KPIs as posted; 90% in the operational KPIs; 80% in the efficiency KPIs, because the GL receivables balance does not reconcile to open invoices and inventory is identified by account name.

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