A CAM Reconciliation Audit Startsin the Backup Package

The reconciliation statement is one page of arithmetic: a pool total, your share, the difference between what you paid in estimates and what you owe. Behind it sits the backup package, which for a multi-tenant building usually runs to a few hundred pages of vendor invoices, ledger extracts, tax and insurance bills, and occupancy schedules. Most of the money a tenant can recover is in the second pile, and most audits never open it.

Stop typing data by hand — let AI read it for you
Upload an image or PDF — structured spreadsheet data in 10 seconds
Try It Now →
A central magnifying glass over an invoice icon, surrounded by three nodes: Lease Rules Checked, Share Applied, and Every Invoice Read, with the title A CAM Reconciliation Audit That Reads Every Invoice

Key Takeaways

  1. Most of the money a tenant can recover sits in the backup package, and most audits never open it.
  2. A $412,000 repairs line looks the same whether it holds ninety clean invoices or ninety plus a roof coded as a repair.
  3. Put vendor, invoice number, amount and service period side by side and the duplicate appears, because it lives between rows, not inside either one.

A CAM Audit Tests Charges Against the Lease, and the Evidence Lives in the Backup

A large 1.83% number with two red warning badges showing cost impacts ($4,000 error equals $73, $146,800 capital repair equals $2,686) and a green checkmark for auditing where the share is largest

A CAM reconciliation audit is a review of whether each charge in the landlord's recovery pool is permitted by the lease and calculated the way the lease says. Common area maintenance, or CAM, is the landlord's term for the shared cost of running a building: cleaning, landscaping, security, utilities for common areas, repairs, management, taxes and insurance. Tenants on a triple net or net lease reimburse their share of it.

The yearly cycle produces three numbers. Through the year you pay an estimate, usually the prior year's actual divided into twelve. After the year closes, the landlord adds up actual property expenses, removes what the lease excludes, and applies any cap or gross-up. The reconciliation statement then compares your estimates to your share of the result, and you either owe a true-up or get a credit.

The share itself is arithmetic: your rentable area divided by the denominator the lease defines. BOMA's own CAM worksheet uses a 6,179 square foot tenant in a 337,088 square foot building, which comes to 1.83%. That number is worth holding onto, because at a 1.83% share, a $4,000 invoice error costs you $73, while a $146,800 capital repair buried in repairs and maintenance costs you $2,686. The scale of your share decides where the audit should spend its time.

Three documents sit behind the audit. The statement tells you the pool, your share and the balance. The lease tells you which costs are recoverable, which are excluded, how the share is defined, and what caps apply. The backup package is the proof that the pool is made of real charges that belong in it. Only the third one can tell you whether the first one is right.

The lease side is a reading problem of its own. Lease extraction is the general name for turning those clauses into a sortable rule set, and it is the step that decides what the rest of the audit is allowed to flag.

Under ASC 842, CAM is a nonlease component, and the part that varies with actual costs stays out of the lease liability. It is expensed as incurred and disclosed as variable lease cost. That accounting treatment explains why this work lands on the property accountant and the lease administrator rather than the lease accounting team: CAM never appears as a balance sheet item that a reconciliation at year end would catch, so the invoice package is the only place the detail exists. The treatment is covered in RSM's guide to lease accounting.

Every Error You Are Looking For Sits Inside a Total

A two-column comparison: left side shows a red X with Statement Line $412,000 and 90 invoices plus a roof replacement, right side shows a green checkmark with Invoice-Level Pass $412,000, 90 invoices traced to source pages, and a roof of $146,800 flagged as capital

A statement line is a sum, and a sum hides its own composition. "Repairs and maintenance, $412,000" could be ninety invoices that add up correctly. It could also be ninety invoices plus a roof replacement the landlord chose to code as a repair, and the statement would look identical.

Two failure modes exist, and a category summary shows neither. In the first, the total does not equal the invoices underneath it, because one was left out, counted twice, or pulled from the wrong year. In the second, the total equals the invoices exactly, but some of them do not belong in that category.

A lease-to-statement comparison can test whether "repairs and maintenance" is a recoverable category. It cannot tell you what is inside the $412,000, because the invoices are not part of the comparison.

This is also why order matters. Gross-up, caps and the management fee are all calculated from the pool, so a pool line that does not tie to the general ledger corrupts three derived numbers at once. Tie the pool to the ledger first, then test the lease rules against it. An audit that starts with the rules and never ties the pool is checking a number it has not verified.

