Payment History
Overview
The Payment History module covers the payment list with filters, payment details for individual transactions, public receipt pages accessible without authentication, and the payment gateway return handler.
Navigate to: Sidebar → Payment or /payment
Payment List

| Element | Description |
|---|---|
| Search bar | Search by bill number, reference, or property |
| Filter controls | Search, status filter, method filter, year filter |
| Payment cards | List of payment transactions matching the active filters |
Filters
| Filter | Options |
|---|---|
| Search | Free-text search across bill number, reference, property |
| Status | All, Success, Failed, Pending |
| Method | All, Card, Mobile Money, Bank, etc. |
| Year | Dropdown to filter by payment year |
Payment Card
| Field | Description |
|---|---|
| Bill Number | e.g. #2026000000000022 |
| Property ID | e.g. #7139202644 |
| Payment Method | e.g. card, shown with an icon |
| Date/Time | e.g. 8 August 2026 03:23 |
| Region | e.g. Greater Accra |
| Property Type | e.g. RESIDENTIAL |
| Amount | Amount paid in that transaction |
| Status badge | Success, Failed, Pending |
Multiple payments can exist against the same Bill Number (partial/installment payments) — the list correctly shows each as a separate entry. Tapping a payment card opens Payment Details.
!!! tip "Things to check" - Filter options narrow the list correctly - Multiple partial payments against the same bill each appear as distinct entries - Search correctly matches by bill number, reference, or property ID - List is sorted by most recent payment first - Status badge colors are consistent (Success = green, Failed = red, Pending = yellow) - Expanding a row reveals additional transaction details
Payment Details

| Field | Description |
|---|---|
| Amount | Amount paid in this transaction |
| Bill Number | Bill identifier |
| Reference No | Unique transaction reference |
| Ratepayer | Rate payer name |
| Payment Method | e.g. card |
| Paid On | Timestamp of the payment |
| Description | e.g. Property Rate for property#... |
Actions: View / Print Receipt, Share Link, Browser — opening the same formal receipt as generated right after payment.
!!! tip "Things to check" - Every field matches exactly what was shown at the time of payment — nothing changes retroactively - Opening the receipt from history produces the identical receipt as the one generated right after payment (same Receipt Number, QR code, etc.) - Share Link produces a working link accessible without login - View / Print Receipt opens a formal, printable receipt
Public Receipt Pages
Three public routes render receipts without requiring authentication, accessible via shared links or QR codes.
Payment Receipt
Navigate to: /receipt/:id

Renders the same formal receipt as the in-app view:
| Section | Contents |
|---|---|
| Header | Municipal name/logo, address, phone, email, "Payment Receipt" label, Payment Verified / PAID badge |
| Receipt info | Receipt Number, Payment Date, Bill Number, Bill Year |
| Received From | Ratepayer, Ratepayer ID, Phone, Email, Ownership |
| Property Information | Property ID, Digital Address, Property Address, MMDA, Region, Zone |
| Payment Details | Description + Payment Method table |
| Amount in Words | Spelled-out amount, e.g. "Ten Ghana Cedis" |
| Verification | Confirmation sentence, "Electronically Generated" note, Payment Status, Verification Code, QR code |
Bill Receipt
Navigate to: /billdetails/:id

Displays the bill document for a specific bill, including bill breakdown and property details.
All Payment Receipts
Navigate to: /allreceipts/:id

Displays all payment receipts associated with a specific bill or property.
!!! tip "Things to check" - All three public receipt pages render correctly without authentication - Receipt data matches the in-app payment details exactly - QR codes on receipts are scannable and link to a verification page - Amount in Words matches the numeric amount exactly, including decimals (e.g. GH₵10.50 → "Ten Ghana Cedis and Fifty Pesewas") - Invalid or non-existent IDs show a clear error page, not a blank screen - Shared links work across different browsers and devices
Payment Gateway Return
Navigate to: /billmanagement/billpayreturn

This page handles the callback from the payment gateway after a transaction. It verifies the payment status and displays the result.
| Element | Description |
|---|---|
| Payment status | Success or failure indicator |
| Transaction reference | Gateway reference number |
| Receipt link | Link to view the full receipt |
| Return to dashboard | Navigation back to the main dashboard |
!!! tip "Things to check" - Successful gateway callback shows a success message and provides a receipt link - Failed gateway callback shows a clear error and does not create a phantom receipt - Refreshing the gateway return page does not duplicate the payment - The page handles network errors or gateway timeouts gracefully - After a successful return, the bill status updates correctly in the bill list
!!! tip "Things to check" - Payment list updates after a new payment is made - Public receipt pages load within a reasonable time - All receipt data is accurate and consistent across in-app and public views - Payment gateway return correctly synchronizes with the internal payment record