Skip to main content

Property Management — User Manual

This is the app your leasing, facilities, and finance teams use every day. It walks a rental relationship through its full life cycle — from listing a property to paying the landlord — while every invoice and payment lands in ERPNext's standard accounting exactly like any other transaction.

Throughout this manual, examples use neutral placeholder names (e.g. Harborview Properties Ltd, Greenfield Tower, unit A-101, tenant Jane Doe). Substitute your own company, properties, and people.

What you'll need

  • Your login and the correct Company selected wherever a Company field appears (see Switching Company).
  • A Property Manager, Property Accountant, or Accounts User role, depending on the step.
  • Billing Items (Rent, Service Charge, Parking, Utility, Penalty) mapped once by your System Manager under Property Management Settings — ask if these look missing.

Open the app from the Desk home tile Property Management, or search property in the Awesomebar.

Property Management workspace

The rental life cycle at a glance

Property → Property Unit → Tenant (Customer) + Landlord (Supplier)
→ Lease → (auto) Sales Invoice → Payment Entry (receipt)
→ Security Deposit → Deductions → Refund
→ Utility Meter → Meter Reading → billed on the rent Sales Invoice
→ Landlord Disbursement (payout to landlord, net of fee + WHT)
→ Broker Commission (payout to agent)
→ Facility Work Order (maintenance)
→ Inspection (move-in / move-out / routine)

Everything above is native ERPNext underneath: a Tenant is a Customer, a Landlord/Broker is a Supplier, rent is a Sales Invoice, a receipt is a Payment Entry, and withholding tax posts a real Journal Entry through ERPNext's Tax Withholding Category. The app automates the industry-specific parts (escalation, proration, retention of deposits, landlord net payout) and hands the result to the ledger you already trust.


1. Import or create Properties (blocks, floors, units)

Create one Property

  1. Go to Property Management → New Property (or Awesomebar: new property).
  2. Fill in:
    • Property Code and Property Name — e.g. GT-01, "Greenfield Tower".
    • Property Type — Portfolio, Estate, Building, Block, Standalone, Commercial, Mixed Use, or Land. Use Portfolio/Estate for a grouping record and Building/Block for the physical asset under it (set Parent Property to nest them — this is how you model blocks → floors).
    • Status — Active, Under Construction, Inactive, or Sold.
    • Landlord — link to the owning Supplier record (create the Supplier first if new — see Step 3).
    • Property Manager — the staff User responsible.
    • Company — the company that owns/manages this property.
    • Address section — Address Line 1/2, City/Town, County/Region, Postal Code, Country, and optionally GPS Latitude/Longitude and Land Title / LR Number.
  3. Optionally attach Photos and add Notes.
  4. Save.

Bulk-import properties and units

For an initial load of many blocks, floors, and units, use ERPNext's native Data Import rather than typing each one:

  1. Awesomebar: Data ImportNew.
  2. Document Type = Property (then repeat for Property Unit).
  3. Download the template, fill in one row per property (or unit), upload, Start Import.

See the native Data Import manual. Import Properties first, then Property Units (units link back to their property).

Worked example

Property Code GT-01, "Greenfield Tower", Type Building, Parent Property North Estate (Portfolio), Landlord Harborview Holdings (Supplier), Company Harborview Properties Ltd.

2. Add Property Units

  1. From the Property record, or via New Property Unit.
  2. Fill in:
    • Property — link back to the parent Property.
    • Unit Code / Unit Name / Floor — e.g. A-101, floor 1.
    • Unit Type — Studio, Bedsitter, 1–4+ Bedroom, Maisonette, Bungalow, Villa, Apartment, Shop, Office, Warehouse, Godown, Stall, Parking, Room, Other.
    • Availability Status — Vacant, Occupied, Under Maintenance, Reserved, Not Available. This updates automatically as leases start and end, but you can also set it manually.
    • Specifications — Floor Area (sqm/sqft), Bedrooms, Bathrooms, Furnishing, Parking Slots.
    • Commercials — Monthly Rent, Deposit, Service Charge, Parking Charge (these become the lease defaults for the unit).
    • Utilities — Water Meter No / Electricity Meter No, if the unit has its own meter.
  3. Save. The unit now appears on the Property's unit list, in the Rent Roll report, and in the Occupancy and Vacancy report.

3. Set up the Tenant and Landlord

Tenant = a standard ERPNext Customer (with property fields)