The failure is rarely dramatic. In a thread on r/CommercialRealEstate, a tenant described how "management have sent multiple spreadsheets with different expense amounts for the same year", including a 2023 insurance invoice used in the 2022 reconciliation. Nobody was hiding anything. The package had never been read line by line.

A Usable Backup Package Has Nine Parts, and a Legal Deadline

A list of nine parts of a usable backup package: Reconciliation Statement, General Ledger Extract, Vendor Invoices, Service Contracts, Property Tax Bills, Insurance Declarations, Rent Roll, Management Agreement, and Gross-Up or Cap Sheets

A package you can actually audit contains nine things, and every one of them supports a specific charge: the reconciliation statement, a general ledger extract by account, the vendor invoices behind those accounts, the service contracts for recurring vendors, property tax bills, the insurance declarations pages, a rent roll or occupancy schedule by month, the management agreement, and the gross-up or cap worksheets if either applies. Page counts run from about 50 for a small retail building to several hundred for an office tower, because one invoice often spans two or three scanned pages once the statement of work is attached. The package is assembled by the landlord's property manager, often from a Yardi report plus a folder of scanned invoices, which is why file names rarely line up with statement lines. The volume is why the work gets deferred until the deadline forces it.

California puts a floor under what a package has to contain. Under Civil Code §1950.9, added by SB 1103 and effective January 1, 2025, a landlord may not charge a qualified commercial tenant for building operating costs unless the costs were allocated proportionately and the tenant received supporting documentation. That documentation is defined as a dated, itemized quote, contract, receipt or invoice, and it must include a tabulation showing how the cost was split among tenants plus the landlord's signed and dated attestation that the numbers are true.

Two clocks come with it. The landlord has 30 days from a written request to produce the documentation, and the costs must have been incurred within the previous 18 months or be reasonably expected within the next 12. The definition of a qualified tenant is narrow, covering a microenterprise, a restaurant with fewer than 10 employees, or a nonprofit with fewer than 20, and it requires the tenant to serve written notice and a self-attestation. Most tenants reading this will not qualify.

Use it as a template anyway. Thirty days, itemized invoices, an allocation tabulation and a signed attestation is a reasonable thing to ask any landlord for, in any state, whether or not a statute backs the request. The 18-month window is the other useful part, because it gives you a defensible line for excluding an invoice that belongs to a different period. Lease deadlines still govern your own objection: some leases give 60 to 180 days to dispute a statement, others run 12 to 24 months, and the clock usually starts on delivery, not on the day someone finally opens the envelope. When a tenant has more than one location, those deadlines differ by lease, which is why keeping the lease terms for a whole portfolio in one table is worth doing before the packages arrive.

Eight Columns Turn the Package Into an Audit Workbook

The workbook carries one row per invoice. That is the whole design decision, and the column list follows from it.

ColumnWhat goes in itWhat it is for
VendorThe name exactly as printed on the invoiceCatches the same service billed by two related entities
Invoice numberThe printed number, including prefixesCatches the same invoice sent twice
Invoice dateThe date on the invoiceCatches charges from outside the reconciliation period
Service periodThe month or range the work coversSeparates "invoiced late" from "billed twice"
AmountThe invoice total, before any share is appliedThe number every calculation starts from
GL categoryThe account code and name the landlord usedLets you rebuild each statement line and test its contents
ScopeWhat the invoice says was done, in its own wordsThe only field that distinguishes a repair from a replacement
Source pageFile name and page number inside the packageMakes every finding citable without reopening 300 pages

This is what Custom Column Extraction is for. You type the column names you want, and the AI reads each document and fills the value that matches the meaning of the name, wherever it sits on the page. No template per vendor, no coordinates to draw, which matters here because a backup package contains invoices from thirty different vendors in thirty different layouts, some of them phone photos of paper.

Then add three calculated columns. A category total sums the Amount column within each GL category. A difference column compares that total to the statement line and outputs the gap. A share column multiplies each amount by your pro-rata percentage so the exception list is ranked in dollars that are actually yours. These are computed columns: you describe the calculation, the AI performs it during extraction and writes the result into the table.

Leave one column empty on purpose. Call it Lease treatment, with values you fill in yourself: recoverable, excluded, capital, or ask. That column is the audit. Everything to its left is evidence; that column is judgment, and it belongs to a person holding the lease.

Five Discrepancies a Line-by-Line Pass Catches

