Sample output from the Operational Audit Command Center prompt in the Sonar AI Prompt Library, run against a NetSuite test account. Every name and number here is test data. Back to the post · The library
Comprehensive Operational Audit

SuiteStep, LLC

Full-instance operational, financial, and compliance assessment — conducted live against the NetSuite production ledger. Every figure in this report was extracted from system data on the dates noted; nothing is estimated unless explicitly flagged.

Report dateAugust 15, 2026
Period analyzedFY2026 YTD (Jan–Aug) · lookback to 2021
System of recordNetSuite OneWorld — acct TD3016323 (Production)
MethodNS standard reports + SuiteQL forensics + lineage analysis
Confidential — Management Use Only

01Executive Summary

The one-paragraph version, then the numbers.
Bottom line: SuiteStep's day-to-day operations — order capture, store fulfillment, payment application — function well. Its financial governance does not. 84% of reported revenue was posted by journal entry rather than customer transactions, no accounting period has been closed since November 2021, and $228K of collected sales tax across 12 states sits unremitted. Until the ledger is re-baselined, the financial statements cannot support lending, audit, or diligence. The good news: the fixes are largely procedural, the 90-day program is self-funding (~$390–600K identified against ~$30K of external spend), and the underlying business appears genuinely healthy.
GL Revenue YTD
$8.39M
⚠ 84% journal-posted
Transactional Revenue YTD
$1.35M
280 invoices + 363 cash sales
A/R >90 days overdue
$473K
51% of open receivables
Unremitted sales tax
$228K
12 states, accruing since 2024
Last period closed
Nov ’21
5 fiscal years open & mutable
GL vs item-ledger inventory gap
~$1.0M
$2.13M GL vs $1.12M stock records
Cash on hand
$2.60M
Strong liquidity position
90-day opportunity
$390–600K
>10× return on program cost

Operational maturity assessment — 2.1 / 5.0 (Ad-hoc → Repeatable)

Order capture & fulfillment
3.5
Payment application
4.0
Collections & credit
1.5
Procurement
2.5
Inventory management
2.0
Financial close & reporting
1.0
Tax compliance
1.0
Systems & data hygiene
2.5

02Company Profile

Established from live configuration, entity, and transaction data.

Business model

Multi-channel retail / wholesale distributor — apparel (matrix color/size items), beauty, home & decor, electronics. Light assembly/kitting (24 work orders, 9 assemblies). Full order-to-cash and procure-to-pay cycles active.

Channels: 2 retail stores (San Francisco, New York), 2 distribution centers (Los Angeles, Chicago), Miami operation, 3PL and FBA (Amazon) fulfillment nodes.

Structure: NetSuite OneWorld — Parent + 2 operating subsidiaries + elimination entity. Single currency (USD). Calendar fiscal year.

Scale

Employees~50Customers273
Vendors94Items374
All-time transactions~7,9002026 invoices280
2026 cash sales3632026 sales orders312

Primary operational challenge identified: financial-data integrity & compliance risk, followed by working-capital discipline and fulfillment throughput.

03Financial Snapshot

Consolidated, Jan–Aug 2026 — as rendered by NetSuite's Income Statement (report -200) and Balance Sheet (report -202), subsidiary context "Parent Company (Consolidated)".

Income statement (condensed)

LineAmount% Rev
Revenue — Products (4210)$7,810,15893.1%
Revenue — Services (4310)$562,9076.7%
Freight + returns/allowances$15,7520.2%
Total revenue$8,388,817100%
Cost of sales$5,101,96260.8%
Gross profit$3,286,85539.2%
Operating expenses$2,095,31825.0%
Net other income/(expense)($17,297)
Net income$1,174,24014.0%
⚠ These ratios describe the posted books. Because 84% of revenue is journal-driven (Finding 1), re-baseline every ratio after the JE forensics project before using them for decisions.

Balance sheet (condensed)

