User guide · Modules

Payments & folios

Guest folios and invoices: what lands on them, how to record money against them, refunds, and the rule that a folio must be settled before check-out.
Whole guide

Purpose and who uses it

AccountantReceptionistHotel Manager

One 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.

Payments & Invoices
12346
  1. 1
    Header figures
    Invoices · Collected · Outstanding · Overdue. Computed over every invoice in the hotel, not just the page in view; Overdue turns red when above zero.
  2. 2
    Status chips and search
    All · Pending · Partially Paid · Paid · Overdue · Refunded, then “Search invoice, guest, booking…” and a Balance select (Any balance · Outstanding only · Fully settled).
  3. 3
    Issue dates
    Opens the “Filter invoices” dialog with Issued from / Issued until. Show results applies; Clear empties both.
  4. 4
    Invoice rows
    Invoice · Guest · Booking · Issued · Due · Status · Total · Balance. Balance is red while owed, green at zero. Click a row to open the folio.
  5. 6
    Pagination
    Page 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:

  1. 1
    Confirmation, deposit invoice
    If 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.
  2. 2
    Check-in, the stay lands on the same invoice
    Check-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.
  3. 3
    During the stay, POS room charges
    A 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.
  4. 4
    Cancellation / no-show, fees
    A 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.
  5. 5
    Check-out, the folio closes
    Check-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 Manager

Open the folio, click Record payment, enter amount, method and reference, Save payment.

  1. 1
    Open the folio
    Click the invoice row. Check the Balance figure in the dark card, that is what can be collected.
  2. 2
    Click Record payment
    The 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.
  3. 3
    Enter the amount
    Whole 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.
  4. 4
    Choose the method
    Cash · 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.
  5. 5
    Save payment
    A 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 Manager

Refunds 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.

  1. 1
    Find the payment in Payment history
    Each 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.
  2. 2
    Click Refund
    A confirm dialog titled “Refund PAY-…?” explains: “This refunds whatever is still outstanding on the payment. The guest balance will increase.”
  3. 3
    Issue refund
    The 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

ReceptionistAccountant

Check-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”.

  1. 1
    Usual path, collect first
    Open Payments, record the balance, then check the guest out. The folio is closed at check-out and shows Paid.
  2. 2
    Exception, settle later
    Bill-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.
  3. 3
    Collect afterwards
    The 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.

Invoice money state (derived from total and payments)
Invoice money state (derived from total and payments)part-paymentpaid in fullbalance paidPOS charge / feerefund to zerorefund to zerodue date passeddue date passedbalance paidPendingPartially PaidPaidOverdueRefunded
  • PendingPartially Paid (part-payment)
  • PendingPaid (paid in full)
  • Partially PaidPaid (balance paid)
  • PaidPartially Paid (POS charge / fee)
  • PaidRefunded (refund to zero)
  • Partially PaidPending (refund to zero)
  • PendingOverdue (due date passed)
  • Partially PaidOverdue (due date passed)
  • OverduePaid (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.

Record payment
FieldTypeNotes
Amount (UGX) *whole numberPre-filled with the balance. Must be > 0 and ≤ the outstanding balance. Commas are ignored.
Method *selectCash · Mobile Money · Card · Bank Transfer
NetworkselectShown for Mobile Money only: MTN or AIRTEL. Required when the method is Mobile Money.
Reference no.text ≤ 60Shown 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.

Payments and Bookings levels per role (default)
RolePaymentsBookings
Super AdminFullFull
Hotel ManagerFullFull
ReceptionistViewFull
AccountantFullView
Housekeeping MgrNoneView
MaintenanceNoneNone
Restaurant MgrEditView
HR ManagerViewNone
SecurityNoneView
None No accessView View onlyEdit Can editFull Full access
  • 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.

400Amount must be positive
Why
The amount parsed to zero.
Fix
Enter a figure above zero.
400Amount must be a whole UGX figure
Why
The amount contained a decimal point or letters.
Fix
Whole shillings only; the screen strips commas and spaces for you.
400Select the mobile money network
Why
Method is Mobile Money but no network was chosen.
Fix
Pick MTN or AIRTEL in the Network select.
409Invoice is already settled
Why
The balance is zero (or below), someone else recorded the money first, or the drawer was stale.
Fix
Close and reopen the folio; the Record payment button disappears when nothing is owed.
409Amount exceeds the outstanding balance (UGX N)
Why
You entered more than is owed. Overpayments are never held on account.
Fix
Record the balance shown and give change.
400Guest has no email address
Why
Email invoice needs an address on the guest profile.
Fix
Add the email in Guests, then try again, or Print instead.
409That entry is itself a refund
Why
Refund was requested on a refund row.
Fix
Refund the original payment row; refund rows have no chip on screen.
409PAY-… has already been refunded in full
Why
Nothing is left to return on that payment.
Fix
Refund a different payment on the same folio if money is still owed to the guest.
400Refund must be positive
Why
An explicit refund amount of zero was sent (API only).
Fix
Send an amount above zero or omit it to refund the rest.
409Refund exceeds what is left on PAY-… (UGX N refundable)
Why
An explicit amount was larger than the unrefunded part of that payment.
Fix
Refund at most the figure quoted.
409Refund exceeds the amount received on this invoice
Why
Net receipts on the whole invoice are lower than the refund (earlier refunds already used them).
Fix
Check the Payment history; only what has actually been collected can go back.
409INV-… still owes UGX N. Collect it before check-out, or a Payments manager can check out and bill later
Why
Check-out was attempted with an unsettled open folio (code FOLIO_UNSETTLED).
Fix
Record the payment here, then check out, or have a Payments-Full user confirm settle later.
403INV-… still owes UGX N. Only Payments "Full access" can check out with a balance
Why
Settle later was requested by a user below Payments Full.
Fix
An Accountant or Hotel Manager performs the check-out.
409No open folio for this booking. Check the guest in first
Why
A POS ticket was charged to a room whose booking has no open folio (not checked in, or already checked out).
Fix
Check the guest in, or settle the ticket with cash, mobile money or card.
409Folio is closed
Why
The folio was closed at check-out before the room charge posted.
Fix
Settle the ticket by another tender.
403Your role (<role>) has "View only" on Payments; this action needs "Can edit".
Why
Your level is too low for the button you pressed (the button is normally hidden).
Fix
Ask a user with the right Payments level; see User Roles.

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.