Create the tenant via New Customer. Beyond the usual name and contact details, the app adds a Property / Tenant Details section to every Customer:

  • Is Tenant — tick this.
  • Tenant Status — Prospective, Active, Notice Given, Vacated, or Blacklisted (use Prospective for a lead you haven't leased to yet).
  • ID Type (National ID / Passport / Alien ID / Company Reg) + ID Number + ID Document (attach a scan/photo of the document).
  • KRA PIN / Tax ID — use the native Customer Tax ID field for the tenant's tax PIN.
  • Emergency Contact name + phone, and Guarantor name / phone / ID number.
  • Blacklisted + Blacklist Reason — to flag a tenant you won't lease to again.
  • Move In / Out Checklist — a table where you tick off handover items (keys, meter photos, signed inventory, etc.) at move-in and move-out.

Attach any additional documents (lease copy, references) using the standard Attachments sidebar on the Customer.

Landlord = a standard ERPNext Supplier (with owner fields)

The Landlord is a Supplier, already linked on the Property in Step 1. The app adds a Property / Landlord Details section:

  • Is Landlord — tick this. Landlord Status — Active / Inactive.
  • ID Type / ID Number / ID Document — the owner's identification.
  • Management Fee % — your default management commission on this landlord's collections (used later in the Landlord Disbursement).
  • Is Broker / Agent — tick if this Supplier is also (or instead) a letting agent.
  • Property Ownership table — one row per property with an Ownership %, for co-owned properties.
  • Bank details — use the native Supplier Bank Account to store the landlord's payout account.
"Management agreement" as a signed document

The commercial terms of your management appointment (fee %, ownership split) live on the fields above. If you also keep a signed management agreement PDF, attach it to the Supplier or the Property via the standard Attachments sidebar. A dedicated management-agreement document type is not part of this app (see the coverage notes).

4. Opening balances

Before go-live, load opening balances for tenants (arrears), landlords, suppliers, and deposits using standard ERPNext:

  • Tenant / landlord / supplier opening balances — via an Opening Journal Entry or the Accounting Opening Invoice Creation Tool. See native Opening Balance.
  • Held security deposits — create a Security Deposit record (Step 7) per active lease, and post the matching deposit liability via the opening Journal Entry.

Reconcile opening figures to your signed source documents before enabling automatic billing.

5. Create a Lease

  1. New Lease (Awesomebar: new lease).
  2. Fill in:
    • Tenant (Customer), Property, Unit.
    • Status — starts as Draft; set to Active once signed. Later values: Notice Given, Expired, Terminated.
    • Company, Currency.
    • Term — Start Date, End Date, Billing Day of Month (the day rent invoices generate each month), Notice Period (days), Auto-Renew Reminder.
    • Rent & Charges (monthly)Monthly Rent, Service Charge, Parking Charge, Security Deposit amount. Each is billed as its own line on the rent invoice (and utilities ride the same invoice — see Step 8), so a tenant sees rent, service charge, parking, and utilities as separate terms.
    • Escalation & ArrearsEscalation % and Escalate Every (months) for periodic rent increases; Grace Days and Late Penalty % for overdue rent. If you set an escalation % but leave the cycle blank, it defaults to the system-wide cycle in Settings.
    • Broker / Agent (optional) — link the Broker (Supplier) and choose a Commission Basis (One Month Rent / Percent of Annual Rent / Fixed Amount) and value — this feeds the Broker Commission step below.
  3. Submit the lease, then set Status = Active. Submitting is what makes the lease eligible for automatic rent generation.
Worked example

Tenant Jane Doe, Unit Greenfield Tower – A-101 (2 Bedroom), Monthly Rent 80,000, Service Charge 6,000, Parking 4,000, Deposit 80,000, Billing Day 1, Escalation 5% every 12 months, Grace 5 days, Late Penalty 2%, Broker Summit Realty (Supplier), Commission Basis One Month Rent. (Amounts in your base currency.)

6. Rent billing — automatic, with escalation and proration

The app owns a purpose-built rent-invoice generator (it does not use ERPNext Auto Repeat, which cannot escalate or prorate). Once Enable Automatic Rent Invoicing is on in Property Management Settings, a daily background job:

  1. Expires any lease whose end/termination date has passed, and frees its unit.
  2. For every Active (and Notice Given) lease, generates the Sales Invoice(s) due up to today, one per billing period, from the lease's Billing Day.
  3. Applies one-time late penalties to overdue, unpaid rent invoices.

Each generated invoice carries separate lines for Rent, Service Charge, Parking, and any unbilled Utility readings, using the Items mapped in Settings. If Auto-Submit Generated Invoices is on, they post straight to the tenant's ledger; otherwise they sit as drafts for review first.

Escalation — rent compounds automatically every Escalate Every (months) from the lease start (e.g. +5% each year), with no manual rent edit.

Proration — the first and last billing periods are prorated by days (days in the partial period ÷ days in the full billing cycle). A tenant who moves in on the 15th is billed only for the days occupied; a tenant leaving mid-month is billed only to their exit. Service charge and parking prorate the same way.

Billing cursor — the lease's Last Invoiced Upto field tracks how far billing has run, so a period is never double-billed even if the job runs twice.

Generate rent manually (on demand)

You don't have to wait for the nightly job. On any submitted Active lease, click Generate Rent Invoice (Property Manager / Property Accountant only). It creates every invoice due up to today and returns the list — handy for a new lease or a catch-up. It is fully idempotent: running it again creates nothing if already up to date.

7. Collecting rent (receipts)

  1. Open the Sales Invoice and click Create → Payment, or go to Accounting → Payment Entry.
  2. Record the receipt against the invoice — see Payment Entry. The tenant's outstanding balance and the Tenant Ledger report update immediately.

One payment split across several charges — a single Payment Entry can be allocated across multiple invoices (rent, service charge, parking, utilities, penalties, arrears) in its References table. Enter the received amount, then set the allocated amount against each outstanding invoice. This is standard ERPNext allocation.

Partial receipts — allocate less than the invoice total; the invoice stays partly outstanding and continues to age.

Unidentified / on-account receipts — if money arrives before you know which invoice it settles, record the Payment Entry without references (leave it unallocated / on account). Later, open the Payment Entry and allocate it, or use Accounting → Payment Reconciliation to match it to the right invoices. See native Payment Reconciliation.

Automatic receipt confirmations — if the Payment Receipts app is installed, submitting a customer Payment Entry automatically sends the tenant an Email/SMS/WhatsApp receipt (see M-Pesa Daraja and the Payment Receipts guide).

Arrears aging

  • Per tenant — the Tenant Ledger report (Step 13) shows a tenant's invoices, payments, and running balance.
  • Aged buckets (current / 30 / 60 / 90 / 90+) — use ERPNext's native Accounts Receivable / Accounts Receivable Summary report, filtered by Customer Group or Company, with ageing ranges set to 30, 60, 90. See native Accounts Receivable.

8. Security Deposit

  1. New Security Deposit, linked to the Lease, Tenant, and Unit.
  2. Amount, Received Date, Payment Reference. Status moves Draft → Received → Held.
  3. On move-out, add rows to the Deductions table (each with a Description and Amount — e.g. damage repairs found at inspection). The record auto-calculates Total Deductions and Balance.
  4. Set status to Partially Deducted, Refunded, or Forfeited, and process any refund via a normal Payment Entry.

Move-out inspection findings with an estimated cost (Step 12) are the natural source of a deduction line.

9. Utility billing (water / electricity)

  1. New Utility Meter per unit — Meter Type (Water/Electricity/Gas/Other), Meter Number, Unit of Measure, Rate per Unit, and Active checkbox.
  2. Each cycle, capture a Meter Reading: Meter, Reading Date, Previous Reading, Current Reading. The record computes Consumption and Amount (consumption × rate).
  3. You don't invoice the reading separately — the next rent invoice for that unit automatically picks up all unbilled readings dated on or before the period end and adds them as Utility lines, then marks each reading Billed and links it to that Sales Invoice.
Worked example

Water meter WTR-A101, Rate 250/m³, Previous 1,204, Current 1,219 → Consumption 15 m³ → Amount 3,750, added to the tenant's next rent invoice as a Utility line.

10. Landlord Disbursement — paying the owner

This is how you pay a landlord their share of collected rent, after your fee and tax.

  1. New Landlord Disbursement for the Landlord and Property, with a Period From / To.
  2. Add the period's collected rent invoices to the Collections table (each row: Sales Invoice, Lease, Unit, Invoice Total, Collected Amount) — this rolls up to Gross Collected.
  3. Add any deductions (maintenance recharges, repairs paid on the landlord's behalf) to the Deductions table — Description + Amount — rolling up to Total Deductions.
  4. Set Management Fee % (defaults from the landlord's Management Fee %) — the system computes Management Fee.
  5. In the Withholding Tax section, pick the native Tax Withholding Category, confirm the WHT %; the record computes WHT Amount and posts a native Journal Entry (WHT Journal Entry) exactly the way your accountant already handles WHT elsewhere in ERPNext.
  6. The record computes Net Payable:
Net Payable = Gross Collected − Total Deductions − Management Fee − WHT Amount
  1. Pay the landlord via a Payment Entry, linked back to the disbursement's Payment Entry field. The invoices it settled record the disbursed amount on their Disbursed to Landlord field, so nothing is paid out twice.
Worked example

Period: one month, 9 units, Gross Collected 585,000. Deductions (plumbing repair) 12,000. Management Fee 10% → 58,500. WHT 5% → 26,175. Net Payable = 585,000 − 12,000 − 58,500 − 26,175 = 488,325, paid to the landlord's bank account.

11. Broker Commission

  1. New Broker Commission — Broker (Supplier), Commission Type (Rental or Sales), source Lease or Property/Unit.
  2. Commission Basis — One Month Rent, Percent of Annual Rent, Percent of Sale Value, or Fixed Amount — with Basis Amount and Rate / Value; the record computes Commission Amount.
  3. Pay via a Payment Entry, linked in the Payment Entry field.

A lease with a Broker + Commission Basis set (Step 5) can generate its commission directly from the lease.

12. Facility Work Order — maintenance

  1. New Facility Work OrderSubject, Property, Unit, Category (Plumbing, Electrical, Structural, Painting, HVAC, Security, Cleaning, Landscaping, Appliance, Other), Priority (Low/Medium/High/Urgent).
  2. Description, Reported By (Tenant), Assigned To (staff User — manager/technician), Scheduled Date.
  3. Tick Preventive (PPM) for scheduled preventive maintenance and optionally link an Asset.
  4. Track Labor Cost / Material Cost — the record totals Total Cost. For materials issued from your store, use a native Stock Entry (Material Issue) and record the cost here.
  5. Move Status through Open → In Progress → On Hold / Completed, with Resolution Notes and Completion Date.

Photos — attach before/after photos using the Attachments sidebar; tenants can also raise a request (with a description) from the Tenant Portal (Step 14), which creates a Work Order in Open status assigned to the unit.

Contractor costs — where an outside contractor does the work, capture their charge under Material/Labor cost, and settle them as a native Supplier via a Purchase Invoice/Payment Entry.

Contractor quotation comparison, service-contract/insurance reminders

Comparing several contractor quotations before awarding, and automatic preventive-schedule / service-contract / insurance / statutory reminders, are not built into this app. Use native ERPNext Request for Quotation → Supplier Quotation comparison for quotes, and native Notifications for date-based reminders. See the coverage notes.

13. Inspections (move-in / move-out / routine)

  1. New Inspection — Type (Move-In, Move-Out, Routine), Unit, Property, Lease, Tenant, Inspector, Inspection Date.
  2. Add each finding to the Snags table — Area/Item, Condition (Good/Fair/Damaged/Missing), Action Required, Est. Cost, and an optional Photo. The record totals Total Estimated Cost.
  3. Capture meter readings at move-in/move-out via a Meter Reading (Step 9).
  4. Record Sign-off — Signed Off By, Sign-off Date.

Move-out snags with an estimated cost feed directly into a Security Deposit deduction (Step 8), and from there to the deposit refund.

14. Portals — tenant, landlord, and broker self-service

The app ships three secure, self-service web portals. A user is linked to their party through their Contact record, so a landlord only ever sees their own properties, and one landlord can never see another's data (party-scoped, session-derived isolation). Portal menu links appear once the user has the matching role.

PortalURLRoleWhat the user sees
Tenant Portal/tenant-portalProperty TenantTheir leases, their rent invoices, their payment history, their total outstanding balance, their maintenance requests — and a form to raise a new maintenance request (creates a Facility Work Order)
Landlord Portal/landlord-portalProperty LandlordTheir properties and units (occupancy), and their landlord disbursements (collections, fees, WHT, net paid)
Broker Portal/broker-portalProperty BrokerTheir commissions (earned/paid), the leases they introduced, and total earned

Set up a portal user:

  1. Create/confirm a Contact for the tenant/landlord/broker and link it to their Customer/Supplier.
  2. Create a Website User (or invite the person) and set the same email on the Contact so the portal can resolve their party.
  3. Assign the matching role (Property Tenant / Landlord / Broker).
  4. Ask them to log in and open the portal URL.
Landlord-to-landlord isolation

To prove isolation, log in as landlord A and confirm only A's properties and disbursements appear; log in as landlord B and confirm B sees only B's. Because the portal derives the party from the logged-in user's Contact, neither can reach the other's records — even by URL.

The portals are mobile-responsive (they reflow for phone screens).

15. Reports

All under Property Management → Reports (or search the report name in the Awesomebar):

ReportWhat it showsDaniel's ask covered
Rent RollEvery unit, its current lease, tenant, and current (escalated) monthly rent — your one-page occupancy + revenue snapshotrent roll (occupied/vacant/notice)
Tenant LedgerA tenant's invoices, payments, and outstanding balancetenant statement / arrears per tenant
Landlord StatementA landlord's disbursement history — collections, fees, WHT, net payoutslandlord statement (collected/expenses/fees/net)
Occupancy and VacancyVacant vs occupied vs under-maintenance units, by propertyvacant + upcoming-vacant display
Deposit RegisterEvery Security Deposit, its status, and balancedeposit tracking
Broker Commission StatementCommissions earned and paid, by brokeragent commissions

For per-property / per-landlord profitability and consolidated views, tag each transaction with the property (rent invoices carry the property/unit automatically) and use native ERPNext Profit and Loss / General Ledger filtered by the property Cost Center or Accounting Dimension, plus the Landlord Statement for owner-level P&L.

Rent Roll report

Accounting & controls

  • Per-property / per-landlord accounting — rent Sales Invoices are stamped with the property and unit; combine with a Cost Center or Accounting Dimension per property to get property-level P&L in native financial reports.
  • Credit note / invoice reversal with audit trail — never edit a posted invoice to fix a lease. Use ERPNext's Cancel + Amend (creates an "Amended From" trail) or issue a Credit Note (Return) against the Sales Invoice. Both leave a full audit trail. See native Credit Note.
  • Statements — Tenant Ledger (tenant), Landlord Statement (landlord), native Supplier Ledger (supplier).

What this app does not do

To set expectations honestly, these adjacent items are not part of the Property Management app today and use native ERPNext or are on the roadmap:

  • Contractor quotation comparison before awarding maintenance → use native RFQ → Supplier Quotation.
  • Preventive-schedule / service-contract / insurance / statutory reminders → the Preventive (PPM) flag exists on a Work Order, but automatic recurring reminders use native Notifications.
  • Automatic lease-expiry reminder notifications → the lease auto-marks Expired and has an Auto-Renew flag, but proactive reminder emails use native Notifications.
  • Payment plans / instalment schedules for arrears → record instalment receipts as partial Payment Entries; a structured instalment plan is not built in.
  • A full leasing pipeline (enquiry → viewing → application conversion) → the Prospective tenant status exists; a viewing/application workflow is not part of this app.
  • Service-charge budget-vs-actual and common-cost apportionment across units → service charge is billed per lease; automatic budget-vs-actual reconciliation is not built in.
  • A signed management-agreement document type → fee %, ownership %, and bank details are captured on the landlord Supplier; attach the signed PDF to the record.

Troubleshooting

ProblemLikely causeFix
No rent invoice generated on Billing DayLease not submitted/Active, or auto-invoicing offCheck the lease is submitted and Active; ask System Manager to confirm Enable Automatic Rent Invoicing in Settings; or click Generate Rent Invoice manually
Rent amount looks too small on a new leaseFirst period was prorated for a mid-month startThis is correct — the tenant is billed only for days occupied
Rent didn't increase on the anniversaryEscalation % or "Escalate Every (months)" not setSet both on the lease; escalation compounds from the lease start date
Unit still shows "Occupied" after tenant leftLease not Expired/TerminatedSet the lease to Terminated or let the daily job Expire it
Landlord Disbursement net payable looks wrongA collection or deduction row missingRe-check the Collections and Deductions tables line by line
Can't see the Property Management tileMissing role or license issueAsk System Manager; see Licensing
A landlord sees no data in their portalTheir Contact isn't linked to the Supplier, or wrong roleConfirm the Contact's email matches the Website User and the Property Landlord role is assigned

See also