Back to BlogIndustry Guides

Custom Commercial Property Management Software: Service Charges and Leases

Rupak Amin

Founder & Lead Engineer, RAITHub

15 min read

Build custom commercial property management software when your leases break the platform: service charges split across several schedules, one tenant on several units, rent reviews with caps and collars, or a year-end reconciliation rebuilt in spreadsheets. In Victoria, retail landlords owe an outgoings statement within three months of each accounting period's end; RICS expects full use of its service charge standard from 31 December 2026 year ends.

This guide is for commercial landlords, managing agents and PropTech founders in the UK, Australia and Canada who are deciding whether to build. It is written from the engineering side. RAITHub built PropDesk, a residential property management platform with a full lease lifecycle, Stripe rent collection and 1,024 automated tests. RAITHub has not shipped commercial service charge software, so everything below about service charges, outgoings and CAM is engineering guidance built on that lease engine, not a case study. Legal and accounting points are general information. Confirm them with your adviser, your accountant and the professional standards you work under.

When does custom commercial property software make sense?

When the lease is the product. Residential software is built around one tenancy, one unit and a monthly rent. Commercial portfolios break that assumption in predictable places, and the table shows where a platform usually copes and where teams start building.

Your situationUsually the better fitWhy
A small portfolio of single-let units on simple leasesBuy a platformRent, arrears and documents are standard features
Multi-let buildings with one service charge scheduleBuy, and test the year-end output with your accountantMany platforms handle a single schedule
Mixed-use estates with several schedules, caps and exclusions per leaseTrial platforms first; build the service charge engine if none models your leasesPer-lease exceptions are where spreadsheets take over
Your platform does 90% of the jobKeep it; build an add-on through its APIYou pay only for the missing piece
A PropTech startup selling to commercial landlords or agentsBuildThe data model and roadmap must be yours

If you are still weighing residential software, property management software development covers the general build, and building online rent collection covers the payment side.

How do service charges, outgoings and CAM differ between the UK, Australia and Canada?

The idea is the same everywhere: the landlord spends on shared costs and recovers a share from each tenant. The names, the paperwork and the rules differ, and the software has to produce the right document for each market.

MarketUsual termWhat governs itWhat the software must produce
UKService chargeThe lease, plus the RICS professional statement Service charges in commercial property (2nd edition) for RICS members and regulated firmsA budget before the year and a year-end certificate after it, issued "in a timely manner"
Australia (Victoria, retail)OutgoingsThe lease and the Retail Leases Act 2003 (Vic); other states have their own retail leases lawA written estimate, then an annual statement no later than three months after each accounting period
CanadaCommon area maintenance (CAM), or operating costs as additional rentMainly the lease; area is often measured to a BOMA standardMonthly estimates, then a year-end reconciliation per tenant

For the UK, RICS says the 2nd edition "sets mandatory requirements for RICS members and RICS-regulated firms", is effective from 31 December 2025, and that full compliance is expected for service charges with 31 December 2026 year ends and beyond (RICS: Service charges in commercial property). Its stated aims include "best practice, uniformity, fairness and transparency" and budgets and year-end certificates "issued in a timely manner". Read the standard itself for the specific timings and content it requires; we have not reproduced them here.

For Victoria, the Victorian Small Business Commission says the landlord "must give the tenant a written estimate of the outgoings", must give the annual statement "no later than three months after the end of each accounting period", and that the statement must be audited unless the tenant pays only GST, utilities, council rates and insurance and the statement comes with proof of payment. For Canada, BOMA publishes floor measurement standards, including ANSI/BOMA Z65.1-2024 for office buildings, which define the rentable area many leases use to share costs (BOMA standards).

General information only. Rules differ by state, province and lease; confirm what applies to each property with your adviser and accountant.

How do you apportion a service charge fairly in code?

Split each schedule's cost by each unit's weight, in integer cents, with a rounding rule that makes the shares add up to the exact total. A schedule is a pool of costs shared by a defined set of units: the whole building, the office floors only, the car park. Each unit's weight is usually its area, sometimes a fixed percentage written into the lease.

