Rent Payments
Rent Payments turns your Rent Agreements into individual billing periods (like invoices) and lets you record how much of each one has actually been collected from the vendor.
Overview
Each row on this page is one billing period for one agreement — it has a total amount, an amount paid so far, a remaining balance, and a status (Pending, Partial, Paid, Overdue).
Payments are not created automatically when you save an agreement; you either generate them one at a time for a specific agreement/period, or use Auto Generate to create the next due payment for every active agreement in one click.
Recording a payment supports partial payments — you can pay less than the balance and the record stays Partial until it is fully settled.
Before You Start
- Requires the Rent Management feature on the Advanced plan tier or above, and manager-level access.
- At least one ACTIVE rent agreement must exist (created on the Rent Agreements page) before you can generate a payment.
Step-by-Step Guide
1 Auto-generate rent payments for all active agreements
- Click Auto Generate at the top of the page.
- Confirm the prompt ("Generate rent payments for all active agreements?").
- The system creates the next due payment for every active agreement that does not already have one for the current period, and the list refreshes automatically.
2 Manually generate a payment for one agreement
- Click Generate Payment.
- Select the Agreement from the dropdown — each option shows vendor name and monthly rent for quick identification.
- Pick the Period Start date for the billing cycle you want to generate.
- Click Generate to create the payment record; it appears in the list with status Pending.
3 Filter the payments list by status
- Use the status chips at the top (All, Pending, Partial, Paid, Overdue) to narrow the list to one state.
- The active chip is highlighted; click it again or click "All" to clear the filter.
4 Record a payment received from a vendor
- On any payment row that is not already Paid, click Record Payment.
- Review the summary panel showing Total Amount, Already Paid, and Balance Due for that period.
- Enter the Payment Amount — it defaults to the full remaining balance but can be reduced for a partial payment (cannot exceed the balance).
- Choose the Payment Method: Cash, UPI, Bank Transfer, Cheque or Card.
- Optionally enter a Reference/Transaction ID for reconciliation.
- Click Record Payment to save — the balance and status update immediately (Partial if balance remains, Paid if fully settled).
Every Field & Button, Explained
| Field / Button | What it does |
|---|---|
Auto Generate | Bulk-creates the next due payment for every active agreement in one action, after a confirmation prompt. |
Generate Payment | Opens a modal to manually create one payment for a chosen agreement and period start date. |
Status filter chips | All / Pending / Partial / Paid / Overdue — filters the payments list client-side against the selected status. |
Invoice (column) | The generated invoice number for that billing period. |
Total (column) | The full amount due for that billing period. |
Paid (column) | The amount already collected against this period, shown in green. |
Balance (column) | Total minus Paid — the amount still owed, shown in red. |
Period / Due | The billing period (start to end date) and the due date for that period. |
Record Payment (button) | Opens the payment-recording modal for that specific billing row; hidden once a row is fully Paid. |
Payment Amount | Defaults to the outstanding balance; capped at the balance amount and accepts decimals. |
Payment Method | Cash, UPI, Bank Transfer, Cheque, or Card. |
Reference/Transaction ID | Optional free-text field for a UPI reference, cheque number, or bank transaction ID. |
Tips & Best Practices
- Run Auto Generate at the start of each billing cycle (e.g. the 1st of the month) so every vendor gets a payment record without you having to generate them one by one.
- Use the Reference/Transaction ID field whenever a vendor pays by UPI or cheque — it makes reconciling your bank statement against rent collections much easier later.
- Filter by Overdue regularly and use it alongside the Rent Dashboard's Overdue Payments card as your collection worklist.
Troubleshooting & FAQ
Auto Generate did not create a payment for one of my vendors.
I cannot enter more than the balance amount when recording a payment.
A payment stays Overdue even after generating it.
"Generate Payment" fails with a validation error.
🧑💻 Developer Notes
Source component(s):
frontend-app/packages/pos-react-lib/src/pages/RentPaymentsPage.jsx
Backend endpoints used:
GET /rent-management/paymentsGET /rent-management/agreementsPOST /rent-management/payments/generatePOST /rent-management/payments/auto-generatePOST /rent-management/payments/:id/record
Related tables (db-core repositories):
RentPaymentRentAgreement
Redux slices:
scope (selectCurrentScope / getScopeQueryParams)
Feature flag key: rent_management (requires advanced plan tier or above)
Status filter is sent to the backend as a query param (params.status) rather than filtered purely client-side, so the payments list is re-fetched whenever the filter changes. The agreements dropdown used for "Generate Payment" only loads ACTIVE agreements (status: 'ACTIVE' param) via a separate call from the main payments list. openPaymentModal seeds the payment form's amount from payment.balanceAmount.