LineAmount
Cash$2,600,906
Accounts receivable$2,163,312
Inventory (GL)$2,128,262
Prepaids & other current$122,287
Total current assets$7,014,767
Fixed assets, net$11,258
Accounts payable$1,229,000
Sales tax payable (12 states)$228,116
Other accrued$33,584
Total equity$5,535,324
Where reported revenue actually came from (GL, income accounts, Jan–Aug 2026)
84% journals
$7.04M Journal entries (16 JEs)
$1.29M Customer invoices (280)
$0.06M Cash sales (363)

04Top 5 Critical Findings

Ranked by severity × financial exposure. Every figure verified against the live ledger.
Critical · Data Integrity

Finding 1 — The general ledger is journal-driven, not operations-driven

  • $7,036,333 of $8,388,817 YTD revenue (83.9%) was posted by 16 journal entries, not by customer transactions. Genuine transactional revenue: $1,353,245 (280 invoices at $1.29M + 363 cash sales at $63K).
  • Sub-ledgers are systematically bypassed: 51 JEs post directly to A/R (net +$1.239M), 52 to A/P (net −$1.082M), 51 to Inventory-in-Stock (net +$1.007M).
  • Direct consequence: A/R aging carries $1,229,547 under "— No Customer/Project —" and A/P carries $1,038,595 under "— No Vendor —", both predominantly >90 days — ~58% of A/R and ~75% of A/P has no counterparty and can never flow through normal collect/pay workflow.
  • GL inventory exceeds item-level stock records by ~$1.0M — the balance-sheet inventory line is unsupported by the perpetual ledger.
  • Hygiene: 11 of 88 JEs have no memo (including JE160, $85K to A/R); 79 of 88 have no createdby (import/system-created).
Impact: The financial statements are unreliable for decision-making, audit, lending, or diligence. If these are unconverted opening/migration balances they were never cleared; if operational, they mask the real books. This finding is the root cause of Findings 3's symptoms and inflates the apparent P&L by ~6×.
Critical · Compliance

Finding 2 — $228K of sales tax collected across 12 states, essentially none remitted

  • Sales Tax Payable accounts (2305–2344) have accrued credits since 2024: CA $78,411 · NY $57,221 · MA $33,349 · KY $19,003 · IL $11,016 · IN $9,410 · CO $8,536 · TX $6,890 · MI $3,166 · FL $553 · OH $486 · CT $164.
  • Total debits (remittances) across all 12 accounts in ~2.5 years: under $90.
  • Sales tax is trust-fund liability — most states attach penalties of 10–25%, interest, and personal officer liability.
Impact: Principal $228,116 + estimated $40–90K penalties/interest, growing monthly. Voluntary Disclosure Agreements (VDAs) typically waive penalties if initiated before the state initiates contact — this is the most time-sensitive item in the audit.
High · Controls

Finding 3 — The books have not been closed since November 2021

  • Last closed accounting period: Nov 2021 (period id 101). Every period from Dec 2021 through Dec 2029 is open (closed='F') — five fiscal years of GL are mutable by anyone with entry permission.
  • Corroborating date-integrity failures: 19 invoices dated up to 365 days before their shipments (avg −48 days); one shipment dated 24 days before its sales order; Miami shipments systematically backdated (avg −0.75d); one sales order future-dated 2026-09-01.
Impact: Prior-period restatement risk on every historical report; no cutoff assurance; backdating is currently undetectable and unpunishable. Cannot be fixed until Finding 1's JEs are classified — close would lock the errors in.
High · Working Capital

Finding 4 — Collections is bimodal: customers pay in ~2 days, or never

  • Paid 2026 invoices (249) cleared in 2.0 days average (max 19) — payment application works.
  • But 39 open invoices total $928,247, of which $472,913 (51%) is >90 days overdue (max 499 days).
  • Concentration — five accounts hold the bulk: Global Information $110,579 (255d) · Red Rivers Consulting $102,906 (148d) · Magna Tech $97,942 · Falcon Systems $86,007 (75d) · Mercury Co. $80,079 (453d).
  • 100% of overdue A/R sits with the 55 Net-30 wholesale customers; 219 of 274 customers (80%) have no terms assigned. No dunning automation, no enforced credit limits.
  • YTD bad-debt expense recorded: $150 — vs ~$473K of doubtful accounts. Reserves are materially understated.