Five discrepancies account for most of what a line-by-line pass finds, and four of them leave no trace in a category total. A larger tenant sees the same errors in larger dollars, so the examples below use a 17,000 square foot tenant in a 200,000 square foot building, an 8.5% share, and a $1.24 million pool. Change the share and every dollar figure scales with it.

1. A capital repair sitting in repairs and maintenance

A $146,800 invoice for a roof restoration, coded to general building repairs. The statement shows a higher repairs line and no capital line, which reads as a bad year for the roof. The invoice scope reads as a replacement of the membrane over the whole roof deck.

The test is not size. Under IRC §263(a) and the tangible property regulations, a cost must be capitalized if it is for a betterment, a restoration, or an adaptation to a new use, and the analysis is facts and circumstances. A patched section is a repair. A membrane over the entire deck is a restoration. If your lease excludes capital, the full $12,478 of your share is not billable. If it permits amortization over a 20-year useful life, the allowable annual charge is $7,340, and your share of it is $624. The gap between those two answers is the finding.

2. A management fee charged on a base that includes taxes and insurance

The statement shows a $49,600 management fee at 4%. The pool is $1,240,000, of which $412,000 is property tax and $96,000 is insurance. Your lease says 4% of operating expenses excluding taxes and insurance. Four percent of $732,000 is $29,280.

The overcharge is $20,320 at the pool level and $1,727 at your share. You cannot see it on the statement, because the statement prints one fee number and no base. The only way to test a percentage fee is to rebuild the base from the invoices and see which expenses the landlord multiplied. Not every lease excludes taxes and insurance from the fee base, so read the clause before you apply this test.

3. A gross-up computed on the wrong occupancy

Gross-up adjusts variable expenses upward when a building is not full, so a tenant does not pay less than its fair share simply because the building is half empty. The lease sets the target, and 95% is the common figure in office leases. Only variable costs qualify: utilities, cleaning, waste removal, sometimes the management fee. Taxes, insurance and fixed service contracts do not.

Say the lease allows gross-up to 95%, the building averaged 78% occupancy for the year, and the worksheet used the January occupancy of 61%, the month after a large tenant left. The correct factor is 95 divided by 78, or 1.218. The factor used was 95 divided by 61, or 1.557. On a $610,000 variable pool, that is $132,950 of gross-up instead of $340,000, an overstatement of $207,050 and $17,599 of your share.

Two quick checks come before any of that arithmetic. If the lease says gross up to 95% and the building was already at or above 95%, the gross-up line should be zero. If fixed costs appear inside the grossed-up total, the methodology is wrong regardless of the occupancy figure.

4. The same service billed under two vendor names

"Summit Janitorial LLC" and "Summit Building Services Inc." both invoice monthly contract cleaning for the same building, the same months, $4,150 each. Ten overlapping months is $41,500, and your share is $3,528.

This one is invisible in every other view. Both vendors are legitimate, both are coded to janitorial, and the category total ties to the ledger. Only a table with vendor, invoice number, amount and service period in adjacent columns shows the overlap, because the duplicate is a relationship between rows rather than a property of either row.

5. An invoice from the wrong year

A 2023 insurance premium inside the 2024 reconciliation, or a December invoice billed in both years' reconciliations. The first inflates the pool with a cost that belongs to a closed period. The second charges you twice for one period, and it is easy to miss because each year's package looks correct on its own.

Sorting by invoice date and service period surfaces both. The 18-month rule in California's statute gives you a written basis for the challenge, and outside California the lease's own definition of operating expenses and the reconciliation period does the same work. This is the discrepancy most likely to repeat, since a manager who bills an invoice to the wrong year usually does it more than once.

Running the Pass Without Reading Every Page

Six steps take a package from unopened to a findings list, and only the last one needs judgment about the lease.

1

Tie the statement to the ledger before anything else

Rebuild each statement line from the general ledger accounts behind it. If a category does not tie, stop and request the missing or duplicated account. Every rule you test afterwards is being tested against a number you have now verified.

2

Write the lease rules onto one page

Recoverable categories, exclusions, pro-rata formula and denominator, cap and its base year, management fee rate and base, gross-up percentage and eligible categories, audit window. Cite the clause number next to each. The field list is the same one used for pulling key lease fields into a spreadsheet, with the clause reference added so a finding can cite it later.

3

Upload the whole package as one batch

