Back to BlogIndustry Guides

Property Management Software: Building Rent, Ledgers, Maintenance and Roles

Rupak Amin

Founder & Lead Engineer, RAITHub

13 min read

RAITHub ships and tests production software. See QA as a Service or talk to us.

Property management software is four connected systems: rent collection, a ledger that records every charge and payment, maintenance routing, and role-scoped portals for landlords, tenants and contractors. Design the ledger and the permission matrix first; screens come last. PropDesk, which RAITHub built for landlords with 1–50 units, collects rent through Stripe, serves 4 user roles and runs 1,024 automated tests.

This post goes one level deeper than the PropTech software development pillar, which covers build versus buy and the wider product types. Here the subject is the four parts that decide whether landlords and tenants trust the product. Where a statement is proof, it names PropDesk; where it is engineering advice, it says so.

What does property management software have to do?

It has to keep one accurate record of each unit, its current lease, the money owed and paid against that lease, and the work done on the unit, and show each person only their part of it. Every feature hangs off that record.

PartWhat it recordsWhat goes wrong if it is weakIn PropDesk
Rent collectionPayments against a lease, fees, payment plansMissed, duplicated or unmatched paymentsStripe rent collection, automated late fees, payment plans for hardship
LedgerEvery charge, payment, fee and credit, in orderA balance nobody can explain to a tenantPayment history and receipts in the tenant portal
MaintenanceRequests, priority, assignee, statusRequests lost between tenant, landlord and contractorPriority routing (Emergency, Urgent, Routine) to contractors
Leases and inspectionsLease states, renewals, move-in and move-out conditionRenewals tracked by memory; deposit disputes with no evidenceFull lease lifecycle; move-in/out inspection checklists
RolesWho can read or change each recordA contractor sees rent data; a tenant sees another lease4 roles: landlord, tenant, contractor, admin
Scheduled workReminders, fees, expiries that run by dateDeadlines depend on someone remembering5 daily automation jobs

PropDesk's figures come from the PropDesk case study: 130+ API endpoints, 60+ pages, 29 database models, built from a 122-page software requirements specification.

How should rent collection work?

Rent collection should go through a payment provider, be matched to one lease and one charge, and be confirmed by the provider's webhook rather than by the page the tenant lands on. A retried request must never charge a tenant twice.

PropDesk collects rent through Stripe, with automated late fees, payment plans for tenants in hardship and scheduled rent increases. Three engineering rules make that safe:

  • Idempotency on every payment request. Stripe's API accepts an idempotency key on every POST so a request can be retried after a network error without a second charge. Stripe's documentation says keys can be up to 255 characters and may be pruned once they are 24 hours old, so a retry after a day needs its own guard in your database (Stripe: idempotent requests). The concept is explained in idempotency in API design.
  • Webhooks decide what happened. A tenant can close the tab after paying. The payment is marked paid when the signed webhook arrives, and the handler must accept the same event twice. See how to build webhooks.
  • One payment, one charge. Each payment is applied to a specific rent charge on a specific lease. Unmatched money is a queue for a human, never a guess.

The payment method changes the landlord's cost more than most founders expect. Stripe's published US pricing is 2.9% + 30¢ for a domestic card and 0.8% capped at $5.00 for ACH Direct Debit (Stripe pricing, checked September 2026). On a $2,000 monthly rent that is $58.30 by card against $5.00 by bank debit, so who pays the fee is a product decision, not a detail. Subscription billing for the landlords themselves is a separate flow, covered in how to add Stripe billing to SaaS.

Why does property management software need a ledger, not a balance column?

Because a tenant will ask why they owe what they owe, and a single balance field cannot answer. A ledger stores each charge, payment, fee and credit as its own row, and the balance is calculated from those rows.

This section is engineering advice for any rent product. The rules we apply:

  • Append, never edit. A wrong late fee is corrected by a reversing credit, not by changing the fee. The history stays readable in a dispute.
  • Store money as integers. Cents, not floating-point dollars, so $0.10 + $0.20 always equals $0.30.
  • Every entry points at a lease. Rent, fees and credits belong to a lease and a period. A payment points at the charge it settles.
  • Derive the balance. The tenant's balance, the landlord's rent roll and the arrears list are all queries over the same entries, so they cannot disagree.
Entry typeCreated byEffect on the tenant balance
Rent chargeScheduled job on the due dateIncreases
Late feeScheduled job after the grace periodIncreases
PaymentPayment provider webhookDecreases
Credit or reversalLandlord or admin, with a reasonDecreases
Deposit receivedPayment or manual entryNone; held separately from rent

