Capitalize or Expense: Building the Fixed Asset Register From Vendor Invoices
A client buys a piece of equipment, and the invoice lands in the bank feed as one payment. Expense it and the month shows a loss that never happened; capitalize the whole total and the asset register carries a service plan and a box of supplies for the next seven years. This post covers how a bookkeeping firm reads equipment invoices line by line, builds the fixed asset register from them and ties it to the ledger for every client.
In brief
- Whether a purchase is capitalized or expensed is decided line by line on the invoice, not by the invoice total or the vendor name.
- Delivery, installation and setup needed to put an asset to use belong in its cost; an extended warranty or a software subscription on the same invoice does not.
- Depreciation starts on the placed-in-service date, which is when the asset is ready for use, not the invoice date or the payment date.
- Each month the fixed asset accounts in the general ledger should equal the cost on the register; a gap means an invoice was expensed, capitalized whole, or posted to the wrong client.
- Extracting the lines, amounts and dates from every invoice above the threshold lets a firm build registers for every client from data instead of rereading each invoice.
Capitalize or expense: the test
A fixed asset is something the business will use to operate for more than one year: machinery, vehicles, computers, furniture, leasehold improvements. Its cost goes on the balance sheet and moves to expense over its useful life through depreciation. A purchase that will be used up within the year, or that costs less than the client's capitalization threshold, goes straight to expense.
The threshold is a policy each client agrees with the firm. In the United States, many small businesses align it with the de minimis safe harbor in the tangible property regulations, which lets a taxpayer without audited financial statements expense items up to 2,500 per invoice or per item when it elects to do so. The figure, the election and how it applies to a given client are questions for the client's tax preparer; what the bookkeeper needs is the number, written down, applied the same way every month.
The test is applied to items, not to invoices. That is the part that slips: a dealer invoice for a piece of shop equipment can carry the machine, the freight to deliver it, the technician who installed it, a multi-year service plan and a box of consumables, all on one page with one total.
5
lines on the example equipment invoice, each with its own treatment
21,000
capitalized cost in the example: 18,400 + 950 + 1,650
3
checks in the example tie-out below
What belongs in the cost of the asset
The cost of an asset is its price plus what it took to bring it to the place and condition where it can be used. Freight and delivery, rigging, installation, calibration and testing, and sales tax the client cannot recover all go into the asset. They are spent once, because of the asset, and the asset would not work without them.
What does not belong is anything the client is paying for over time or that is consumed separately. A three-year service plan is a prepaid expense with its own service period. Training, consumables and spare parts kits are expenses. A software subscription bundled with a machine is an operating cost, even when the dealer prints it on the same invoice.
Equipment
Delivery and rigging
Installation and setup
Three-year service plan
Consumables starter kit
In the example above, 21,000 of a 24,000 invoice is the asset. Capitalizing the full 24,000 overstates the asset by 3,000 and depreciates a service plan over the machine's life instead of its own three years. Expensing the full 24,000 understates the balance sheet and puts a large one-month hit on the client's profit and loss.
The placed-in-service date
Depreciation starts when the asset is ready and available for use, not when it is invoiced or paid for. For a laptop that is usually the delivery date. For equipment that needs installation, it is the day the installation is complete, which can fall weeks after the invoice and sometimes in the next month or the next tax year. A deposit paid months before delivery, covered in the post on vendor deposits and prepayments, is not an asset in service either: it sits as a deposit until the equipment arrives.
The evidence for the date is usually a separate document: a delivery receipt, an installation sign-off, a commissioning report. A register that records the placed-in-service date with a pointer to that document can be defended at year end; a register that uses the invoice date for everything cannot.
Where fixed asset registers stop tying out
Across a portfolio of small-business clients, the fixed asset accounts drift for a short list of reasons, and almost all of them begin with an invoice categorized from its total and its vendor name.
Expensed in full, or capitalized whole
A bank rule sends a payment to an equipment dealer to repairs and maintenance, and the asset never reaches the register. Or the reverse: the whole invoice is capitalized, service plan, supplies and all, because nobody opened it. Both leave the year total wrong for years, not months.
Wrong date, wrong class
Depreciation from the invoice date instead of the in-service date shifts expense between periods, and an asset filed in the wrong class picks up the wrong useful life.
Assets that left
A trade-in on the new machine, a vehicle sold, a laptop written off: each should remove cost and accumulated depreciation from the register, and each usually shows up only as a credit line on the next purchase invoice or a deposit in the bank.
Equipment invoice expensed in full
Service plan or warranty capitalized
Depreciation from invoice date
Disposal or trade-in not recorded
Wrong asset class or useful life
Other
Building the register from the invoice, step by step
For a client that buys two assets a year, reading the invoices by hand is fine. For a firm with a hundred clients, the work is finding every invoice above the threshold and reading each of its lines. That is the same reading problem as receipt-to-bank matching: turn every document into the same fields, then let rules compare.
1. Extract the lines, not just the total
For each invoice above the threshold, capture the vendor, invoice number and date, the total, and every line with its description and amount. Typed fields, as the post on extraction schema design describes, let the lines be summed and checked against the total before anyone classifies them.
2. Classify each line
Map each line to capitalize, prepaid or expense using the client's policy and a short list of keywords the firm maintains: delivery, freight, installation and calibration go with the asset; service plan, warranty and subscription go to prepaid; supplies, training and parts go to expense. Anything the rules cannot place goes to a reviewer.
3. Tie the register to the ledger
At month end, the cost on the register for each asset class should equal the matching fixed asset account in the general ledger, and every register entry should tie to a payment or a bill, so nothing is on the register the client never paid for.
{ "client_id": "client-0518", "period": "2026-09", "invoice": { "vendor": "example-equipment-dealer", "invoice_number": "EQ-77412", "invoice_date": "2026-09-04", "total": 24000.00, "lines": [ { "description": "CNC router, 4x8 bed", "amount": 18400.00, "treatment": "capitalize" }, { "description": "Delivery and rigging", "amount": 950.00, "treatment": "capitalize" }, { "description": "Installation and calibration", "amount": 1650.00, "treatment": "capitalize" }, { "description": "Service plan, 36 months", "amount": 2700.00, "treatment": "prepaid" }, { "description": "Bits and consumables kit", "amount": 300.00, "treatment": "expense" } ] }, "installation_completed": "2026-09-22", "register": { "asset_id": "FA-0518-031", "asset_class": "Machinery and equipment", "cost": 21000.00, "placed_in_service": "2026-09-22" }, "ledger": { "machinery_and_equipment_added": 24000.00, "repairs_and_maintenance_posted": 0.00 }, "checks": [ { "check": "register_cost_vs_ledger", "register": 21000.00, "ledger": 24000.00, "difference": 3000.00, "status": "break", "hint": "Service plan and consumables capitalized with the equipment" }, { "check": "invoice_lines_sum_to_total", "status": "ties" }, { "check": "invoice_vs_payment", "invoice": 24000.00, "bank_debit": 24000.00, "status": "ties" } ], "proposed_entry": { "debit": [ { "account": "Prepaid expenses", "amount": 2700.00 }, { "account": "Shop supplies", "amount": 300.00 } ], "credit": { "account": "Machinery and equipment", "amount": 3000.00 }, "requires_review": true }}In this example, the 24,000 invoice was posted in full to machinery and equipment. The lines show 21,000 of asset cost, a 2,700 service plan and 300 of consumables. Installation was completed on September 22, so that is the placed-in-service date, not the September 4 invoice date. The payment ties to the bank, and the fix is one reviewed entry that moves 3,000 out of the asset account.
Every register line points to a document
Keep the numbers honest
Treat extracted lines as a draft until they pass simple checks: the lines sum to the invoice total, the in-service date falls on or after the invoice date for anything that needed installation, and the total matches the payment. A trade-in credit that extracts as a positive amount is a misread, not a second purchase. Keep a labelled set of invoices from the dealers that appear most across clients and score the line fields when a dealer changes its layout; the post on building a field-level eval set explains how. Route every reclassification through a reviewer before it posts.
Monthly fixed asset reconciliation: a checklist
- Agree a capitalization threshold with each client, confirm it with their tax preparer and write it down.
- Flag every invoice above the threshold from equipment, vehicle, technology and contractor vendors.
- Extract vendor, invoice number, date, total and every line with its amount into one schema.
- Classify each line as capitalize, prepaid or expense, and send what the rules cannot place to review.
- Record the placed-in-service date from the delivery or installation record, not the invoice date.
- Tie register cost by asset class to the fixed asset accounts, and every addition to a payment or bill.
- Record trade-ins, sales and write-offs as they arrive, and post corrections only after review.
Where extraction fits
The accounting for a fixed asset is settled; what slips across a portfolio is reading every line of every equipment invoice, for every client, every month. Parser turns each invoice into structured JSON against an extraction template you define, including the line items and the dates, so registers are built from data and the team's time goes to the lines that need judgement.