Reconcile common area maintenance, insurance, and tax at year end, from the expenses actually posted to the pro-rata share each lease actually carries.
Group the GL accounts each recoverable cost comes out of into pools, once, and every lease reconciles against the same definition.
By square footage, or by an explicit percentage where the lease names one. The lease decides, not the report.
A lease recovers the pools its clauses say it recovers. Turning one off is an explicit decision, not a blank field somebody has to interpret.
The terms each lease was actually signed under, applied to that lease rather than to an average.
Where the year's estimates came from a prior system, enter what was billed and the reconciliation uses it, with a note saying where the figure came from and who entered it.
Missing square footage, a lease with no CAM terms, a pool with nothing in it. Told up front rather than found in the result.
A statement per tenant showing the pool, the share, what was billed, and what is owed or due back.
Posting freezes the reconciliation and generates the true-up charges. What was posted stays what was posted.
Every recovery traces back to a pool, a share, and the expenses that made it up. When a tenant's controller asks how you arrived at a number, the answer is on the statement rather than in a spreadsheet somebody has to reconstruct.