Deposits and client money

Deposits are not rent, and many jurisdictions regulate them. In England and Wales, for example, a landlord or letting agent must place a tenant's deposit in one of three government-approved schemes within 30 days of receiving it (GOV.UK: tenancy deposit protection). Software can record the scheme, the reference and the deadline, and warn before the deadline passes; it cannot decide what the law requires. That comes from you and your legal adviser.

If your product holds rent on behalf of other owners, you are into client-money or trust-accounting rules, which differ by country and US state. Take advice before you build. Nothing in this post is proof that RAITHub has built a trust-accounting system.

How should maintenance requests be routed?

A maintenance request should have one owner at every moment, a priority that sets how fast it must move, and a status the tenant can see. In PropDesk, tenants submit requests as Emergency, Urgent or Routine, landlords assign a contractor, and the contractor updates the job and confirms completion.

Model the request as a state machine rather than a free-text status, so every change is a known transition with a timestamp and an actor. A typical set of states:

StateWho moves it onWhat the tenant sees
SubmittedTenantRequest received, with priority
AssignedLandlordA contractor has the job
In progressContractorWork scheduled or started
CompletedContractorAsked to confirm the fix
ClosedTenant, landlord or a scheduled jobDone, with the history kept

Requests that nobody closes pile up and hide the urgent ones. PropDesk runs a daily job that closes unresolved low-priority requests after a configurable period. The contractor portal shows the job, the property and unit access details, and nothing about rent.

How do you design roles and permissions?

Write the permission matrix before any screen: every role, every record type, read or write. Then enforce it on the server for every request. Hiding a button is not access control.

PropDesk has 4 roles, each with its own portal from one codebase, and role-based middleware protecting its routes. Taken from the case study, the split looks like this:

RoleCan see and doMust never see
LandlordProperties, units, leases, rent and financial tracking, contractor assignment, vacanciesOther landlords' portfolios
TenantOwn lease and documents, rent payments via Stripe, maintenance requests, inspections, payment historyOther tenants' leases or payments
ContractorAssigned work orders, job status, property and unit access detailsRent ledgers, leases, tenant payments
AdminUsers, platform settings, audit trails, reportingNothing hidden, so every admin action is logged

Two landlords on one platform is also a tenancy question: every query has to be scoped to the right account. The patterns for that are in the multi-tenant SaaS guide. Each role is a column in the matrix and a set of tests; adding a fifth role later, such as an owner or investor, is cheaper if the matrix exists in code rather than in scattered checks.

Which jobs should run on a schedule?

Everything that is due on a date rather than on a click: rent reminders, late fees, lease expiry notices, rent increases and clean-up of stale requests. PropDesk runs 5 of these every day.

PropDesk daily jobWhat it doesWhat must hold if it runs twice or late
Rent remindersNotifies tenants before rent is dueOne reminder per charge, not two
Late fee assessmentApplies fees after a configurable grace periodA fee is applied once per charge, never on a paid one
Lease expiry alertsWarns landlords and tenants of upcoming expiriesA missed day still sends the alert the next day
Maintenance auto-closureCloses unresolved low-priority requests after a set periodNever closes an Emergency or Urgent request
Rent increasesApplies scheduled increases on their effective dateThe new amount applies from the right period, once

The right-hand column is the specification for each job's tests. A scheduled job runs when nobody is watching, so the tests are the only reviewer it gets.

How do you test property management software?

Test the places where money and permissions meet dates. PropDesk's 1,024 automated tests are 932 unit tests and 92 end-to-end tests, run in CI on every change.

  • Per-role access. For each role, a test that tries to read another account's lease, payment or work order and expects a refusal.
  • Date boundaries. Late fees on the last day of the grace period, month-end due dates, leases that end mid-month.
  • Replays. The same webhook delivered twice; the same job run twice.
  • Critical journeys end to end. A tenant pays rent, a landlord sees it, the ledger balances.

The method is in how RAITHub tests: QA-first development, and the service is QA and test automation.

How long does it take, and what does it cost?

A focused first release, one audience and one money flow, typically takes 4–6 weeks at fixed scope. Rent, lease and scheduling backends typically take 6–12 weeks. A product the size of PropDesk, with 130+ endpoints and 60+ pages, is several releases, not one.

