How to run billing day to day: the in-game Creator, job and grade permissions, the price list, payment terminals, debt collection stages, payment plans and recurring invoices.
The Creator is the configuration — not a viewer for a config file, and not a convenience on top of one. What it writes is the only configuration there is.
Everything lives in the database, versioned. A save does not overwrite the previous values, it inserts a new version. Three things follow from that:
The table is its own history. Who changed what, and when, is not a separate log that can drift out of sync.
Reverting is just saving an old version again. Nothing is ever deleted to undo something, so you can revert the revert.
There is no file to edit and no restart in the loop.
Tab
What you set there
General
Currency, minimum and maximum invoice, due dates, payment fees per account, proximity rules, partial payments, and citizen-to-citizen invoices.
Taxes
A default rate and a rate per category, with a worked example underneath. Where the tax goes, and the city property tax.
Collections
What happens to an invoice nobody pays.
Jobs
Who may bill, and how much.
Permits
Whether billing is licensed at all, and the applications waiting. Off by default.
Catalog
The price list per job.
Terminals
The machines players walk up to, and the world editor that places them.
Admins
Who was granted access in game.
History
Every saved version, with who saved it. Any of them can be made current again.
In Creator → Jobs. Add a job and every grade of it is listed with a tick box per permission — there is no row to add by hand.
Permission
Lets that grade
Issue
Create invoices at all. Without it the rest is irrelevant.
Cancel
Withdraw an invoice, refunding any partial payment.
Refund
Pay a settled invoice back out of the company account.
Approve
Sign off drafts and payment plans. This is the boss flag.
Company view
See the company ledger, not just their own invoices.
Record check
Look up what a nearby citizen owes.
Alongside the ticks, each grade gets a maximum per invoice, a daily cap, an approval threshold — anything above it becomes a draft a boss must sign before the customer ever sees it — and an optional employee cut of what they collect.
A grade your framework adds later inherits the highest grade configured here. A new rank does not silently arrive with no permissions, and does not silently arrive with all of them either.
Jobs answer who may bill from one end — which ranks. Creator → Permits answers it from the other: which people. A permit lives on a player's identifier rather than on an employer, so it survives a change of job and can be held by somebody with no job at all — which is the case the grade model has no answer for: a mechanic working out of his own garage has no boss to grant him anything.
Turned on, one setting decides who has to hold one:
Who needs one
What it means
Citizens
Private invoices need a permit; companies keep running on job grades alone. The usual choice — it licenses freelancing without touching the police.
Everybody
A permit on top of everything. An employee with the issue flag still needs one before they can send anything. The strict setting, and one to pick deliberately.
Everything else on that screen is a dial: how long a permit lasts (0 never expires), what the application costs, how much the applicant has to write, and how long a refused applicant waits before asking again.
Somebody without a licence who opens Create gets the application form instead of the invoice builder — the place they went looking to bill is the place they find the way in. They write what they need it for and send it.
Staff decide
Every online admin is told an application arrived, and the queue sits under the rules in Creator → Permits: who asked, what they wrote, and Approve or Refuse with an optional note that reaches them either way. Permits are a server-wide right, so approving is admin-only — not a company's to grant.
And afterwards
A licence can be withdrawn from the same queue, with a note. Nothing is deleted: refused, withdrawn and expired applications stay on the list, because a permit that was taken away and the reason it was taken away are the same fact — and a queue nobody can look back through is a queue staff get accused of losing.
Flipping the switch takes effect on every connected player at once, like every other setting here. Somebody mid-invoice when permits go on is told they need one at the moment they press Send, not silently allowed through.
In Creator → Catalog. Priced services per job — "Speeding, $500" — each with its own tax rate and a minimum grade, so a cadet cannot bill what a sergeant can.
Two switches decide how much freedom employees have:
Strict mode locks billing to the catalog entirely. Nobody types an amount by hand.
Custom items, when allowed, let an employee write a free line with their own price — inside their grade's limits.
Terminals are the machines players walk up to: a cash point in a police lobby, a kiosk at the hospital desk, a counter where staff issue invoices.
Mode
Behaviour
Pay
Players settle what they owe, with the paper invoice or by identifying themselves. Card or cash.
Issue
Staff bill whoever is standing at the counter.
Both
Works in both directions.
Each terminal can be restricted to certain jobs, drawn as a prop (a real object like an ATM) or a marker on the ground, given a map blip, and given an operator name that appears on its screen and prints on its receipts.
In Creator → Terminals → New, then set its position however suits you: use my position, place in world with 3D handles, or type the exact coordinates.
For anything more than one machine, use Open world editor: a free camera over the city, every terminal standing as a ghost with its name above it, and the whole network in a panel down the right edge.
Key
Does
W A S D
Fly the camera.
Shift
Faster. The mouse wheel over the scene also changes the speed.
Right mouse
Hold to look around.
G
Drop the selected terminal to the ground.
R / T
Switch the handles between moving and rotating.
Tab
Hide the panel to see the city unobstructed.
Esc
Leave. It asks about unsaved changes.
Everything in that panel is a draft. Nothing reaches the world, or any player, until you press Save — and then the whole network is sent at once and re-validated on the server.
Two optional fees exist to make the machine matter. The electronic payment fee is charged when a player pays from the app instead of walking to a terminal, and the network lookup fee is charged at a terminal when the player did not bring the paper invoice. In both cases, doing it the physical way is the cheap way.
Turn the electronic fee on without placing a single terminal and you have charged everybody a fee they cannot avoid. The Admin panel flags exactly that case in its Needs you list.
A tablet is the wrong shape for “how much do I owe?”. The companion app puts that answer in the player's pocket and lets them settle it there. It ships for both supported phones — qs-billing-app for qs-smartphone, lb-billing-app for lb-phone — as separate resources you install only if you want them (Installation has the steps). They are the same app: a reader and a payer, not a second Creator. Four screens, and nothing an owner configures twice.
Screen
What is on it
Overview
What is outstanding, what is overdue and what falls due next. The overdue line is itself the shortcut to the invoices behind it.
Received
Everything anybody has billed them, searchable and filtered by unpaid, overdue, paid or all. Several can be ticked and settled in one go, oldest deadline first.
Automation
The installment plans they agreed to and the recurring charges that arrive on a clock, with what each one takes per run.
Settings
Phone notifications on or off, which account pays by default, and light or dark — following the phone's own appearance unless they say otherwise.
Opening one gives the whole document: what was billed line by line, the totals, and the dates in full rather than “two days ago”. Under it sit the three things a debtor can actually do — pay it, in full or in part and from bank or cash; ask for a payment plan; or dispute it. A cancelled or refunded invoice offers none of them and says so.
One thing worth knowing before you turn the fee on: paying from the phone is a remote payment, so the electronic payment fee applies to it exactly as it does to the tablet. That is the fee's whole purpose — the terminal is the one place it is not charged — but it does mean the convenient route is the expensive one, and the app says so on the paying screen rather than after.
The app enforces nothing of its own, on either phone. Every screen asks billing's own server callbacks, so a grade's daily cap, a disabled dispute or a minimum partial payment behaves identically whether the player is holding a phone, sitting at the tablet or standing at a terminal. It carries no locales either — it reads billing's dictionary, so it speaks whatever language the server is set to. The two resources are built from one source, so the qs-smartphone screen and the lb-phone screen cannot drift apart.
An invoice nobody pays is the interesting case. In Creator → Collections, overdue invoices escalate through stages you define; each fires once the invoice is a given number of hours past due, and they fire in order.
Action
What it does
Late fee
Adds a percentage of the debt, with a ceiling so fees cannot compound forever. The player is told.
Notify company
Tells the company that issued it their money is still out there.
Block services
Marks named services as blocked. Billing does not enforce it — your other resources ask.
Seize from bank
Takes what is owed out of the bank account, next time they connect.
What ships by default — collections on, with the last stage disabled:
Overdue by
Stage
24 hours
A 5% late fee.
72 hours
The issuing company is told.
168 hours (one week)
Services blocked: garage, dealership, housing.
336 hours (two weeks)
Seizure — off.
Seizure takes a player's money without asking them. It ships disabled and should stay disabled unless your server has agreed that it exists. It is the one stage players open tickets about, and "the script did it" is not an answer they accept.
Service names are free text — whatever you type into a stage is what your resource checks for:
lua
if exports['qs-billing']:IsServiceBlocked(identifier, 'garage') thenreturn Notify(source, 'Unpaid fines. Settle them before collecting a vehicle.')
end
Three things stop the clock: a dispute freezes the invoice until the company decides, an approved payment plan replaces the deadline with its own schedule, and any payment at all — even a partial one — keeps the invoice alive.
Two different things driven by the same clock. A payment plan splits a debt that already exists into installments; a recurring invoice creates a new debt on a schedule.
For plans, the debtor asks and the company decides. A player requests between 2 and 12 installments; the request lands in the company's queue, where a boss approves it, adds interest, or declines. Until it is approved the invoice stays due in full and the clock keeps running — the interface says so when they ask.
Recurring templates are set up from Automation, with an interval from 1 hour to a year and either a fixed number of repetitions or none at all. They can be paused and resumed without losing their place, and deleting one stops future charges without touching invoices it already sent.
A single scheduler drives all of it: recurring templates, plan installments, collection stages, expiring invoice offers, the city property tax, and payouts owed to players who were offline when they earned them. Lower its interval and everything checks more often, not just the one thing you were thinking about.
In Admin → Server flavour, three presets set due dates, fees, debt collection and the feature switches to a coherent whole, so you are not tuning fifteen numbers against each other by hand.
Preset
What it is for
Arcade
Fast and forgiving. 24-hour due dates, no debt collection, no disputes or plans.
Balanced
Everything available, but collections stop short of taking money from a bank account.
Realistic
Real fees, longer terms, and the full collection chain including seizure.
Beside them sit the individual feature switches: disputes, payment plans, recurring invoices, paper items, partial payments, the electronic payment fee, the network lookup fee and debt collection.
A preset overwrites the keys it names, and nothing else. Your catalog, jobs, taxes and terminals are never touched — those are your server's content, not its tone. Feature switches are enforced server-side: one turned off disables the callback behind it, not just the button.
The Creator can export everything you have configured as a readable Lua file, valid as the contents of defaults.lua on a fresh install. Tune it on your test server, move it once, and the live server comes up already configured.