Heimly RENT OPS
Rent roll, receipts and the document vault
Part B, working. Rent Ops records money, it never moves it — so every screen is built around a human asserting a fact and Heimly issuing the proof. Balances, totals and statuses are all derived from the same payment records, so a row, a drawer and a total cannot disagree.
{{ j.tag }}{{ j.label }}
RENT STATES
{{ l.label }}
Six states, all distinct from the orange accent and from each other. Status leads every row — it is the thing people scan for.
MONEY IS RECORDED, NOT MOVED
No screen here takes a payment. A landlord records one, a tenant reports one, and it stays visibly pending on both sides until the landlord confirms. Only then does Heimly issue a numbered receipt.
SCOPE IS VISIBLE, NOT IMPLIED
Switch to Agent in the top right of the app: the roll drops to the three tenancies assigned to Chinedu Eze, and the status counts recount. An agent is never shown a total they cannot act on.
NAV CHANGE
Rent roll joins the landlord and agent nav as a top-level item. The old mock Payments entry redirects here rather than being deleted, so existing links and bookmarks keep working.
PARTIALS ARE REAL
A period is never shown as settled when it isn't. Record ₦90,000 against ₦150,000 and the row says partial with the balance outstanding — try it on Room 4.
B1–B7 The app Shell-less · drops into your existing routes
{{ v.label }}{{ v.badgeText }}
{{ scopeNote }}
{{ ro.label }}
You are offline Showing rent as of 14:02 WAT. Anything you record is queued and sent when you reconnect. Dismiss
Rent roll
{{ rollSubtitle }}
{{ monthLabel }}
Export Add tenancy
{{ tt.label }}
{{ tt.value }}
{{ tt.note }}
{{ c.label }}
SORT
STATUSPROPERTYTENANTRENTNEXT DUEBALANCE
STATUSPROPERTYTENANTRENTNEXT DUEBALANCE
{{ r.status }} 1 REPORTED
{{ r.property }}
{{ r.unitLine }}
{{ r.tenantName }}
{{ r.tenantKind }}
{{ r.rent }}
{{ r.cycle }}
{{ r.due }}
{{ r.dueRel }}
{{ r.balance }}
{{ r.lastPayment }}
{{ noResultsTitle }}
Nothing in {{ monthLabel }} matches these filters. The tenancies are still there.
Clear filters
{{ rowsCount }} Totals above follow these filters
Documents
One vault for the organisation. Receipts Heimly issues land here on their own.
Download archive Upload
{{ bm.label }}
{{ bi.label }} {{ bi.count }}
Storage {{ storageLabel }}
{{ storageNote }}
{{ docCount }}
NAMEPURPOSEPROPERTYSIZEADDED
{{ d.icon }}
{{ d.name }}
ISSUED BY HEIMLY
{{ d.purpose }} {{ d.property }} {{ d.size }} {{ d.added }}
{{ docsEmptyTitle }}
{{ docsEmptyBody }}
Clear filters
Import a portfolio
Nothing is saved until you commit. Every problem is shown on the row it belongs to.
Download template
bakare-portfolio-sep.xlsx
6 ROWS PARSED · 248 KB · NOTHING SAVED YET
Upload a different file
{{ importStep }} {{ importPct }}
Large files keep running if you navigate away. You will get a notification when it finishes.
Import finished
{{ isum.value }}
{{ isum.label }}
Download the 3 failed rows Start another import
{{ ws.num }}
{{ ws.label }}
{{ ws.note }}
Bring your sheet as it is
Excel or CSV, however your columns are named. You will match them to Heimly's fields in the next step — no reformatting first.
Drop a file here, or choose one
.xlsx or .csv · up to 5,000 rows
Continue to mapping Uploading the same file twice will not duplicate anything — rows are matched on property, unit and occupant, not appended.
Match your columns to Heimly's fields
We guessed from your headings. Anything left unmapped is simply not imported — no column is required to have a Heimly name.
YOUR COLUMNHEIMLY FIELDFIRST VALUE IN YOUR FILE
{{ mr.column }} {{ mr.sample }}
{{ dupeFieldNote }}
Back Review 6 rows {{ mapNote }}
{{ ic.label }}
{{ importBlocker }}
ROWPROPERTYUNITTENANTRENTSTARTRESULT
{{ ir.n }} {{ ir.property }} {{ ir.unit }} {{ ir.tenant }} {{ ir.rent }} {{ ir.start }} {{ ir.state }}
{{ ir.note }} {{ ir.fixLabel }}
Back to mapping {{ commitLabel }} {{ commitNote }}
My rent
What a tenant sees. Same records, their side of them.
{{ tenantStatus }} {{ tenantRef }}
{{ tenantAmount }}
{{ tenantDueLine }}
PROPERTY
Oniru Court · Flat 2B
CYCLE
Yearly · ₦8,500,000
Report a payment
Heimly does not take payments. You tell your landlord you paid; they confirm and a receipt is issued.
Payment history RECEIPTS FROM HEIMLY
{{ th.amount }}
{{ th.meta }}
{{ th.state }} {{ th.receipt }}
Your reminders On
Email and in app at 30, 14 and 1 days before rent is due, and once if it goes overdue. Sent once per window, never twice.
PHONE 390pt Status first · one thumb · 44px targets
The rent roll becomes a card list led by status. Recording and reporting a payment are bottom sheets completable with one thumb, camera included. The referral page, its share sheet and the admin Review queue are on the Growth page — they are the same components, not new ones.
{{ ph.caption }}
09:41
Heimly 1 REPORTED
Rent roll
EXPECTED
₦5.46m
RECEIVED
₦2.85m
OUT
₦2.61m
{{ pc.status }} {{ pc.balance }}
{{ pc.property }}
{{ pc.meta }}
Record a payment
09:43
TEN-0052
Partial
Yaba Studios · Room 4
Blessing Etim · monthly · external contact
RENT
₦150,000
RECEIVED
₦90,000
BALANCE
₦60,000
PAYMENTS SCHEDULE DOCS
₦90,000 confirmed
26 Aug 2026 · Cash · handed to caretaker
HR-000229
₦60,000 still outstanding. This period is not settled.
Record a payment
{{ ph.sheetTitle }}
{{ ph.sheetSub }}
Amount
{{ ph.sheetAmount }}
{{ ph.sheetBannerHead }}
{{ ph.sheetBannerBody }}
Method
Transfer Cash Cheque
Bank reference
Tap the camera to photograph the bank alert — it attaches as proof.
{{ ph.sheetCta }}
09:48
Documents
Search by name…
ALL 9 RECEIPTS 2 LEASES
{{ dc.icon }}
{{ dc.name }}
{{ dc.meta }}
Storage 1.4 / 5 GB
Upload a document
HR-000231.pdf
PAGE 1 OF 1 · 86 KB
Heimly
HR-000231
28 AUG 2026
Rent receipt
Issued by Bakare & Co
TenantChiamaka Nwosu
PropertyOniru Court · Flat 2B
Period coveredSep 2026
Amount received₦708,333
Share Download
STATES The ones that are not the happy path
Loading, empty, no-results, offline and job progress are all live in the app above — switch on Offline below, or filter the rent roll to nothing. These are the rest.
ERROR · ONE WIDGET FAILS ALONE
Totals could not be calculated
The rent roll below is correct and usable. Only this summary failed.
Try again REF 8F2C-41
CONFLICT · SOMEONE GOT THERE FIRST
Already confirmed by Chinedu Eze
He confirmed this payment 40 seconds ago and receipt HR-000230 was issued. Nothing you did was lost — there was simply nothing left to do.
See the receipt
PERMISSION · INLINE, NOT A WALL
Maitama Duplex is not assigned to you
You can see it in the rent roll because it belongs to your organisation, but the tenancy and its documents are closed to you. Ask an owner to assign it.
SUCCESS · SPECIFIC, NEVER “DONE”
Payment recorded, receipt HR-000231 issued
Filed under this tenancy and sent to Chiamaka Nwosu.
EMPTY · NEVER RECORDED A TENANCY
No tenancies yet
Two ways in — add one by hand, or bring a whole portfolio at once.
Add tenancy Import
TRY THEM LIVE
{{ offlineLabel }} Show loading skeletons Filter the roll to nothing
{{ dr.status }} {{ dr.id }}
{{ dr.heading }}
{{ dr.sub }}
{{ dr.pendingHead }} PENDING ON BOTH SIDES
{{ dr.pendingBody }}
Confirm and issue receipt Reject with a reason…
{{ st.label }}
{{ st.value }}
{{ st.note }}
Record a payment End tenancy…
{{ t.label }}
{{ sc.period }}
{{ sc.dueLine }}
{{ sc.amount }} {{ sc.state }}
{{ p.amount }} {{ p.state }}
{{ p.meta }}
{{ p.receipt }}
{{ p.voidNote }}
Nothing recorded yet
{{ dr.noPaymentsNote }}
Record the first payment
{{ d.icon }}
{{ d.name }}
{{ d.meta }}
Share
Reminders for this tenancy
{{ dr.reminderNote }}
WINDOWSENTCHANNELRESULT
{{ rm.window }} {{ rm.sent }} {{ rm.channel }} {{ rm.state }}
Each window fires once. A second send is impossible, not merely discouraged — that is why every row shows its window rather than a count.
WHAT THE 14-DAY REMINDER SAYS
{{ dr.reminderSubject }}
{{ dr.reminderBody }}
{{ dr.deepLinkALabel }} See my tenancy
{{ dr.reminderRecipients }}
{{ dr.contactInitials }}
{{ dr.contactName }}
{{ dr.contactKind }}
{{ cr.k }} {{ cr.v }}
Not on Heimly
Everything recorded against this contact stays with them. Inviting them adds a login to the same record — no history is moved or lost.
Invite to Heimly
Reject this report
{{ rejectSub }}
Rejecting does not delete anything. The report stays in the record marked rejected, the period stays outstanding, and your reason is sent to the tenant so they know what to do next.
REASON · SENT TO THE TENANT
{{ rr.label }}
Cancel Reject and tell the tenant
Record a payment
{{ recSub }}
Amount received
{{ rq.label }}
Date received
{{ recBalanceIcon }} {{ recBalanceHead }}
{{ recBalanceBody }}
{{ rm.label }}
{{ rm.value }}
Method
{{ rmt.label }}
{{ recRefLabel }}
Proof (optional)
{{ proofLabel }}
This looks like one you already recorded
{{ recDuplicateNote }}
Cancel {{ recSaveLabel }}
{{ toastIcon }}
{{ toastTitle }}
{{ toastBody }}