When Auto-Bill Guests is on, the system stamps each daily room's nightly charge by itself — no operator has to click a button at 14:30 every day.
Prefer to bill by hand? Leave it off. Rooms are then billed only when you press Bill rooms now — on the Night Audit's first step (which lists every room waiting to be billed) or on Bill Rooms Now. The button always bills, whatever this setting says; the setting only controls the automatic run.
It works the same way the desktop did: a background job wakes up on a fixed cadence (default every 15 minutes), checks each room's billing schedule, and posts charges that have come due.
Before you start
- You need Company Settings access to toggle the preference.
- Configure your check-out & billing time brackets first (Setup → Check-out & Billing Times). Without brackets, daily rooms have no billing time to fire at.
- Confirm your tenant Time Zone is set on Organization Profile. Auto-billing fires at the wall-clock time the brackets define, in the tenant's time zone — wrong zone = wrong fire time.
Steps
- Open Setup → Preferences.
- Find the Hotel / Reservation section.
- Turn on Auto-Bill Guests.
- Set Auto-bill check interval (minutes) if you want a custom cadence. The job wakes up that often. The floor is 5 minutes, the ceiling is 60. The default (15) is right for most properties.
- Click Save Settings.
- The change takes effect on the next reconciliation pass (≤ 60 seconds). You don't need to restart anything.
How it decides what to bill
Each row in Check-out & Billing Times says:
If a guest arrived between {FromTime} and {ToTime}, then the day's room charge is stamped at {BillingTime} of {SameDay / NextDay / PreviousDay}.
When the auto-billing job runs, it looks at every active daily-room reservation and asks the SQL engine: "Has this room's next billing time already passed?" If yes, the charge is posted. If no, it skips.
Hourly rooms ignore the brackets and bill every hour from their check-in time.
Tips
- The Preferences page chip shows the last auto-bill time + result. If you don't see it ticking forward every ~15 minutes, the worker isn't scheduled — check the audit log.
- You can manually trigger an immediate run with Bill Rooms Now (in the Reservation menu). The manual button is blocked while an auto run is in flight — it'll say "Already running, try again shortly."
- The same SQL routine drives both paths, so the manual run is bit-identical to a scheduled one. There's nothing the manual button can do that the scheduled job can't.
- The cadence is a check interval, not a fire time. The job wakes every N minutes and asks the database what's due. Billing time precision is at most N minutes off — set the interval shorter if you bill hourly rooms.
Common problems
- Job is on but nothing bills → check that Check-out & Billing Times has at least one bracket covering the full 24 hours. Without it, daily rooms have no billing time and the SQL skips them.
- Bills fire at the wrong wall-clock time → your tenant Time Zone (Organization Profile) probably doesn't match where your books live. Fix that and the very next run will be correct.
- Bills double-fire for one room → can't happen with the per-tenant mutex. If you see it, the issue is likely a duplicate trigger from an in-flight reconcile during a deploy — wait one cycle and it normalises.
- "Already running, try again shortly" when you click Bill Rooms Now → either a scheduled fire is in progress (wait ≤ N minutes), or a prior manual click is still running. Reload the Preferences page to see live status.
- You turned the toggle off but the worker still fires → the worker re-reads the preference inside each fire, so it'll no-op (you'll see "skipped: preference off" in the audit). The trigger itself is removed on the next reconcile pass (≤ 60 sec) if you toggle off permanently.