One batch, one output table, with the eight columns defined once. A 300-page package does not arrive in a consistent order, and processing it file by file reproduces the exact problem the table is meant to solve. The mechanics are the same as batching a month of vendor invoices into one sheet, at a larger scale and with a stricter column set.

4

Add the three calculated columns

Category total, difference against the statement line, and your share of each amount. The difference column is what turns a spreadsheet into a findings list: it outputs the gap wherever a rebuilt total and a billed total disagree.

5

Work each category from the largest invoice down

Sort by category, then by amount. The five errors above cluster at the top of a category, because that is where a misclassification is worth the most. Read the scope field for every invoice above your threshold and skim the rest by vendor and period.

6

Move each finding into an evidence log

One line per finding: lease clause, package page, invoice number, amount, your share, and one sentence on why it is not billable. Review Mode with bbox lets you click a cell and see its source region on the original page, which confirms a faint scan was read correctly and captures the page reference at the same time. If an invoice spans two scanned pages, merge them into one row by invoice number.

JPG/PNG/PDF AI Extraction

Files are processed securely and not stored.

What the Workbook Cannot Decide

The table proves what the invoices say and what they add up to. It does not prove what the lease means, and the remaining questions stay with the person holding the document.

Capital versus operating is a judgment under facts and circumstances, not a threshold. A roof invoice can be a repair on one building and a restoration on another depending on scope, and the workbook can only put the scope description in front of you.

Gross-up eligibility is lease interpretation. Whether a specific cost is variable, what occupancy figure the lease defines, and whether the base year also has to be grossed up are all clause questions. A tool that answers them for you is guessing.

The lease outranks every pattern. In the same forum, a property accountant described tenants arguing over a denominator that left 50 square feet unleased. The answer was in the lease, not in the arithmetic. If the document says something counterintuitive, the document wins. The workbook also does not draft the dispute, decide what to demand, or tell you whether to settle. It gives you the three things a written request needs: the clause, the page, and the amount.

One number to drop from your vocabulary: the claim that 40% of CAM reconciliations contain material errors. Every version of it traces back to secondary vendor posts citing a 2023 analysis whose sample and error definition are not published. Treat it as marketing, not a measured rate.

Published recovery rates are unreliable in the same manner, which is why the only number worth acting on is your own rebuilt pool. If the package does not let you rebuild it, that is itself a finding and the first line of your records request. Choosing software is a separate decision. What matters here is whether a tool can take thirty vendor layouts in one batch, hold a column structure you define, and point back to the source page; the property-management extraction tools compared covers how the options differ on those three points.

FAQ

How long does a CAM reconciliation audit take?

A statement-level review of one lease is an afternoon. A full invoice pass over a 300-page package for a single location is typically two to five working days, and the range is driven by how legible the invoices are and how many categories need a scope read. Reading the package is the long part, not the lease comparison.

Can I audit CAM charges if my lease has no audit rights clause?

You can always review the statement and the documentation you were given, and ask questions about it. A formal right to inspect the landlord's books and records comes from the lease or from a statute, and most states do not grant it automatically. Read the clause before you send a request that assumes access you do not have.

What is a gross-up in CAM?

A gross-up inflates variable operating expenses to what they would have been at a target occupancy, commonly 95%, so a tenant in a partially empty building pays the same share it would pay in a full one. It should apply only to costs that move with occupancy. Applying it to taxes, insurance or fixed contracts overstates the pool.

Do I need a CPA to audit CAM charges?

Not for the line-item pass. Property accountants and lease administrators do this work in-house at plenty of tenants. A CPA or a specialist firm earns the fee when the lease language is ambiguous, the amounts are large, or the dispute may need a formal opinion. The invoice-level table is the input either way.

What should I ask the landlord to send?

The statement, the general ledger detail for every account in the pool, the invoices for the categories you intend to test, the occupancy schedule by month, the gross-up and cap worksheets, and the management agreement if the fee is paid to an affiliate. Ask for the categories and the period by name, send it to the property manager named on the statement, and put it in writing with a date on it.

How many years back can I go?

Your lease sets it, and the common ranges are 12 to 24 months from delivery of the statement, sometimes longer. A few states add statutory rights, but the lease is the usual source. The practical constraint is that older packages are harder to obtain and the records may no longer be complete, so run the current year first and work backwards.

A reconciliation statement asks you to trust a total. A table with one row per invoice lets you check it, and turns "this feels high" into a clause, a page and a dollar figure. That shift is the whole audit.

📮 contact email: [email protected]