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

  1. Rent → open a charge → Record Payment. Or use the quick action from the topbar (+).
  2. Pick the payment method (CASH, BANK_TRANSFER, MOBILE_MONEY, CARD, CHEQUE) and the bank account (currency-validated against the lease).
  3. Optionally attach a deposit slip or receipt photo — supports JPG/PNG/PDF, magic-byte-validated.
  4. 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.