All modules
Money

Price lists

A school has one way of pricing lessons and twenty teachers. The price list is written once, with a name and its rows, and goes into a contract instead of twenty rewrites.

Rate cards 3
Contracts with this card 0
Signed ones still count -
Rate cardIn contracts45 min, 4-6 studentsStatus
Cennik 2025/26 6 wierszy 092.00 zł Active
Firmowy B2B 4 wiersze 5140.00 zł Active
Cennik 2024/25 6 wierszy 086.00 zł Archived
auto school rate cards · templates, not links
Price lists

What this module does

10
price lists on Pro, thirty on the School plan
200
contracts take a price list in one copy
100
rows fit in a single template
0
links between template and contract: a copy

Rows shaped like a contract

Duration, the student-count bracket and the amount - the same columns as in a contract price list. Otherwise copying would drop the dimension pricing runs on.

Templates are copied

Taking a price list copies its rows into the contract instead of linking them live: an edited template has no business repricing a month already closed.

Two ways in

From the template list the rows are pushed into chosen contracts, and inside the contract dialog a "Take from price list" button stands next to "Add row".

CSV in and out

The file carries rows, not templates: the name repeats once per row, and an import replaces the rows of the price list bearing that name.

Archive costs no room

Last year template is history rather than a seat in the limit, so it leaves the picker without deleting anything it once priced.

Who sees what

A module is a permission, and which records may be touched is settled on write, not in the menu.

RoleSeesChanges
OwnerEvery price list in the school, the live ones and those put in the archive.Creates them, lays out rows, copies into contracts, archives and deletes.
MethodologistNothing until the owner grants the module; after that, the whole list.Once granted, everything, but copying also asks for the right to Contracts.
TeacherNo access to this screen. Their own rate is visible in their own contract.Nothing. A price list carries the whole team's rates, not one person's.
StudentNo access to this screen.Nothing.

The details nobody asks about during a demo

The things that only surface in the third week of working with the module.

What this module does not do
  • a price list for the STUDENT - tuition is money coming in and belongs to Finance
  • the base rate or the allowances - those are contract fields the list knows nothing of
  • template versions - what priced a lesson sits in the contract, not in a list's history
  • any currency but the zloty - amounts sit in grosze, as everywhere else in Cerium

Nothing, and that is the whole point of this module. A contract receives a COPY of the rows, and pricing reads only the list stored in the contract - it never looks at the template. So a lesson from before the change is priced today exactly as it was then, and a raise from February does not recalculate January. Whoever wants to hand it out copies the list again, deliberately.

With the row action “Copy into contracts”: tick the contracts, confirm, done - one request may cover up to two hundred. The chosen contracts receive EXACTLY those rows, and the list they had before is replaced rather than appended to. The panel then says how many contracts really got the rows, because keys from outside the school drop out quietly instead of failing the whole action.

Yes. In the contract window, in the pay section, “Take from a price list” stands next to “Add row”. The rows land in the window but are saved only by the button in the footer, so they can be seen before the decision. Only live lists are offered, and someone without the Price lists module will not even see the button - a refusal that looks like absence rather than a closed door.

Four values: the lesson length in minutes (from 5 to 480), the number of students from and to (0-1000, inclusive), and the amount per lesson, at most one million zloty. An empty field means “any”, so one row can carry a whole price list and ten rows can split it into brackets. Two rows of the same shape are refused by the database: a list with a silent duplicate stops being a function.

The narrowest one, the one that says the most. The lesson length weighs twice as much as the student bounds, because it is what tells a specific row from a general one, and it has to match to the minute - “60 min” will not price a fifty-minute lesson. When no row matches, pricing drops further down, to the hourly rate or the per-lesson rate from the contract.

Yes, as a CSV, and the file carries ROWS, not templates: the name of the list repeats as many times as it has entries. The import matches the name regardless of case, replaces the rows of a list with that name, and creates an unknown one. A row with no amount is dropped. The separator is chosen before downloading - a semicolon for Excel, a comma for Google Sheets - and a sample file sits next to it.

Put it in the archive. It stops being offered on a contract, but stays readable and frees a slot in the limit - otherwise the school's history would cost it a subscription. Restoring from the archive asks about the ceiling again, so it cannot be dodged by archiving and unarchiving. Deleting takes the template's rows, while the contracts it was copied into stay untouched.

No. That is done by the pricing ladder in Contracts, reading only the rows stored in that one contract. Price lists are a store of patterns and their role ends the moment they are copied. They know nothing about the base rate or the allowances either - those are fields on the contract. And student tuition is on the far side of the wall entirely: money coming in belongs to Finance.

See Cerium from the inside.

14 days on your groups and instalments. No card, no strings.