Impact: $473K of cash at risk of write-off; realistic 90-day recovery with focused effort: $200–350K. The pattern (wholesale invoices with no credit control) will regenerate the problem unless terms + limits + dunning are institutionalized.
Medium · Throughput

Finding 5 — The LA DC ships 11× slower than every other node — and it's the top revenue channel

  • SO→ship cycle by fulfillment location (266 linked 2026 shipments): SF 0.0d · NY 0.0d · Miami same-day · LA DC 11.3d average, max 49 (73 shipments).
  • LA DC is the highest-revenue fulfillment node ($459K YTD) — the bottleneck sits directly on the money channel.
  • 7 sales orders stuck >30 days ($21.3K, oldest SO4143 from May 15); 13 SOs + 4 vendor bills parked in approval queues.
  • 35% of invoice revenue ($478.7K, 33 transactions) carries no location dimension — channel P&L is blind for a third of the wholesale book.
Impact: Wholesale customers experiencing 11-day (worst-case 49-day) fulfillment are churn risks; ~$14K/month of orders sit as WIP. Root-cause candidates: pick/pack staffing, wave scheduling, or stock availability — a one-week floor study will isolate it.

05Order-to-Cash Value Stream

Cycle times derived from 266 shipment↔SO pairs and 256 ship↔invoice pairs via line-level createdfrom lineage.
SO → shipment cycle time by location (avg days)
LA DC (73 ships)
11.3d · max 49
SF Store (92)
0.0d
NY Store (69)
0.0d
Miami (32)
−0.75d ⚠

Miami's negative average = systematically backdated shipment records (a Finding-3 symptom, not physics).

Open A/R aging (39 invoices · $928K)
Current
$133,364
1–30 overdue
$123,385
31–60
$59,153
61–90
$139,431
>90 overdue
$472,913

Excludes the $1.23M "No Customer" journal balance (Finding 1), which is unageable and uncollectible through workflow.

Channel economics — 2026 transactional revenue ($1.36M)

ChannelTxnsRevenueAOVShareRead
No location assigned ⚠33$478,740$14,50735.3%Large wholesale invoices, dimension missing
LA Distribution Center83$459,020$5,53033.9%Core wholesale — and the fulfillment bottleneck
Miami31$312,769$10,08923.1%Wholesale
SF Store312$66,144$2124.9%High volume, tiny tickets
NY Store220$38,551$1752.8%High volume, tiny tickets
Total679$1,355,224100%Wholesale ≈ 92% of revenue

The two retail stores generate 78% of transaction volume for 8% of revenue. Once the GL is trustworthy, store-level labor/rent allocation deserves a hard look (see Strategic roadmap).

Other O2C metrics

DSO — paying customers
2.0d
249 paid invoices, max 19d
Effective DSO — book
94d+
vs 30–45d benchmark
Return rate
0.03%
4 RAs, $464 — or under-captured
Stuck SOs >30d
7
$21.3K, oldest May 15 (SO4143)

06Procure-to-Pay

2026 billed spend: $1,794,815 across 31 active vendors (of 94 on file).
Vendor spend concentration — 7 vendors = 80% of spend
Generation N
$430,917
Bedline
$309,024
Broyhill
$200,751
The Apparel Co
$186,797
FrisCo US
$168,872
Davidson Leasing
$120,000
Dell US
$64,571

Top-1 = 24% of spend; top-7 = 82.5% (cumulative). High concentration = negotiating leverage and supply risk — Generation N also carries a $342K aged payable.

The working-capital giveaway

DPO (394 paid bills)
3.2d
Company pays vendors in 3 days…
Effective customer wait
90d+
…while its own book ages past 90

