Sample output from the Capex vs. Depreciation 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
Financial Analysis

Capex vs. Depreciation

Is the company reinvesting enough to sustain its asset base — or quietly consuming it to flatter free cash flow?

Account TD3016323  ·  Consolidated, all subsidiaries (USD)  ·  GL history Sep 2024 – Aug 2026  ·  Prepared 2026-08-24


Executive Summary

For the first 20 months of available GL history (Sep 2024 – Apr 2026), the company recorded steady depreciation & amortization — roughly $800/month — while investing exactly $0 in capital equipment. Every dollar of D&A in that window flowed straight through to free cash flow with no offsetting reinvestment: the textbook pattern of an eroding asset base.

That changed in May 2026. Three months of purchases (May–Jul) added $12,100 of gross PP&E, lifting the FY2026 capex-to-depreciation ratio to 1.67× — a genuine reinvestment cycle. But it only partially repairs the cumulative picture: lifetime capex still covers just 0.60× of lifetime D&A, leaving an $8,002 cumulative underinvestment gap.

The more consequential finding is one of scale: this business generated $10.9M of revenue in FY2025 across two retail stores, two distribution centers, and light manufacturing — on effectively no capitalized asset base. Capex intensity is ~0.14% of revenue in FY2026 (retail/distribution peers typically run 2–5%). Either the operating assets are leased and expensed, or fixed assets are systematically under-capitalized on these books. Three data-integrity issues found during the analysis (below) point toward the latter contributing.

$12,100
Cumulative capex
(all in FY 2026)
$20,102
Cumulative D&A
Sep 24 – Aug 26
0.60×
Lifetime coverage
capex ÷ D&A
1.67×
FY 2026 coverage
capex ÷ D&A
0.14%
Capex ÷ revenue
FY 2026 YTD
Key Finding

The erosion pattern is real, but it has just inflected. Twenty consecutive months of zero reinvestment against ~$17,300 of accumulated D&A is exactly the "eat the asset base" signature. The May–Jul 2026 purchase cycle ($12,100) is the first counter-signal — sustained at this pace, coverage returns to parity in roughly 8–10 months. The number to watch is the cumulative ratio, not the single-year one: 0.60× today, and only a sustained coverage above 1.0× closes it.


Why This Ratio Matters

Depreciation is the accounting echo of past investment — the cost of assets being used up. Capex is the cash cost of replacing them. When capex ÷ depreciation < 1.0 persistently:

  1. Free cash flow is flattered. FCF = operating cash flow − capex. Skipping replacement spend inflates FCF today at the cost of a larger, lumpier bill later.
  2. The asset base ages. Older equipment means rising maintenance, downtime, and quality risk — costs that surface in COGS and opex long before the balance sheet admits anything is wrong.
  3. The correction is non-linear. Deferred replacement doesn't queue politely; it clusters. Companies that under-invest for years tend to face a compressed, capital-intensive catch-up cycle at the worst possible time.

The inverse also matters: a coverage ratio above 1.0× (as in FY2026 here) signals growth investment or catch-up replacement — healthy, provided it is sustained rather than episodic.


The Numbers

Annual view

Fiscal YearCapexD&A ExpenseCoverageGap (Capex − D&A)RevenueCapex / Revenue
FY 2024 (Sep–Dec)03,131.530.00×(3,131.53)3,432,2910.00%
FY 202509,723.370.00×(9,723.37)10,898,0260.00%
FY 2026 (thru Aug)12,100.007,247.561.67×+4,852.448,388,5940.14%
Cumulative12,100.0020,102.460.60×(8,002.46)22,718,9110.05%
Capex vs. D&A by fiscal year
USD. FY 2024 is a partial year (GL history begins Sep 2024).
Capex (PP&E additions) D&A expense
0 3,000 6,000 9,000 12,000 $0 3,132 FY 2024* $0 9,723 FY 2025 12,100 7,248 FY 2026 YTD
Two full reporting cycles passed with zero capitalized investment before the FY 2026 purchase cycle. *FY 2024 covers Sep–Dec only.
Monthly D&A expense, with capex events
USD per month, consolidated. Blue markers = months containing PP&E additions.
0 500 1,000 1,500 +5,800 +3,000 +3,300 1,396 — incl. misclassified JE78 (see Flag 1) Sep-24 Dec-24 Mar-25 Jun-25 Sep-25 Dec-25 Mar-26 Jun-26 Aug-26
D&A ran ~$650–$1,020/month for 23 months with no capex until May 2026. The Aug-26 spike includes a $750 depreciation entry misclassified to Other Expenses (Flag 1).
Cumulative capex vs. cumulative D&A — the erosion gap
Running totals since Sep 2024, USD. The shaded area is unreplaced asset consumption.
Cumulative D&A Cumulative capex Underinvestment gap
0 5,000 10,000 15,000 20,000 $20,102 $12,100 gap: $8,002 Sep-24 Mar-25 Sep-25 Mar-26 Aug-26
The blue line starting to bend toward the charcoal line in May 2026 is the reinvestment inflection. At the FY 2026 run-rate (~$4,000/month capex vs. ~$900/month D&A), the cumulative gap would close around Q2 FY 2027 — if the spending pace holds.

