Payments & folios
Purpose and who uses it
AccountantReceptionistHotel ManagerOne list of every invoice the hotel has raised, with the money received against each.
Payments & Invoices is the money side of a stay. Every booking that is confirmed or checked in has an invoice, the folio: that collects room nights, taxes, deposits, fees and restaurant charges. This screen lists those invoices, shows what has been paid, lets you record a payment or a refund, and prints or emails the invoice.
There is no card gateway: the system records money that has already changed hands (cash, mobile money, card terminal slip, bank transfer) and keeps the reference you type. Amounts are whole shillings, the hotel currency label can change in Settings, but there are never decimals.
Receptionists can open the screen and read every folio; recording money needs Payments at Can edit (Accountant, Hotel Manager, Restaurant Manager by default) and refunds need Full.
Screen anatomy
Four header figures, status chips, a searchable invoice table (or the Cards and By status views) and a folio drawer.
- 1Header figuresInvoices · Collected · Outstanding · Overdue. Computed over every invoice in the hotel, not just the page in view; Overdue turns red when above zero.
- 2Status chips and searchAll · Pending · Partially Paid · Paid · Overdue · Refunded, then “Search invoice, guest, booking…” and a Balance select (Any balance · Outstanding only · Fully settled).
- 3Issue datesOpens the “Filter invoices” dialog with Issued from / Issued until. Show results applies; Clear empties both.
- 4Invoice rowsInvoice · Guest · Booking · Issued · Due · Status · Total · Balance. Balance is red while owed, green at zero. Click a row to open the folio.
- 6PaginationPage and page-size controls; the list lives in the URL so you can bookmark a filtered view.
The folio drawer
Clicking a row opens a drawer titled with the invoice code (e.g. INV-0412) and the guest and booking under it. Left: status badge, issued and due tags, the line items (Item · Qty · Amount) and a dark totals card (Total · Paid · Balance). Right: the Payment history: one entry per payment or refund with method, network, reference, code, date and who received it. Footer buttons: Close,Print, Email, Record payment (only while a balance is owed) and, once the payment form is open, Save payment.
Empty state: “No invoices yet. A folio opens at check-in, and a deposit invoice when a booking is confirmed”.
How a folio is built
The quote is the folio: room nights plus the tax chain, deposits offset once, POS charges appended, fees added.
An invoice is a header (issue date, due date, totals, a cached status) plus lines of a kind:room, tax, deposit, fee, pos,adjustment, other. Where each comes from:
- 1Confirmation, deposit invoiceIf the hotel has a deposit % (Settings → Hotel), confirming a booking opens an invoice with one line “Deposit <pct>% · BK-…”. Issue and due date are the hotel-local day it was raised. The guest can pay it now; it shows as Pending, Partially Paid or Paid like any other.
- 2Check-in, the stay lands on the same invoiceCheck-in appends “Accommodation · BK-… · <room type> × N nights” and the tax lines “Service charge X%”, “VAT X%”, “Tourism levy X%” (only those with a non-zero rate). If a deposit invoice already exists it is reused: every deposit line is offset by an equal negative line “Deposit applied to stay · BK-…”, so total = the stay, and whatever was paid on the deposit already counts toward it. The deposit is never charged twice.
- 3During the stay, POS room chargesA restaurant or bar ticket closed with Charge to Room posts “POS · TKT-… · <outlet>”, “Service charge · TKT-…” and “VAT · TKT-…” lines onto the open folio and raises its total. A folio that was already Paid becomes Partially Paid again.
- 4Cancellation / no-show, feesA cancellation fee (% of the stay) or no-show fee (% of one night), if configured, is added as a fee line, on the open invoice if there is one, otherwise a new one. Each fee posts once per booking.
- 5Check-out, the folio closesCheck-out closes every open invoice on the booking: no more charges can land on it, but it stays payable until settled.
The tax chain
Totals are computed in one fixed order and rounded at every step: discount on the subtotal → service charge on the discounted subtotal → VAT on (discounted subtotal + service) → tourism levy on the discounted subtotal → total. Rates are the hotel's percentages in Settings; a POS outlet may override the service % for its own tickets.
Recording a payment
AccountantHotel ManagerOpen the folio, click Record payment, enter amount, method and reference, Save payment.
- 1Open the folioClick the invoice row. Check the Balance figure in the dark card, that is what can be collected.
- 2Click Record paymentThe button is in the drawer footer and only shows while the balance is above zero. The Amount field is pre-filled with the full balance.
- 3Enter the amountWhole shillings only; commas and spaces are stripped. A part-payment is fine, the invoice becomes Partially Paid and Record payment stays available for the rest.
- 4Choose the methodCash · Mobile Money · Card · Bank Transfer. Mobile Money asks for the Network (MTN or AIRTEL). Every method except Cash shows a Reference no. field (“Transaction / slip reference”), type the MoMo transaction id, card auth code or transfer reference so the audit trail can be matched to the bank.
- 5Save paymentA PAY-… code is issued, the invoice status is re-derived, a notification is raised (“Payment received on INV-…” or “Invoice INV-… settled”) and the toast reads “Payment of UGX … recorded on INV-…”.
Refunding a payment
AccountantHotel ManagerRefunds are per payment, capped at what is left on that payment, and need Payments Full.
A refund is a payment entry with a negative effect, linked to the payment it reverses. It cannot exceed what is still refundable on that payment, nor what has been collected on the invoice overall.
- 1Find the payment in Payment historyEach non-refund entry with something left shows a Refund chip; if part of it was already returned the chip reads Refund rest. A fully returned payment shows a Refunded badge instead.
- 2Click RefundA confirm dialog titled “Refund PAY-…?” explains: “This refunds whatever is still outstanding on the payment. The guest balance will increase.”
- 3Issue refundThe refund is created with the same method and reference as the original, a new PAY-… code, written to the audit log as payment.refunded, and the folio status is re-derived (Refunded once net paid reaches zero).
Settled folio before check-out
ReceptionistAccountantCheck-out is refused while any open folio owes money, unless a Payments-Full user chooses to settle later.
The rule lives on the booking, but it is a payments rule: Check out on the booking drawer refuses while any open folio on that booking has a balance. The 409 names the invoices and the total , “INV-0412 still owes UGX 240,000. Collect it before check-out, or a Payments manager can check out and bill later”.
- 1Usual path, collect firstOpen Payments, record the balance, then check the guest out. The folio is closed at check-out and shows Paid.
- 2Exception, settle laterBill-to-company or a disputed charge: a user with Payments Full sees a confirm on the booking drawer to check out anyway. The booking is checked out, the action is audited as booking.checkedout_unsettled, and the folio is closed to new charges but stays open for collection here.
- 3Collect afterwardsThe invoice keeps its status (Pending, Partially Paid, and Overdue once the due date passes). Record payment works exactly as during the stay.
Invoice statuses
Pending, Partially Paid, Paid and Refunded are cached from the payments; Overdue is derived from the due date and never stored.
- Pending → Partially Paid (part-payment)
- Pending → Paid (paid in full)
- Partially Paid → Paid (balance paid)
- Paid → Partially Paid (POS charge / fee)
- Paid → Refunded (refund to zero)
- Partially Paid → Pending (refund to zero)
- Pending → Overdue (due date passed)
- Partially Paid → Overdue (due date passed)
- Overdue → Paid (balance paid)
- Pending: nothing received yet.
- Partially Paid: net paid (payments minus refunds) is above zero but below the total.
- Paid: net paid ≥ total.
- Refunded: at least one refund exists and net paid is back at zero or below.
- Overdue: Pending or Partially Paid and the due date is before the hotel's today. This one is derived on every read: list, drawer, PDF, search, the booking drawer and the night audit, and is never written to the database.
The record-payment form
Four fields inside the folio drawer; the reference is optional but expected for anything but cash.
| Field | Type | Notes |
|---|---|---|
| Amount (UGX) * | whole number | Pre-filled with the balance. Must be > 0 and ≤ the outstanding balance. Commas are ignored. |
| Method * | select | Cash · Mobile Money · Card · Bank Transfer |
| Network | select | Shown for Mobile Money only: MTN or AIRTEL. Required when the method is Mobile Money. |
| Reference no. | text ≤ 60 | Shown for every method except Cash. Free text: transaction id, auth code, slip or transfer reference. Kept on the payment and printed on the invoice history. |
Permissions
View to read and print; Can edit to record payments and email; Full to refund and settle later.
| Role | Payments | Bookings |
|---|---|---|
| Super Admin | Full | Full |
| Hotel Manager | Full | Full |
| Receptionist | View | Full |
| Accountant | Full | View |
| Housekeeping Mgr | None | View |
| Maintenance | None | None |
| Restaurant Mgr | Edit | View |
| HR Manager | View | None |
| Security | None | View |
- Open the list, open a folio, Print (PDF): Payments · View only.
- Record payment, Email invoice: Payments · Can edit.
- Refund: Payments · Full access.
- Check out with a balance (settle later): Payments · Full access, from the booking drawer (Bookings · Can edit for the check-out itself).
The POS terminal, Restaurant and Inventory share the Payments module, so a Restaurant Manager (Can edit) can record a folio payment here even though their day is spent on tickets.
Tips
Printing and emailing, the overdue chip, live refresh and URL filters.
Errors you may see
Every payments message the server can return, plus the checkout gate and POS-to-folio messages.
Amount must be positiveAmount must be a whole UGX figureSelect the mobile money networkInvoice is already settledAmount exceeds the outstanding balance (UGX N)Guest has no email addressThat entry is itself a refundPAY-… has already been refunded in fullRefund must be positiveRefund exceeds what is left on PAY-… (UGX N refundable)Refund exceeds the amount received on this invoiceINV-… still owes UGX N. Collect it before check-out, or a Payments manager can check out and bill laterINV-… still owes UGX N. Only Payments "Full access" can check out with a balanceNo open folio for this booking. Check the guest in firstFolio is closedYour role (<role>) has "View only" on Payments; this action needs "Can edit".Terms
Folio, deposit, net paid, balance, overdue.
- Folio
- The invoice attached to a booking that collects the stay, taxes, deposits, fees and POS charges. Opens at confirmation (deposit) or check-in; closes at check-out.
- Deposit
- A percentage of the stay requested at confirmation as a deposit line. At check-in it is offset by an equal “Deposit applied” credit so it is never charged twice.
- Net paid
- Payments minus refunds on an invoice.
- Balance
- Total minus net paid, never below zero.
- Overdue
- Derived: unpaid or part-paid and due before the hotel’s today. Never stored.
- Settle later
- A Payments-Full override that checks a guest out with a balance; audited; the folio stays collectable.