Simply paying vendors to terms (Net 30) instead of within 3 days frees ~$135K of cash permanently at the current ~$1.8M annualized spend — zero negotiation required, one AP policy memo.

Queue health

Open POs (pending receipt / partial / pending bill)2 / 14 / 19
Vendor bills pending approval (status D)4
Sales orders pending approval (status A)13
Received-not-billed accrual (acct 2220)$30,704
Security: custom field custentity_ps_password stores plain-text credentials on vendor records. Previously flagged; still open. Purge and replace with a secrets-appropriate integration pattern.

07Inventory

Item-ledger positions from aggregateitemlocation; GL from Balance Sheet.
On-hand value by location (item ledger · $1.12M total)
LA DC
$356,610
SF Store
$308,930
Miami
$212,069
NY Store
$200,969
Chicago DC
$42,520

Clean: zero value stranded in Quarantine, Return-to-Vendor, or In-Transit locations.

Three structural problems

  • The $1.0M gap. GL inventory $2.13M vs item ledger $1.12M — the difference is the 51 inventory journals (Finding 1). The balance-sheet line is unsupported by stock records.
  • Stores are drowning in stock. SF + NY hold $510K of inventory against $105K of YTD store revenue — ≈2.9 years of supply at current sell-through (~60% COGS assumption). Target <6 months; frees $300–400K one-time.
  • Dead stock. 48 items ($40,855) have on-hand quantity but zero sales lines in 180 days — markdown/liquidation candidates.

Chicago DC holds just $42.5K of stock while presumably carrying DC-class overhead — consolidate into LA/3PL or give it a mission (validate lease terms first).

08Controls & Compliance Matrix

Tested against live data — each verdict traces to a query in the appendix.
ControlVerdictEvidence
Period close disciplineFailNothing closed since Nov 2021; Dec 2021–Dec 2029 all open
Sub-ledger integrity (A/R, A/P, Inventory)Fail51 / 52 / 51 journals posted directly to each control account
Sales tax remittanceFail$228K accrued across 12 states; <$90 of debits in ~2.5 years
Transaction date integrityFail19 pre-dated invoices (to −365d); shipment before SO; backdated Miami ships
Bad-debt reservingFail$150 YTD expense vs ~$473K doubtful accounts
Credential hygieneFailPlain-text passwords in custentity_ps_password on vendor records
JE documentationWeak11/88 memo-less (incl. $85K JE160); 79/88 unattributed
Approval workflow throughputPartialQueues exist; 13 SOs + 4 bills parked without SLA
Duplicate entity preventionPass0 exact-name duplicates across customers and vendors
Payment applicationPass0 unapplied customer payments or credits; 746 payments fully applied
Customer credit balancesPass0 customers with net credit A/R from open documents

09Prioritized Action Plan