A worked example, for an illustrative three-unit building in pounds:

UnitAreaBuilding schedule (£120,000)Upper-floors schedule: lift and stairs (£18,000)Total service charge
A: ground-floor retail4,500 m²£60,000Not in this schedule£60,000
B: first-floor office3,000 m²£40,000£12,000£52,000
C: second-floor office (vacant)1,500 m²£20,000£6,000£26,000, to the landlord's account

Two rules matter more than the maths. First, a vacant unit keeps its weight: its share goes to a landlord line, never silently spread across the other tenants. Who bears a void share is set by the lease and the standards you follow, and the software should show it as a visible line. Second, rounding must be deterministic. Splitting £100,000.00 three ways cannot give three equal shares in pennies, so one unit gets the extra penny, and the same unit must get it every time the report is rerun.

A minimal TypeScript apportionment using largest-remainder rounding, with BigInt so large totals times large areas never lose precision:

// Apportion one schedule's cost across units by weight, in integer cents.
// Largest-remainder rounding: the shares always sum to the exact total,
// and ties break on unitId so a rerun gives the same answer.
export type Share = { unitId: string; weight: bigint } // e.g. area in m², or basis points from the lease

export function apportion(totalCents: bigint, shares: Share[]): Map<string, bigint> {
  if (totalCents < 0n) throw new Error('apportion costs; handle credits as a separate line')
  const totalWeight = shares.reduce((sum, s) => sum + s.weight, 0n)
  if (totalWeight <= 0n) throw new Error('schedule has no weight to apportion against')

  const rows = shares.map((s) => {
    const product = totalCents * s.weight
    return { unitId: s.unitId, cents: product / totalWeight, remainder: product % totalWeight }
  })

  let leftover = totalCents - rows.reduce((sum, r) => sum + r.cents, 0n)
  rows.sort((a, b) =>
    a.remainder === b.remainder ? a.unitId.localeCompare(b.unitId) : a.remainder > b.remainder ? -1 : 1,
  )
  for (const r of rows) {
    if (leftover === 0n) break
    r.cents += 1n
    leftover -= 1n
  }
  return new Map(rows.map((r) => [r.unitId, r.cents]))
}

// apportion(10_000_000n, [{ unitId: 'A', weight: 1n }, { unitId: 'B', weight: 1n }, { unitId: 'C', weight: 1n }])
// gives A = 3,333,334 and B = C = 3,333,333 cents: £100,000.00 exactly.

Real leases add layers on top of this function: a cap on a tenant's contribution, excluded cost categories for one lease, a fixed percentage instead of area, a management fee calculated on the recoverable total. Each is a rule applied before or after apportionment, and each needs its own test. Money is stored in integer cents or pence, never floating point.

How should one lease over several units be modelled?

As a lease that links to many units over time, not a unit that owns a lease. Commercial tenants take extra floors, give some back at a break date, and pay different rent lines for different spaces under one agreement.

EntityWhat it holdsWhy commercial needs it
LeaseParties, term, break dates, review dates, deposit or guaranteeThe legal agreement, independent of which units it covers
Lease unit (dated link)Lease, unit, from date, to dateA tenant can add or surrender space mid-term without a new lease
Rent lineType (base, car park, storage), amount, frequency, effective datesOne lease, several charges, each reviewed differently
Schedule membershipUnit, schedule, weight, effective datesWeights change when space is re-measured or re-let
Lease ruleCap, exclusion, fixed share, fee basisThe per-lease exceptions that break generic platforms

Every row with money or weights carries effective dates, because a year-end certificate must be reproducible as it stood on the day it was issued. Changes are recorded, not overwritten; the pattern is in how to design a SaaS audit log.

How do you automate rent reviews: fixed, indexed and open market?

Store the mechanism with the review date, calculate what can be calculated, and route the rest to a person. The software should never guess an open market figure.