Capex transaction detail (FY 2026)

DateTransactionAccountAmountMemoIn FAM Register?
2026-05-01Vendor Bill 317261610 Machinery & Equipment3,300.00LP - Asset ProcurementYes (FAM000001–2)
2026-05-01Vendor Bill 403141620 Furniture & Fixtures1,500.00Yes (FAM000003 or 4)
2026-05-01Vendor Bill 403161620 Furniture & Fixtures1,000.00Not matched
2026-06-01Vendor Bill 317301620 Furniture & Fixtures3,000.00LP - Asset SplitPartially ($1,500)
2026-07-01Vendor Bill 317341610 Machinery & Equipment3,300.00LP - Reject AssetNo — rejected in FAM, still on GL
Total GL capex12,100.00FAM register covers $6,300 (52%)

Data-Integrity Flags

Three issues surfaced during the analysis. Each one distorts the capex/depreciation picture and is worth fixing regardless of this report.

Flag 1 — Depreciation misclassified to Other Expenses

Journal JE78 (2026-08-07, internal id 24127) credits 1710 Acc. Depr. – Machinery & Equipment for $750.00 but debits 8000 Other Expenses instead of a 68xx depreciation account. This understates the reported D&A line, overstates Other Expenses, and — because analysts add D&A back when computing EBITDA — quietly understates EBITDA by $750. This report reclassifies it as depreciation.

Flag 2 — FAM register covers only 52% of GL capex

The Fixed Assets Management register (customrecord_ncfar_asset) holds 4 assets totaling $6,300, against $12,100 of GL additions. Notably, Vendor Bill 31734 ($3,300, memo "LP - Reject Asset") appears to have been rejected in the FAM asset-proposal flow but its GL posting to 1610 remains. Assets not in FAM will never generate depreciation — the GL will carry them at cost forever, silently overstating net PP&E.

Flag 3 — $20K of D&A expense has no balance-sheet counterpart

Cumulative D&A expense is $20,102, but the accumulated-depreciation accounts (1700-series) carry only $841.67 of credits. The historical amortization expense (account 6880) was loaded via the "Beg Balance Entries" journals with the balancing entries absorbed elsewhere in those journals — no corresponding accumulated-amortization balance was established. The balance sheet therefore cannot corroborate the P&L's depreciation history, and net-book-value or asset-age analysis (accumulated depreciation ÷ gross assets) is impossible on these books.

Risks & Assumptions
This analysis treats GL postings to fixed-asset accounts (1600-series, excluding accumulated depreciation and right-of-use accounts) as capex, and postings to 6800-series accounts plus the misclassified JE78 as D&A. Right-of-use asset accounts (1695, 1696, 1780) show zero activity and were excluded. No disposals were found in the period. GL history begins Sep 2024 with beginning-balance journals; anything earlier is invisible to this analysis. Fiscal years are calendar years. All figures are consolidated across subsidiaries in USD; the elimination subsidiary (xElim) posted no activity to these accounts. FY 2024 is a four-month stub and its coverage ratio is not comparable to full years.

Recommendations

  1. Reclassify JE78 ($750) from 8000 Other Expenses to 6810 Depr Exp – Machinery & Equipment so the D&A line and EBITDA are stated correctly.
  2. Reconcile FAM to GL. Resolve the $5,800 of GL capex absent from the asset register — either create the missing FAM assets (Bills 40316, 31730-remainder) or reverse the GL posting for the rejected asset (Bill 31734).
  3. Rebuild the accumulated-depreciation opening balance so the balance sheet corroborates historical D&A and net book value becomes meaningful.
  4. Adopt the cumulative coverage ratio as a standing KPI. A single good year (1.67×) doesn't erase a 0.60× lifetime ratio. Track rolling-12-month capex ÷ D&A monthly; sustained < 1.0× should trigger a replacement-plan review.
  5. Investigate the capex-intensity anomaly. 0.14% of revenue is far below any retail/distribution benchmark. Confirm whether store fit-outs, DC equipment, and IT are leased (and where those lease costs land) or being expensed below the capitalization threshold — and whether that threshold is documented.

Appendix — Methodology & Source Queries

All data was extracted live from NetSuite via SuiteQL on 2026-08-24. Account groupings were mapped from the chart of accounts by internal id, then every GL line touching those accounts was inspected individually before aggregation (58 lines total — small enough to audit by hand).

Query 1 — Map the fixed-asset side of the chart of accounts

Identifies gross PP&E, accumulated depreciation, ROU-asset, and depreciation-expense accounts.

SELECT
    a.id,
    a.acctnumber,
    a.fullname,
    a.accttype,
    a.isinactive,
    a.parent