Sequenced for dependency: tax triage and JE forensics unlock everything else.
Phase 1 — Quick Wins 0–90 DAYS · TARGET $390–600K
#ActionOwnerImpactEffort
1Sales-tax triage — engage SALT advisor; VDAs starting with CA, NY, MA, KYCFO$40–90K penalties avoided; caps growthLow-Med
2Collections blitz on top-5 overdue ($478K); credit-hold everything >60dController$200–350K cashLow
3JE forensics — classify 16 revenue + ~154 sub-ledger JEs; reverse/reclass through proper transactionsController + NS adminRestores statement reliabilityMed
4Close periods Dec 2021 → Jun 2026 post-cleanup; monthly close calendar + checklistCFOLocks GL; ends backdatingLow
5LA DC root-cause — one-week floor study: staffing / wave scheduling / availabilityOpsProtects #1 channel; ~$14K/mo WIPLow
6Pay vendors to terms — stop the 3-day payment habitAP~$135K permanent cash releaseLow
7Make location + terms mandatory on invoices; assign terms to 219 no-terms customersNS adminRestores channel P&L visibilityLow
8Purge plain-text credentials (custentity_ps_password)NS adminCloses security holeLow
Phase 2 — Medium-Term Initiatives 3–12 MONTHS · TARGET $500–750K ADDITIONAL
InitiativeImpact
Dunning automation (native NS Dunning SuiteApp) + enforced credit limits; aging-based reserve policy; DSO target <40Prevents regeneration of the $473K problem
Vendor consolidation & renegotiation — Net 30–45 terms and volume pricing across the top 7 (82% of spend)$35–70K/yr
Retail inventory right-sizing — stores from ~2.9 yrs to <6 months of supply; liquidate 48 dead items$300–400K one-time + $15–25K
Chicago DC decision — consolidate into LA/3PL or repurpose (validate lease)$50–150K/yr
Approval SLA dashboards — saved searches + scheduled alerts for items parked >5 daysQueue hygiene
Close automation — bank-feed reconciliation, JE approval workflow with mandatory memo + attachmentSustains Finding-3 fix
Phase 3 — Strategic Transformations 12+ MONTHS
  • Channel strategy reset. With clean data, confront store economics (8% of revenue, 78% of transactions, $510K of stock) vs wholesale/FBA/3PL expansion. The data says the future is wholesale-led.
  • Demand planning activation. NS demand-planning reports exist in this account but appear unused — activate for the DC network to prevent the next dead-stock cycle.
  • Working-capital program. Cash-conversion-cycle target <45 days (currently structurally unmeasurable due to Finding 1; directionally 90+).
  • Audit/diligence readiness. If a credit facility or transaction is contemplated, the books must first survive Findings 1–3 remediation. Plan 2 quarters of clean closes before any external process.

10Financial Impact Model

Conservative point estimates; confidence reflects data quality behind each number.
Opportunity90-day12-monthTypeConfidence
Collections recovery (top-5 + blitz)$200–350K+$100KCash, one-timeHigh
Vendor payment terms (DPO 3→30)$135KpermanentCash, structuralHigh
Sales-tax penalty avoidance via VDA$40–90Kstops accrualAvoidanceHigh
Dead-stock liquidation (48 items)$15–25KCash, one-timeHigh
Retail inventory right-sizing$300–400KCash, one-timeMedium
Vendor renegotiation (top 7)$35–70K/yrP&L, recurringMedium
Chicago DC rationalization$50–150K/yrP&L, recurringLow-Med
Total identified~$390–600K~$500–750K additionalvs ~$30K external advisory + internal time → >10× 90-day return

Payback on every Phase-1 item is under 90 days. The largest unquantified upside — reliable financial statements — is a precondition for any credit facility, audit, or exit and is treated here as priceless rather than priced.

11Methodology & Data Sources

How every number in this report was produced.

Data sources (all live, production)

SourceUsed for
NS Income Statement (report -200), consolidated, TFYTP presetP&L — period verified via rendered header "From Jan 2026 to Aug 2026"
NS Balance Sheet (report -202), consolidatedBalance sheet as of Aug 2026 period-end
NS A/R Aging Summary (274) / A/P Aging Summary (286)Agings as rendered "As of July 31, 2026" (report default; noted as an assumption)
SuiteQL — transaction, transactionline, transactionaccountingline, account, accountingperiod, customer, vendor, item, aggregateitemlocation, location, termAll cycle-time, aging, concentration, hygiene, and forensic analysis

Approach

  • Financial statements first via NetSuite's own report engine (not SQL reconstructions), consolidated context, with period-filter verification on each run.
  • Three parallel forensic workstreams (read-only research agents): order-to-cash cycle analysis, procure-to-pay & inventory, controls & GL forensics — ~72 queries total.
  • Lineage-based cycle times: the account's nexttransactionlink table is unpopulated for SO→fulfillment, so lineage was derived from shipment-line createdfrom references (266 pairs — robust sample).
  • Cross-verification: revenue reconciled two ways (line sums vs header totals, then GL-by-transaction-type — which is what exposed Finding 1); A/P GL total reconciled to aging within ~5%.
  • Benchmarks are standard mid-market retail/wholesale ranges (APQC-style operating norms), not a paid benchmark subscription — treat as directional.