Review typeWhat the software doesWhat stays with people
Fixed upliftApplies the stated increase on the review date and notifies the tenantNothing, beyond checking the lease wording once
Indexed (for example CPI), with a collar and capPulls the index values named in the lease, applies the floor and ceiling, drafts the noticeConfirming the index series and rounding rule the lease specifies
Open marketDiarises the review, tracks the interim rent and the negotiation statusThe valuation and agreement, often with surveyors
Settled lateCalculates the backdated difference from the review dateWhether interest or other terms apply, per the lease

An indexed review in integer maths, as engineering guidance. Index values are stored as integers (for example 133.9 stored as 1339), and increases are in basis points, where 100 basis points is 1%:

// Indexed rent review with a collar (floor) and cap (ceiling), all integers.
export function indexedRent(currentCents: bigint, indexOld: bigint, indexNew: bigint, collarBp: bigint, capBp: bigint): bigint {
  let upliftBp = ((indexNew - indexOld) * 10000n) / indexOld // rounds toward zero; check the lease's rounding rule
  if (upliftBp < collarBp) upliftBp = collarBp
  if (upliftBp > capBp) upliftBp = capBp
  return (currentCents * (10000n + upliftBp)) / 10000n
}

// £50,000 rent, index 1300 to 1352 (a 4% rise), collar 1%, cap 3%:
// indexedRent(5_000_000n, 1300n, 1352n, 100n, 300n) === 5_150_000n, so £51,500.

PropDesk already runs rent increases as one of its 5 daily automated jobs, alongside rent reminders, late fees and lease expiry alerts. A commercial review engine extends that idea with the mechanism, collar, cap and interim-rent states above.

What does year-end CAM or service charge reconciliation have to produce?

For each tenant: what was estimated and billed, what was actually spent and recoverable, their share of it, and the balancing charge or credit. The steps are the same in all three markets; the output document differs.

StepWhat the software must do
1. Close the year's costsLock actual spend per schedule and cost category, with invoices attached
2. Remove what isn't recoverableApply lease exclusions and any caps before apportionment
3. ApportionSplit each schedule by the weights in force during the year, pro rata for part-year occupation
4. Compare with estimates billedPer tenant, per schedule: billed minus actual share
5. Issue the statementUK year-end certificate, Victorian outgoings statement, or Canadian CAM reconciliation, in the format your accountant or auditor signs off
6. SettleRaise balancing charges, credit overpayments, and keep the whole calculation reproducible

Test this more than anything else. Year-end figures reach tenants, auditors and sometimes disputes, so every rule should have an automated test with a known answer, and every release should rerun last year's reconciliation to prove nothing moved. Regression testing after every deploy explains how, and testing payments and webhooks covers the collection side.

What working hours overlap with a Dhaka team from London, Sydney or Toronto?

Dhaka is UTC+6 with no daylight saving. On a 9:00 to 18:00 day at both ends, London shares about 3 hours in winter and 4 in summer, Sydney 4 to 5, Perth 7, and Toronto gets a fixed 2-hour window in the Dhaka evening.

CityShared hoursWindow in local timeWindow in Dhaka time
London (GMT, winter)309:00–12:0015:00–18:00
London (BST, summer)409:00–13:0014:00–18:00
Sydney or Melbourne (AEDT, October to April)414:00–18:0009:00–13:00
Sydney, Melbourne (AEST) or Brisbane513:00–18:0009:00–14:00
Perth (AWST)711:00–18:0009:00–16:00
Toronto (EST / EDT)2, fixed daily window08:00–10:00 / 09:00–11:0019:00–21:00

Everything outside the window runs async, with a written handoff every day. The working week and any shift in hours are agreed per client when the engagement starts. Year-end is the one period where you want more live time with the team, so plan the reconciliation release well before your first statement is due.

What should the first release of a commercial property product include?

One portfolio's leases and one year-end, end to end. The illustrative hours below are assumptions to show where the effort goes, not a quote; the MVP cost estimator turns your own scope into a range, and pricing explains how RAITHub quotes.

Module (illustrative)Assumed hoursWhy it sizes this way
Properties, units, multi-unit leases, rent lines150Dated links and several charges per lease
Rent invoicing and collection100Quarterly or monthly billing, arrears, payment matching
Service charge schedules, budgets and apportionment160Per-lease rules, caps and exclusions
Year-end reconciliation and statements120Reproducible documents in each market's format
Rent review engine70Fixed and indexed calculations; open market as a workflow
Tenant and landlord portals90Statements, invoices, documents and maintenance requests
Automated tests and QA160Known-answer tests for every money rule
Total850