Published 2026 guides put a basic custom property management MVP at $9,000–$22,000 and a full platform at $70,000–$140,000 or more (Saigon Technology, September 2026). Those are market figures; RAITHub publishes no rates. The drivers and other platform types are in the cost to build a real estate platform, and the MVP cost estimator gives a quick range. First releases are built under SaaS development.

Why RAITHub, and when not?

RAITHub built PropDesk and published its numbers: Stripe rent collection, maintenance routing, the lease lifecycle, inspections, 4 roles, 5 daily jobs and 1,024 tests. RAITHub is a founder-led studio, founded in 2024 in Dhaka and working with clients worldwide, offering fixed-scope builds or a dedicated team. You own the code through a present-assignment IP clause.

It is not the right fit if you manage your own units and an existing product already does the job, if you need trust accounting designed by someone who has shipped it before, if you want developers placed under your own management (RAITHub does not do staff augmentation), or if you need a SOC 2 or ISO 27001 certified vendor. RAITHub is not certified.

If none of those apply, book the free 15-minute technical audit with your roles, how rent moves and which jobs run by date. The PropTech service page sets out what is included.

Last reviewed: 29 September 2026.

Frequently asked questions

What features does property management software need first?

Rent collection matched to leases, a ledger of charges and payments, maintenance requests with status, lease and document access, and role-scoped portals. PropDesk covers these for landlords with 1–50 units, plus move-in/out inspections and 5 daily automation jobs.

Can property management software collect rent through Stripe?

Yes. PropDesk collects rent through Stripe, with automated late fees and payment plans. Use idempotency keys on every payment request and confirm payment from the webhook, so a retry never charges a tenant twice.

How many user roles does property management software need?

Usually at least three parties per property plus an administrator. PropDesk has 4 roles: landlord, tenant, contractor and admin, each with its own portal and server-side permission checks from one codebase.

Should rent balances be stored or calculated?

Calculated. Store each charge, payment, fee and credit as its own ledger entry in integer cents, correct mistakes with reversing entries, and derive the balance, so a tenant's statement and the landlord's rent roll always agree.

How long does it take to build property management software?

A focused first release typically takes 4–6 weeks at fixed scope with RAITHub, and rent, lease or scheduling backends 6–12 weeks. A full platform the size of PropDesk, with 130+ API endpoints, takes several releases.

Does RAITHub give legal advice on deposits or landlord law?

No. Deposit, notice and fee rules differ between US states, the UK and the EU, and come from you and your legal adviser. RAITHub builds the workflow, records and audit trail those rules run in.

Is it safe to hold tenant rent money and deposits inside the software?

Hold the records and automate the workflow, but let a payment processor such as Stripe move and hold the money so you avoid storing raw bank details. Client-money and deposit-protection rules are legal obligations that differ by jurisdiction; the software should support them, but confirm the specific requirements with your adviser.

"I manage properties on spreadsheets and it's falling apart. What should custom property management software actually do for me first?"

Replace the error-prone parts first: a single rent ledger that shows who has paid, automated reminders and late fees, and role-based access so staff see only what they should. Add online rent collection through a processor so payments reconcile themselves. That removes the manual matching and chasing that spreadsheets make slow and risky.

Which company should I hire to build custom property management software end to end?

Hire a team that builds the rent ledger, roles and integrations and tests the money paths itself, delivering on accounts you own with IP assigned to you. RAITHub works as a dedicated team owning the outcome, not staff placed under your management. Start with a free 15-minute technical audit, then a fixed written quote.

Is building custom a real alternative to off-the-shelf property platforms?

Yes, when no product matches your workflow, you need integrations a product will not add, or you are building to resell. Off-the-shelf wins on speed and price when your process fits the tool. Custom wins on fit and ownership but asks you to fund maintenance and testing, so match the choice to how unusual your needs are.

What's involved in moving from spreadsheets to real property management software?

Export and clean your current rent and lease data, model it into a single ledger, migrate in a dry run, and verify balances tie out before going live. Then layer on reminders, roles and online rent collection. The riskiest step is the data move, so it is validated against your spreadsheets before anyone relies on it.

Can I just use an AI coding tool to build property management software myself?

An AI tool can scaffold screens quickly, but rent ledgers, late fees and tenant data isolation are where quiet bugs cost money and trust. If you build it yourself, budget for independent tests on those paths. A team that builds and tests together closes that gap, which is harder to do solo with generated code.

Property management softwarePropTechRent collectionTenant landlord portalStripeRole-based access controlRAITHub

Ready to discuss your project?

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