12Appendix A — Queries & Evidence Trail

Material queries behind each finding. Queries marked ◆ were executed verbatim in the primary session; ◇ are faithful reconstructions of queries executed inside the read-only research workstreams (same logic, results as reported).
◆ Revenue composition by transaction type — the Finding-1 smoking gun
SELECT t.type, COUNT(DISTINCT t.id) AS txns, ROUND(SUM(-tal.amount),0) AS revenue
FROM transactionaccountingline tal
JOIN transaction t ON tal.transaction = t.id
JOIN account a ON tal.account = a.id
WHERE t.posting = 'T' AND a.accttype = 'Income'
  AND t.trandate >= TO_DATE('2026-01-01','YYYY-MM-DD')
  AND t.trandate < TO_DATE('2026-09-01','YYYY-MM-DD')
GROUP BY t.type ORDER BY SUM(-tal.amount) DESC
-- Result: Journal 16 txns $7,036,333 · CustInvc 280 $1,290,378 · CashSale 363 $62,867 · minor others
◇ Journal entries bypassing sub-ledgers (A/R shown; repeated for AcctPay and Inventory)
SELECT COUNT(DISTINCT t.id) AS je_count, ROUND(SUM(tal.amount),0) AS net_amount
FROM transactionaccountingline tal
JOIN transaction t ON tal.transaction = t.id
JOIN account a ON tal.account = a.id
WHERE t.type = 'Journal' AND a.accttype = 'AcctRec'
-- A/R: 51 JEs net +$1.239M · A/P (accttype='AcctPay'): 52 JEs net −$1.082M
-- Inventory (fullname LIKE '%Inventory in Stock%'): 51 JEs net +$1,007,015
◇ Sales tax accrual vs remittance by account and year
SELECT a.fullname,
       TO_CHAR(t.trandate,'YYYY') AS yr,
       ROUND(SUM(tal.credit),0) AS accrued,
       ROUND(SUM(tal.debit),0)  AS remitted
FROM transactionaccountingline tal
JOIN transaction t ON tal.transaction = t.id
JOIN account a ON tal.account = a.id
WHERE a.fullname LIKE '%Sales Tax%' AND t.posting = 'T'
GROUP BY a.fullname, TO_CHAR(t.trandate,'YYYY')
ORDER BY a.fullname, yr
-- CA: $78,411 accrued vs $8.50 remitted · NY: $57,221 vs $70.83 · MA: $33,349 vs $9.09 · KY+8 states: $0 remitted
◇ Period close status — Finding 3
SELECT id, periodname, startdate, closed
FROM accountingperiod
WHERE isquarter = 'F' AND isyear = 'F'
ORDER BY startdate
-- Last closed='T': Nov 2021 (id 101). Dec 2021 (102) → Dec 2029: all closed='F'.
◇ Open A/R aging buckets — Finding 4
SELECT
  CASE
    WHEN t.duedate >= TRUNC(SYSDATE) THEN 'Current'
    WHEN TRUNC(SYSDATE)-TRUNC(t.duedate) <= 30 THEN '1-30'
    WHEN TRUNC(SYSDATE)-TRUNC(t.duedate) <= 60 THEN '31-60'
    WHEN TRUNC(SYSDATE)-TRUNC(t.duedate) <= 90 THEN '61-90'
    ELSE '>90' END AS bucket,
  COUNT(*) AS invoices, ROUND(SUM(t.foreignamountunpaid),2) AS unpaid
FROM transaction t
WHERE t.type = 'CustInvc' AND t.status = 'A' AND t.foreignamountunpaid > 0
GROUP BY /* bucket expression repeated */
-- Current $133,364 · 1-30 $123,385 · 31-60 $59,153 · 61-90 $139,431 · >90 $472,913 (13 invoices, max 499 days)
◇ SO → shipment cycle time by location — Finding 5
-- nexttransactionlink is unpopulated for SO→ItemShip in this account;
-- lineage derived via the shipment header line's createdfrom reference:
SELECT shipline.location,
       COUNT(*) AS ships,
       ROUND(AVG(TRUNC(ship.trandate)-TRUNC(so.trandate)),2) AS avg_days,
       MAX(TRUNC(ship.trandate)-TRUNC(so.trandate)) AS max_days
