Money
Rent & invoicing
How rent flows from charge generation through payment, receipt, late fees, and reporting.
The rent charge
A RentCharge is one period's bill for one lease. It carries the period (year + month), due date, rent amount, late fee, discount, total, amount paid, balance, and status (PENDING, PARTIAL, PAID,OVERDUE).
Charges are generated by the monthly cron at 02:00 in your org's timezone, or on-demand from Rent → Generate. The generator is idempotent: re-running for the same period skips leases that already have charges.
Recording a payment
- Rent → open a charge →
Record Payment. Or use the quick action from the topbar (+). - Pick the payment method (CASH, BANK_TRANSFER, MOBILE_MONEY, CARD, CHEQUE) and the bank account (currency-validated against the lease).
- Optionally attach a deposit slip or receipt photo — supports JPG/PNG/PDF, magic-byte-validated.
- Submit. The system creates a
RentPayment, decrements the charge balance atomically, generates a sequenced receipt number, and posts a double-entry GL entry (Debit Cash, Credit Rent Revenue).
Late fees
A nightly cron checks every active lease for past-due charges past their grace period. If the lease has a late-fee policy (FIXED amount or PERCENTAGE of rent), it adds the fee using an atomic update guarded on lateFee=0 so the same fee never applies twice.
Need to waive? Open the charge → Waive Late Fee, provide a reason. A reversing GL entry posts to account 4200 (Late Fee Income) using the lease's currency.
Receipts
Receipts are PDF, branded with your org logo + address, and stamped with the receipt number, payment method, amount, and the tenant's name. They can be:
- Downloaded from the dashboard.
- Auto-emailed/SMS'd to the tenant on payment record (toggle in Settings → Communication).
- Pulled from the tenant portal under
/dashboard/tenant-portal/payments.
Tenant statements
Tenants → open a tenant → Statement. PDF/CSV/Excel showing every charge and payment over a date range with a running balance. The portal version updates live.
Overdue & AR aging
Two views:
- Rent → Overdue — every past-due charge across properties, sorted by days overdue. One-click reminder send per row.
- Reports → AR Aging — bucketed by 0-30 / 31-60 / 61-90 / 90+ days. Exportable.