FROM account a
WHERE a.accttype = 'FixedAsset'
   OR LOWER(a.fullname) LIKE '%depreciation%'
   OR LOWER(a.fullname) LIKE '%amortization%'
   OR LOWER(a.fullname) LIKE '%accum%'
ORDER BY a.accttype, a.acctnumber

Query 2 — Annual activity by account group

Buckets GL postings into GROSS_PPE / ACCUM_DEPR / DEPR_EXPENSE / AMORT_EXPENSE by internal id. Account ids were taken from Query 1.

SELECT
    TO_CHAR(t.trandate, 'YYYY') AS fiscal_year,
    CASE
        WHEN a.id IN (150, 14, 15, 16, 151, 17)  THEN 'GROSS_PPE'
        WHEN a.id IN (3644, 3645)                THEN 'ROU_ASSET'
        WHEN a.id IN (152, 153, 18, 19, 20, 21)  THEN 'ACCUM_DEPR'
        WHEN a.id = 3646                         THEN 'ACCUM_DEPR_ROU'
        WHEN a.id IN (66, 61, 62, 172, 173, 174) THEN 'DEPR_EXPENSE'
        WHEN a.id = 59                           THEN 'AMORT_EXPENSE'
        WHEN a.id = 230                          THEN 'SYS_ACCUM_DEPR'
    END AS account_group,
    ROUND(SUM(tal.debit), 2)  AS total_debits,
    ROUND(SUM(tal.credit), 2) AS total_credits,
    ROUND(SUM(tal.amount), 2) AS net_amount,
    COUNT(DISTINCT t.id)      AS tran_count
FROM transactionaccountingline tal
JOIN transaction t ON t.id = tal.transaction
JOIN account a     ON a.id = tal.account
WHERE t.posting = 'T'
  AND a.id IN (150,14,15,16,151,17,3644,3645,152,153,18,19,20,21,3646,
               66,61,62,172,173,174,59,230)
GROUP BY TO_CHAR(t.trandate, 'YYYY'), CASE ... END
ORDER BY fiscal_year, account_group

Query 3 — Line-level audit of every posting to those accounts

This is the query that surfaced JE78's misclassification and the "LP - Reject Asset" bill. Monthly D&A figures in the charts come from these rows.

SELECT
    t.id,
    t.tranid,
    t.type,
    TO_CHAR(t.trandate, 'YYYY-MM-DD') AS trandate,
    a.acctnumber,
    a.fullname AS account_name,
    ROUND(tal.amount, 2) AS amount,
    t.memo
FROM transactionaccountingline tal
JOIN transaction t ON t.id = tal.transaction
JOIN account a     ON a.id = tal.account
WHERE t.posting = 'T'
  AND tal.account IN (150,14,15,16,151,17,3644,3645,152,153,18,19,20,21,3646,
                      66,61,62,172,173,174,59,230)
ORDER BY t.trandate, t.id, a.acctnumber

Query 4 — Annual revenue (for capex-intensity scaling)

SELECT
    TO_CHAR(t.trandate, 'YYYY') AS fiscal_year,
    ROUND(SUM(-tal.amount), 2) AS revenue
FROM transactionaccountingline tal
JOIN transaction t ON t.id = tal.transaction
JOIN account a     ON a.id = tal.account
WHERE t.posting = 'T'
  AND a.accttype IN ('Income', 'OthIncome')
GROUP BY TO_CHAR(t.trandate, 'YYYY')
ORDER BY fiscal_year

Query 5 — Fixed Assets Management register

Cross-check of the FAM subledger against GL capex (Flag 2).

SELECT
    fa.id,
    fa.name,
    fa.custrecord_assetcost        AS asset_cost,
    fa.custrecord_assetcurrentcost AS current_cost,
    BUILTIN.DF(fa.custrecord_assetstatus) AS status,
    BUILTIN.DF(fa.custrecord_assettype)   AS asset_type,
    TO_CHAR(fa.custrecord_assetpurchasedate, 'YYYY-MM-DD') AS purchase_date,
    fa.custrecord_assetlifetime    AS lifetime_months
FROM customrecord_ncfar_asset fa
ORDER BY fa.id

Query 6 — GL detail of the flagged journals (JE78, JE100)

SELECT
    a.acctnumber,
    a.fullname AS account_name,
    ROUND(tal.amount, 2) AS amount,
    tal.credit,
    tal.debit
FROM transactionaccountingline tal
JOIN account a ON a.id = tal.account
WHERE tal.transaction IN (24127, 31736)
ORDER BY tal.transaction, a.acctnumber

Definitions

This analysis is derived exclusively from general-ledger data in NetSuite account TD3016323 as of 2026-08-24 and reflects only what is recorded in the books. Dollar amounts in this account are small in absolute terms; the analytical patterns (coverage ratios, register reconciliation gaps, classification errors) are what generalize. This document is informational and does not constitute accounting, audit, or investment advice. Figures computed programmatically from GL extracts; monthly detail available on request.