Pricing, Packages & Offers
Set hourly rates, per-subject rate overrides, lesson package tiers, and percentage or flat promotional offers in Tuitionable.
On this page
Overview
This page is for tutors who want to set what they charge on Tuitionable and how to set discounts. It covers three pricing options, each managed from its own section in your tutor profile area:
- Base rates & per-subject overrides — your default hourly rate, an optional first-lesson discount, and a different rate for individual subjects. These live on your profile editor.
- Lesson package tiers — bundled discounts that reward students for committing to several lessons upfront.
- Promotional offers — percentage or flat discounts that apply to your hourly rate, a single subject, a single package, or all packages, with an optional active window.
Each option is independent — you can run a profile rate, package tiers, and a promotion at the same time. Platform only ever applies the single best discount to a given price; discounts do not stack (see How offers apply).
Where to find each screen. Base rates live on Profile → Edit). Package tiers live on the Session Packages page. Promotions live on the Promotional offers page.
Hourly rate
Open Profile → Edit and scroll to the Base pricing block. One field that set your base headline price:
| Field | Form name | Required | Notes |
|---|---|---|---|
| Default hourly rate | hourly_rate | Yes | Your fallback public rate. Used whenever a subject has no override pricing of its own. |
The hourly rate accepts a positive number with up to two decimals (for example 25 or
25.50). Negative numbers, scientific notation, and more than two decimal places are
rejected.
On your public profile, the “From” price students see is the lowest price of all your subject rates, not your default hourly rate. If you set a low overriding price on one subject, that number becomes your profile-display price.
First-lesson discount
Below your base rates you can switch on a first-lesson guarantee
(first_lesson_guarantee) and set a first-lesson discount percentage
(first_lesson_discount_percent) between 0 and 100 —
use it to offset a percentage off a student's very first paid lesson.
Per-subject rate overrides
If you teach several subjects and want to charge differently for each, use the Per-subject rate overrides section that appears directly under Base pricing on the profile editor. This section only shows once you have at least one subject on your profile.
Each subject you teach gets its own price box. Enter a number to charge that rate for the subject, or leave the box blank to inherit your default hourly rate.
| You enter | What happens |
|---|---|
A number (e.g. 40) | That subject is priced at the override; saved to the custom_rate column on the tutor_subject pivot. |
| Blank / empty | The override is cleared and the subject falls back to your default hourly_rate. |
Overrides are taken effect during booking time, so changing one takes effect on the next booking for that subject. They are also the account for your “From” display price, as noted above.
Only the subjects currently on your profile appear here. If you remove a subject, its override pricing is no longer editable. Add the subject back to your profile before trying to set a rate for it.
Creating lesson package tiers
Package tiers let students buy a bundle of lessons upfront in exchange for a discount. You can publish up to six tiers, and Tuitionable automatically sorts them by lesson count from smallest to largest when you save.
Each tier has three fields:
| Field | Allowed range | Meaning |
|---|---|---|
lessons | 2 – 200 | How many lessons are in the bundle. |
discount_percent | 0 – 75 | The percentage off, applied because the student commits to the whole bundle. |
validity_days | 30 – 365 | How many days the student has to use all the lessons before the package expires. |
Adding, editing, and removing tiers
- Use + Add tier to add a row (the button disappears once you reach six tiers).
- Use Remove on any row to delete it.
- Click Save Packages to publish. Saving replaces your entire set of tiers with what is currently on the form — there is no per-row save.
Because Save Packages overwrites the whole set, removing a row and saving deletes that tier. If you only meant to edit one tier, make sure every tier you want to keep is still on the form before you save.
Students buy and manage packages from their own dashboard. Once a package is purchased, its lesson count, per-lesson price, and expiry are locked for that student even if you change your tiers later. For students' lesson packages, see Lesson Packages.
Promotional offers
Promotional offers are time-bound discounts you can attach to your pricing. Open the
Promotional offers page (tutor/offers). It has two parts: a list
of your current offers at the top, and a Create a new offer form below.
An active offer shows as a coloured pill on your public profile and at checkout.
Choosing what the offer applies to
The Apply to picker allows you to choose which category it applies to:
| Scope | Value | Applies to |
|---|---|---|
| All sessions | all | Every hourly session you teach. |
| Specific subject | subject | One subject only. You must pick the subject; only subjects on your profile are selectable. |
| Specific package | package | A single package tier, chosen from your package dropdown. |
| All packages | all_packages | Every package you offer, including ones you add later. Does not apply to single hourly sessions. |
Discount type and value
| Field | Form name | Rules |
|---|---|---|
| Discount type | discount_type | percent or flat. |
| Value | discount_value | At least 0.01. For a percentage it must be below 100. For a flat amount it is a currency value (e.g. 10 for 10 off). |
| Label | label | Optional, up to 80 characters — e.g. “Holiday sale”. Used as the badge text when set. |
Active window
The Starts (starts_at) and Ends (ends_at)
fields define the window during which the offer is live. Both are optional date-and-time values:
- Leave both blank to make the offer run from now until you disable it.
- Set only a start time to schedule it from the date till indefinitely.
- Set only an end time to run it from now until a scheduled time.
- If both are set, the end time must be on or after the start time.
The Activate immediately checkbox controls the master switch. An offer only counts as live when it is active and the current time falls inside its window. In your list, each offer shows one of three states:
| Badge | Meaning |
|---|---|
Live | Active and within its window — students see the discount now. |
Scheduled | Active, but its start time has not arrived yet (or its window has not opened). |
Disabled | The active switch is off; nobody sees it. |
Managing existing offers
Your current offers are listed at the top of the Promotional offers page, newest first, with live offers floated to the top. Each entry shows the discount, the scope, the label, and the window.
- Remove — deletes the offer. Students stop seeing the discount immediately, and you can re-create it any time.
- Re-create — there is no in-place edit of your own offers from the list; to change an offer, remove it and create a new one with the corrected values.
How offers apply at checkout
When Tuitionable price a session or package discount at checkout, it gathers every live offer that matches the context and applies only the single best one — the discount that produces the lowest final price. Discounts never stack.
The matching order is package-specific first, then subject, then global:
| Context | Offers considered |
|---|---|
| An hourly session in a subject | An all offer, plus a subject offer for that subject. |
| A specific package | A package offer for that tier, an all_packages offer, and an all offer. |
For a percentage offer, the final price is use to offset that percentage; for a flat offer, the final price is use to offset the amount instead. Only the best discount wins, a package's own built-in tier discount and a promotional offer do not add together — whichever yields the lower price is the one the student pays.
The price a student sees is locked in when they start a purchase. If an offer's window closes between the moment they view the price and the moment they pay, the figure they were quoted still holds for that booking.
Troubleshooting
| Symptom | Likely cause & fix |
|---|---|
| Hourly rate won't save | The value is outside of min_hourly_rate/max_hourly_rate bounds, is negative, or has more than two decimals. Use a positive number such as 25 or 25.50. |
| A subject still charges my default rate | Its per-subject override box is blank. Enter a number in Per-subject rate overrides and save. |
| Saving packages deleted a tier | Save Packages replaces the whole row. Re-add it and save again. |
| Subject-scoped offer rejected | You chose Specific subject but didn't pick one. Select a subject from the dropdown, or use a different scope. |
| Percent offer rejected | A percentage must be below 100%. Lower the value, or switch to a flat amount. |
| Offer shows “Scheduled”, not “Live” | Its start time is in the future, or its window has not opened. Check starts_at, or clear it to go live now. |
| No subjects in the offer subject dropdown | Add subjects to your profile first, then return to the offers page. |
Related pages
- Building Your Profile — setting base rates and subject on profile.
- Lesson Packages — how students buy and use the package tiers you publish.
- Earnings & Commission — how your rates and discounts factor into what you earn.