The portal side is covered in tenant portal features tenants actually use, and maintenance routing in a maintenance request system that routes jobs to contractors.

Why RAITHub for this

  • A lease engine already built and tested. PropDesk covers the full lease lifecycle, Stripe rent collection with automated late fees and payment plans, maintenance routing to contractors and move-in and move-out inspections, across 4 user roles, with 5 daily jobs and 1,024 automated tests (PropDesk case study).
  • Money logic tested first. TheSkinProof, the founder's own marketplace venture, runs bKash, Nagad, SSLCommerz and cash on delivery with 750+ automated tests. Integer money, idempotent payments and known-answer tests are the default.
  • Honest scope. RAITHub has not shipped commercial service charge, outgoings or CAM software. The quote treats those modules as new work, and your accountant or surveyor defines the rules they encode.
  • Multi-tenant platforms for founders. The SaaS development service covers products sold to many landlords or agents, and the real estate industry page sets out what RAITHub builds for PropTech.
  • Fixed scope and your IP. A free 15-minute technical audit, a fixed written quote, an NDA as standard, and all code assigned to you.

When you don't need us

  • Your platform produces correct year-end statements. Keep it; switching or building costs more than the subscription.
  • You want a vendor that has already shipped service charge accounting. Choose one with that track record.
  • You need a UK, Australian or Canadian team on site. RAITHub works remotely from Dhaka and has no local office.
  • You need native iOS or Android apps. RAITHub builds web applications and PWAs, not native mobile apps.
  • You need legal, accounting or surveying advice. That is for your adviser, accountant or surveyor; RAITHub builds the software their rules run in.
  • You need listing feeds or MLS data. RAITHub has not built MLS integrations.

Standards and regulator pages checked on 30 September 2026. General information only; confirm legal, accounting and professional-standard points with your advisers.

If your leases have outgrown your software, book the free 15-minute technical audit. Bring one anonymised lease summary, one year's service charge or CAM workings, and the markets you operate in.

Frequently asked questions

When does custom commercial property management software make sense?

When your leases break the platform: several service charge schedules per building, per-lease caps and exclusions, one tenant across several units, or indexed reviews with collars and caps. If a platform already produces correct year-end statements for your portfolio, keep it or build a small add-on instead.

What is the RICS service charge standard?

RICS publishes Service charges in commercial property, a professional statement now in its 2nd edition. It sets mandatory requirements for RICS members and RICS-regulated firms, took effect on 31 December 2025, and full compliance is expected for service charge years ending 31 December 2026 onwards. Read the standard for its specific requirements.

How should software apportion service charges between tenants?

Split each schedule's costs by each unit's weight, usually area, in integer cents, using a deterministic rounding rule such as largest remainder so shares sum exactly to the total. Keep vacant units in the calculation and show their share as a landlord line.

What is CAM reconciliation?

Common area maintenance reconciliation is the year-end comparison, common in Canadian and US leases, of the estimated operating costs each tenant paid against their actual share. The result is a balancing charge or a credit per tenant, calculated under the lease's exclusions, caps and area measurements.

When must a Victorian retail landlord give an outgoings statement?

The Victorian Small Business Commission says the annual statement is due no later than three months after the end of each accounting period, and it must be audited unless the tenant pays only GST, utilities, council rates and insurance with proof of payment. Confirm the rules for other states with your adviser.

Has RAITHub built commercial property software?

No. RAITHub built PropDesk, a residential property management platform with a full lease lifecycle, Stripe rent collection, 4 roles and 1,024 automated tests. Commercial service charge, outgoings and CAM modules would be new work, built on that lease engine and priced as such.

commercial property management softwareservice charge softwareCAM reconciliationoutgoings reconciliationrent review softwaremulti-unit leaseproptech

Ready to discuss your project?

Book a free 15-minute technical audit with our engineering team.