FROM transaction ship
JOIN transactionline shipline ON shipline.transaction = ship.id AND shipline.mainline = 'T'
JOIN transaction so ON shipline.createdfrom = so.id AND so.type = 'SalesOrd'
WHERE ship.type = 'ItemShip'
  AND so.trandate >= TO_DATE('2026-01-01','YYYY-MM-DD')
GROUP BY shipline.location
-- Loc 1 (SF): 92 ships avg 0.01d · Loc 3 (NY): 69 avg 0.0d · Loc 5 (LA DC): 73 avg 11.34d max 49 · Loc 12 (Miami): 32 avg −0.75d
◇ Channel mix — 2026 transactional revenue by location
SELECT tl.location, COUNT(DISTINCT t.id) AS txns,
       ROUND(SUM(ABS(tl.netamount)),2) AS revenue
FROM transaction t
JOIN transactionline tl ON tl.transaction = t.id
 AND tl.mainline = 'F' AND tl.taxline = 'F' AND tl.subsidiary <> 4
WHERE t.type IN ('CustInvc','CashSale')
  AND t.trandate >= TO_DATE('2026-01-01','YYYY-MM-DD')
GROUP BY tl.location ORDER BY SUM(ABS(tl.netamount)) DESC
◇ Vendor spend concentration 2026
SELECT v.entityid AS vendor, COUNT(DISTINCT t.id) AS bills,
       ROUND(SUM(ABS(t.foreigntotal)),0) AS spend
FROM transaction t
JOIN vendor v ON t.entity = v.id
WHERE t.type = 'VendBill'
  AND t.trandate >= TO_DATE('2026-01-01','YYYY-MM-DD')
GROUP BY v.entityid ORDER BY SUM(ABS(t.foreigntotal)) DESC
-- $1,794,815 total · 31 billed vendors · top 7 = 82.5% of spend
◆ DPO — paid vendor bills 2026
SELECT COUNT(*) AS paid_bills,
       ROUND(AVG(TRUNC(t.closedate)-TRUNC(t.trandate)),1) AS avg_dpo,
       MAX(TRUNC(t.closedate)-TRUNC(t.trandate)) AS max_days
FROM transaction t
WHERE t.type = 'VendBill' AND t.status = 'B'
  AND t.trandate >= TO_DATE('2026-01-01','YYYY-MM-DD')
  AND t.closedate IS NOT NULL
-- 394 bills · avg 3.2 days · max 165
◆ Inventory value by location + dead stock (180-day no-sale)
-- By location:
SELECT l.id, l.name, SUM(ail.quantityonhand) AS qty,
       ROUND(SUM(ail.onhandvaluemli),0) AS value_on_hand
FROM aggregateitemlocation ail
JOIN location l ON ail.location = l.id
WHERE ail.quantityonhand <> 0
GROUP BY l.id, l.name ORDER BY SUM(ail.onhandvaluemli) DESC

-- Dead stock:
SELECT COUNT(DISTINCT i.id) AS slow_items,
       ROUND(SUM(ail.onhandvaluemli),0) AS slow_value
FROM item i
JOIN aggregateitemlocation ail ON ail.item = i.id AND ail.quantityonhand > 0
WHERE i.itemtype = 'InvtPart'
  AND NOT EXISTS (
    SELECT 1 FROM transactionline tl
    JOIN transaction t ON tl.transaction = t.id
    WHERE tl.item = i.id AND t.type IN ('CustInvc','CashSale')
      AND t.trandate >= TO_DATE('2026-02-15','YYYY-MM-DD'))
