Create & Manage Offerings
Create bookable services with verified pricing, duration, capacity, tax, visibility, and resource controls.
An offering is the service a customer selects first. Its duration, booking model, online visibility, and selected resources all affect whether the customer can reach a usable time slot.
Find and filter offerings
Screen: In the classic admin sidebar, go to Sales & Orders → Appointments → Offerings. In the new admin sidebar, go to sell. → Appointments → Offerings.
Use Search offerings to filter by text. The Status filter offers Active, Inactive, and All statuses. It starts on Active, so deactivated rows are hidden until you switch it to Inactive (only deactivated rows) or All statuses. The table shows Name, Price, Duration, Status, and Actions, with page-size and page navigation controls below it.
Only store-level administrators see Add offering, Edit, and Deactivate. If there are no offerings, the same creation flow is available through Add your first service.
Store administrators on a plan with a capped offering allowance also see a running usage banner
above the table, reading "N of M services used" (or, once you've hit the cap, "N of M services
used — you've reached your plan's limit" in a warning colour), with an Upgrade plan button
that opens Billing & Plan (/settings/billing). It counts active offerings the same way the cap
does, and it's separate from — and appears before you ever try to save — the Offering limit
reached banner below, which only shows on the Add offering form itself. A store with no cap
purchased and zero offerings sees neither banner.
Create an offering
Click Add offering to open the form. The form is laid out as six titled sections, worked through top to bottom; when you reopen an existing offering with Edit, an Active/Inactive status chip appears next to the page title.
Basics
This section's helper text reads "The name and description people see when booking." Enter Name, optionally SAC code and Description. A saved SAC code also appears as the line item's service accounting code on the customer's invoice once the booking is invoiced.
Duration & buffers
This section's helper text reads "How long the appointment takes, plus any prep or cleanup time blocked around it." Enter Duration (mins); it must be greater than zero. Processing time (mins) and Buffer time (mins) default to zero. Their number inputs show a minimum of zero, but Save does not enforce that minimum and submits entered negative values.
Pricing & deposit
This section's helper text reads "What people pay, and whether a deposit is collected upfront." Choose Price type as Fixed or Starting at, then enter a non-negative Price. Optionally enter GST rate (%): the field suggests a 0–100 range, and Save enforces that range when a value is entered — an out-of-range value shows Enter a GST rate from 0 to 100 and prevents submission.
Click Deposit policy to expand the deposit fields, then choose Deposit type. Leave it on No deposit for no upfront payment — the customer books straight through to a confirmed appointment and the full amount is invoiced later. Choose Percentage of total to require a share of the price (0–100) upfront; enter the percentage in the Deposit value field that appears. Choose Fixed amount to require a flat rupee amount upfront (0 or more; a value larger than the offering's price is capped at the full price). Choose Full prepayment to require the entire price upfront, with nothing left to collect later — no Deposit value field appears for this mode.
Booking rules & visibility
This section's helper text reads "How many people can book at once, and whether this shows up for
online booking." Set Booking model to One person at a time or Group / capacity. The
Capacity field appears only for the group model and must be greater than zero. Leave Visible for
online booking on to include the offering in the customer /book list; turn it off when the offering
should remain available to administrators but not appear online.
Team
This section's helper text reads "Who can be booked for this offering." Use Team members / resources to select one or more person resources. Spaces and equipment do not appear in this selector; they are chosen in Required rooms / equipment below it.
When you edit an older offering that is already linked to any resource type, each selected chip shows the saved resource's name (type) — including a Space or Equipment link — instead of exposing its raw ID. New choices in the team selector remain active Person resources only. If a saved resource can no longer be resolved, its chip says Unavailable resource so you can remove it deliberately.
Required rooms / equipment. Under the team selector, this multi-select lists your active Space and Equipment resources, each chip labelled Name (Space) or Name (Equipment). Its help text reads "A time is only offered while every room or piece of equipment picked here is free. Leave empty if none is needed." If the store has no active spaces or equipment it says "No active spaces or equipment yet. Add them under Resources to require one."; create them first in Team & Resources. The two pickers save together as one linked list, and a room does not count as a team member: an offering with only a room and nobody in the team still shows the "No team members are assigned yet" warning.
What a required room does for customers:
- A time is offered only when a team member is free and every required room or item is free for the whole duration. A room is free when it has no overlapping booking or live hold from any offering that requires it, no block on its own availability, and (if you gave it weekly shifts) the time falls inside those shifts. A room with no shifts of its own is treated as open all day.
- A room is one-at-a-time. Two offerings that need the same room cannot be booked in overlapping times. A Group / capacity offering can still share the room with its own bookings.
- When the customer confirms, the room is checked again, so two customers racing for the same room get the usual "this time was just taken" outcome for the second. Rescheduling an appointment into a time when the room is busy is refused the same way, including a customer's own reschedule from a manage link (the appointment being moved does not count against itself).
- Offerings with no required rooms behave exactly as before.
Only an active room counts. Deactivating a room removes it from the requirement; its Bookable online setting is ignored for this.
Leaving this selector empty shows a warning below it: "No team members are assigned yet — customers won't see any available times to book until someone is." This applies to every booking model, not just Group / capacity — the offering still saves without a team member (a merchant may legitimately create it before assigning staff), but no customer can book it until at least one is linked.
Group / capacity offerings need a linked team member
A Group / capacity offering has no single assigned resource — its bookable times are built from the combined weekly shifts of every team member you link here (plus any store-level availability rule, if you have one configured), and confirmed bookings never assign a specific team member to the slot. Link at least one team member here and set their weekly shifts before making the offering visible online — a Group / capacity offering with no linked team member and no store-level rule shows customers no bookable times at all.
Intake form
This section's helper text reads "Collect extra details from people before their appointment." On a new, unsaved offering, Manage intake questions is disabled with a tooltip reading "Save this offering first to add intake questions." Once the offering is saved, the button opens the intake-form builder and a line under it reads either No custom questions yet or N questions configured — see Offering Intake Questions for the builder itself.
Save or leave
A sticky bar at the bottom of the page always holds Cancel and Save; once any field is changed it also shows an Unsaved changes label beside them. Click Save. A successful create or edit returns you to the Offerings list. Cancel returns to the list without submitting the form, and both controls are disabled while a save is running.
Offering limit reached
Creating a new offering beyond the plan's allowance does not save it. A warning banner appears at the
top of the form reading "You have reached the limit for services in your current plan.", with an
Upgrade plan button that opens Billing & Plan (/settings/billing). The banner only appears
on Add offering — it does not apply when editing an existing offering. The limit counts
Active offerings only — deactivating an offering frees up a slot without deleting it. See Plans,
Add-ons & Team Allowances → How many offerings can I
create? for the
exact number on each plan.
Deposit policy
Deposit policy decides whether a customer pays something before their appointment is confirmed, and how much.
| Mode | What the customer pays now | What's left after |
|---|---|---|
| No deposit | Nothing | Full price, invoiced/collected later |
| Percentage of total | The configured percentage of the offering's price | The remaining balance |
| Fixed amount | The configured rupee amount (capped at the offering's price) | The remaining balance |
| Full prepayment | The entire price | Nothing |
For a signed-in customer, an effective mode other than No deposit makes the deposit step appear. The saved offering policy normally supplies that mode; when the policy has never been saved, the store's Default deposit (₹) supplies it instead. A positive inherited store default therefore adds and counts the Payment step just like a service-level deposit policy. A guest continues to Done, where the unpaid deposit is shown as pending payment.
What customers see: on the booking funnel, this step appears between Confirm and the final Confirmed screen — right after the customer reviews their appointment details and before it's booked. For Percentage of total and Fixed amount, the page is titled Pay deposit and shows the deposit amount due now with wording that says the remaining balance is paid later. For Full prepayment, the page is titled Pay now instead and shows the full amount due, with no mention of a remaining balance — see Paying a deposit for the exact wording. Either way, the customer pays by the payment methods presented in Razorpay's hosted Checkout. BillionBiz does not collect card fields or offer a card-saving choice in its own dialog. A signed-in booking does not reach Done until this payment succeeds. A guest skips the mid-funnel payment screen and reaches Done with the booking pending payment, then uses the private manage link to pay.
Once an appointment is confirmed, any remaining balance shows on the customer's My Bookings detail page with Pay balance, which reuses the same payment screen for the leftover amount.
Forfeiture on cancellation: the amount a customer gets back if they cancel depends on your Cancellation window (hrs) setting (see Booking Settings & Presets). Cancelling outside that window refunds the deposit in full; cancelling inside the window forfeits it. This applies to whatever was actually collected — for Full prepayment, that's the entire amount paid.
Unpaid deposits time out automatically
A confirmed booking that still has an unpaid deposit does not hold its time slot forever. A scheduled sweep (the same reaper mechanism as reminder delivery, below) cancels a confirmed appointment once its deposit order has sat unpaid past the store's deposit timeout — set by How long to hold an unpaid booking (mins) in Booking Settings & Presets, 30 minutes by default for a store that has never saved a value, adjustable from 5 minutes up to 7 days (10,080 minutes).
The cancellation runs through the exact same path as a manual cancel — it releases the held slot, voids or refunds the deposit order the normal way, and the customer gets the same Cancelled notification any other cancellation sends (subject to the WhatsApp caveats in Booking Settings & Presets). Both the admin appointment panel and the customer's My Bookings only ever show the resulting status as Cancelled — neither side surfaces why it was cancelled, so a deposit-timeout cancellation looks identical to a manually cancelled booking. If a customer reports their confirmed booking disappeared or shows Cancelled without them doing anything, check whether the deposit was ever paid before assuming a staff member cancelled it.
Saved No deposit vs. never saved at all
Saving the offering with Deposit policy left at its No deposit default writes an explicit "no deposit" policy — that offering will never charge a deposit, and will never fall back to anything else. The only way an offering ends up with a different effective behavior is if its deposit policy was never saved through this form at all (typically an offering that predates the deposit-policy feature and has never been reopened and saved since). An offering in that genuinely-unset state falls back to the store's Default deposit (₹) in Booking Settings & Presets instead of behaving as No deposit — even though the form itself always shows No deposit selected when you open it. Reopening and saving the offering (even without changing anything) locks in an explicit No deposit and removes it from the store-default fallback for good.
Troubleshooting — "why isn't the deposit step showing for my customers?" Check the offering's saved Deposit policy first. An explicit No deposit never inherits. If the form shows No deposit but the policy was never saved, check the store's Default deposit (₹) described above; the inherited percentage should appear as a badge on the service and follow the normal deposit route.
Intake questions
Once an offering is saved, its Manage intake questions button opens a builder where you add, reorder, and remove questions the customer answers on the booking flow's Details step — see Offering Intake Questions for the full walkthrough.
Edit or deactivate
Click Edit on a row to reopen the same fields. Click Deactivate and confirm in the Deactivate offering? dialog to make an active offering no longer bookable. Deactivation is described as reversible by the interface, but this list currently provides no reactivation action; switch Status to Inactive or All statuses to inspect the inactive row.
Why don't customers see an offering?
Check both independent controls: the offering must have an Active status and Visible for online booking must be on. If it appears but customers cannot continue, inspect its assigned person resources and their availability rather than changing the offering's price or duration.
Group / capacity offerings showing no bookable times: these offerings draw their availability from the union of every linked team member's weekly shifts, not from a single assigned resource. If the offering has no team member linked under its Team section, and your store has no store-level availability rule either, customers see an empty calendar. Link at least one team member with a saved weekly shift under Set Availability to fix this.