-- 48 items · $40,855
◇ Terms coverage & overdue concentration; duplicate-entity and unapplied-payment checks
-- Terms coverage: 219 of 274 customers have terms IS NULL; 55 = Net 30.
-- 100% of overdue open A/R traces to Net-30 customers.
SELECT COUNT(*) FROM customer WHERE terms IS NULL

-- Duplicates (0 found on both entities):
SELECT companyname, COUNT(*) FROM customer
GROUP BY companyname HAVING COUNT(*) > 1

-- Unapplied payments/credits (0 found):
SELECT COUNT(*) FROM transaction
WHERE type IN ('CustPymt','CustCred') AND foreignamountunpaid > 0

Account-specific SuiteQL quirks encountered (for reproducibility)

  • transaction.status filters take single-letter codes only ('A', 'B'…); prefixed forms silently return zero rows.
  • transaction.location, .salesrep, .subsidiary are not exposed — use transactionline columns.
  • Sales-order line netamount is negative (GL convention) — wrap in ABS().
  • Header amounts: use foreigntotal / foreignamountunpaid; base-currency variants are unexposed.
  • REGEXP_LIKE rejected — use LIKE chains. LIMIT rejected — use FETCH FIRST n ROWS ONLY.
  • account.acctname not exposed in this account — use fullname.
  • nexttransactionlink is essentially unpopulated for O2C lineage (18 payment links only) — cycle times require createdfrom-based joins.
  • Vendor-bill foreigntotal is negative on headers — ABS() applied.

13Appendix B — Assumptions, Limitations & Data-Quality Notes

What we assumed, what we could not verify, and what could move the numbers.

Assumptions

  • Channel labels. "Wholesale" vs "retail" inferred from AOV and location patterns (DCs/no-location = large invoices; stores = small cash sales). Not confirmed with management.
  • Aging as-of dates. A/R and A/P Aging Summaries rendered with the account's saved default "As of July 31, 2026"; SuiteQL agings computed vs Aug 15, 2026. The two views differ slightly by design.
  • Store months-of-supply (~2.9 yrs) assumes ~60% COGS ratio on store revenue to convert stock value to supply months.
  • Collections recovery ($200–350K) assumes standard blitz yields of 40–70% on <500-day commercial receivables; individual accounts may be disputes or insolvencies.
  • Chicago DC savings assume a real facility lease/overhead exists — validate before acting; the estimate carries the lowest confidence in the model.
  • Sales-tax penalty range ($40–90K) uses typical state penalty (10–25%) + interest bands; actual exposure varies by state and VDA outcome.

Limitations & anomalies observed

  • P&L ratios describe posted books. Until the 16 revenue journals are classified (migration vs operational), margin and net income are not economically meaningful.
  • JE attribution is limited: 79 of 88 journals carry no createdby (import/system-created) — per-user accountability cannot be established from the GL alone.
  • Return rate (0.03%) may reflect returns processed outside the RMA workflow rather than genuinely negligible returns.
  • Duplicate check is exact-name only; fuzzy/near-match duplicates were not tested.
  • 24 of 280 2026 invoices have no originating SO (standalone) — these include the large wholesale invoices driving overdue A/R, so O2C cycle metrics under-cover exactly the riskiest revenue.
  • One SO is future-dated (2026-09-01) and one shipment predates its SO by 24 days — both included in Finding 3's evidence, excluded from cycle-time averages where they would distort.
Recommended immediate next steps: (1) Pull the 16 revenue journals for line-by-line classification — this single task determines whether Findings 1 and 3 are a migration-cleanup project or something requiring deeper forensic attention. (2) Brief the SALT advisor this week; VDA value decays if a state makes first contact. (3) Hand the top-5 overdue list to whoever owns those customer relationships, today.
SuiteStep, LLC — Operational Audit
Prepared August 15, 2026 · NetSuite account TD3016323 (Production, consolidated)
All figures extracted live from the system of record.
Confidential — Management use only. Benchmarks directional, not subscription-sourced.