August 2026: Deposits Land in the Right Column
2 August 2026
Highlights
Deposits are attributed to how they were actually paid
Until now a deposit was bundled into whatever payment settled the rest of the bill, so a $43 card deposit on a $180 appointment finished at the counter in cash was reported as $180 of cash. Your Sales summary now records the deposit against the method it was genuinely taken with - card deposits under Card, cash deposits under Cash - so the payment breakdown reconciles against your card statements and your till. Receipts are unchanged: they already showed the deposit on its own line. This applies to appointments checked out from now on; periods before this update keep the figures you have already reconciled and reported on.
Your client is told when their treatment plan is ready
Publishing a treatment plan now messages the client to let them know, with a link straight to it in their booking portal - until now the plan simply appeared there and they had no way of knowing. Email is on by default and SMS is off; both templates are yours to edit under Settings → Automated messages, like every other automated message. Saving ordinary edits stays silent, so only "Save & re-publish" lets them know the plan has changed.
Checkout stops asking you to charge a bill that is already paid
When a deposit, a gift card, client credit, a package or a full discount has already covered everything, checkout no longer shows four payment methods and a "Charge card" button that would charge nothing. It tells you what covered the bill and gives you one button to complete it. The same applies to a walk-in sale a gift card covers in full.
See cancelled appointments on the scheduler when you need them
The scheduler header now has Filters for status, booking source and tags. Cancelled stays off by default - tick it when you want those appointments on the calendar. A dot means something differs from the defaults; Reset puts them back. Same idea as the Appointments list status filter.
Clients can upload photos and PDFs on intake forms
A new File upload field lets clients send treatment-area photos, ID, or referral letters from the form link - your team sees them on the submission and on the client Files tab.
Payments & pricing
Set one fixed Appointment fee under Booking policies (a flat surcharge, service charge or booking fee - clients see the name you choose) and Bella adds it once to every new appointment with a service, whether the client books online or your team creates it. Service and bundle cards show the all-in price from the start, then the booking, till, receipt and email itemise the fee by the name you chose. It stays outside deposits, cancellation percentages, discounts, packages, memberships, commission and loyalty, while gift cards and client credit can still pay it. Sales summary gives it its own count and amount. This is a method-neutral charge on the appointment, not a Bella per-booking fee and not the card processing surcharge: Bella still never takes a cut of your appointments.
Services
- NewRequire a consultation or an initial service before a treatment can be booked onlineServices & Bundles
A service (or bundle) can now list prerequisite services - the classic "consultation first, then the treatment" pattern without misusing a membership as a gate. Choose Completed (the prerequisite appointment must be marked Completed) or Booked (any non-cancelled booking counts, including adding both to the same cart). When you list more than one, require Any or All. Online, unmet treatments stay visible but locked with a clear path to book the missing service; your team sees an advisory on the dashboard and can still override. Cancelling the prerequisite later does not retro-cancel a treatment already booked under Booked mode - use Completed when the consult must genuinely have happened.
The drag handle next to each service now shows on every screen, not only a wide desktop window. Press and hold it, then drag, or use Move up / Move down in the row menu. The same pattern applies to categories, team members, resources, product categories, variants, and bundle components.
Online booking
Share a link to a single service (Catalogue then Services, the service menu, Copy booking link) and it no longer just scrolls the client to it - it adds the service for them, so they land on a booking already started. The same happens when a client taps a service on your booking page. Where the service needs a decision first the link asks it instead of guessing: options and add-ons open on screen, a group service asks how many people, and a client with family members on their account is asked who it is for. If the service is not one they can book right now, they are told why and pointed at your memberships, at the service they need first, or at your phone number, and if they sign in along the way they come back to the same service with their selections intact.
Your phone number, email address, website, social links and address are now each switchable under Settings → Online booking → Appearance → Contact details. Turning one off only stops it being published to clients and search engines - your receipts, appointment confirmations and automated messages still use it, so you never have to delete a detail just to stop showing it. (Reserve with Google is the one exception: it needs a published street address, so a suburb-only or hidden address holds your listing back until you switch it back.) Address has three settings rather than a switch: your full address, an area-only option named for your country (Suburb and state in Australia, City and state in the US), or hidden - so businesses that travel to clients or work from home can stay findable by area without publishing a street address.
A service can now be set to Enquiry only on its Booking policies tab. Clients see it on your booking page (and its price, unless you have hidden prices) but get a Call to book or Email to book link instead of a time picker, so bridal, complex colour and anything you quote after a chat can be advertised without arriving as an unchecked booking. A bundle that includes an enquiry-only service is left out too. It stays out of the booking steps and out of your Reserve with Google listing, because neither can take a booking for it.
If you ask clients for a deposit or a card on file, a booking waits until they finish that step. Those bookings used to sit on your calendar labelled "Pending Approval" with an Approve button - even with approval switched off - which read as a booking waiting on you when it was really waiting on the client. They now show as Awaiting deposit or Awaiting card, they tell you the booking confirms by itself the moment the client pays or saves their card, and the client gets a message with a link to finish. You can still approve one yourself, and Bella will point out that approving a card hold means there is no saved card to charge if that client later cancels late or doesn't show. Your notifications match: an appointment that is still waiting is no longer announced as "Appointment confirmed". The two new business notifications sit with the rest in Settings → Automated messages, so you can reword them or switch them off, and you can filter your notification bell to just the bookings waiting on a payment step.
Find a time now has an Online booking view - Schedule gaps, minimum notice and your booking window applied - with an Online vs Scheduler count of how many free times clients do not see. Open it straight from Booking policies with Check what clients see (or from Online booking Live preview, and when a team member or service is hidden from online booking). Preview booking flow still walks through messages, payments and notifications after a booking; the two tools answer different halves of what clients experience.
Booking policies now shows your live availability - how many times clients can book over the next 7 days, worked out against your real calendar - and, when you change a rule, what it would become before you save. New warnings flag settings that quietly shrink your availability, and your booking-page suggestions appear right on the page.
Cancel window and Reschedule window now take any notice period up to 72 hours, not just the preset chips. Choose Custom, then type the number in minutes, hours or days - whichever you think in - so a 36-hour window is simply 36 hours, with no working out what that is in minutes. The value reads back to you before you save, so a slip of the finger never becomes your policy.
When the About on your booking page runs long, it used to be cut off mid-thought. It now trims at a tidy length and finishes with Read more, which expands it in place (Read less folds it back), on every hero layout. Clients who want the full story get it; everyone else gets to the times sooner.
Reserve with Google is live. Switch it on from the Online booking page - the same place as your booking link and Google Business Profile helper - and Bella publishes your business so clients can book from Search and Maps where Google offers it. The Book button opens your booking steps (the same as Straight to booking), not your landing page. You need online booking on, a complete pinned address, a business type Google can map, and at least one service and team member available online. Bella sends the listing once a day; Google can still take a day or so to show the button, and only in countries and categories where it offers Reserve with Google. This is not the same as pasting your booking URL into Google Business Profile.
Reports
The Cash, Card, Gift Card, Client credit and Other columns of the Sales summary now attribute an appointment deposit to the tender that actually took it, instead of folding it into the payment that settled the remainder. The columns still add up to the day's total - money has only moved between them, and only for appointments checked out from this release onwards. One thing this does not change: a deposit is still counted on the day the appointment was checked out, not the day the client paid it.
The Packages summary gains two columns: Refunds and Net sold amount. When a package purchase is refunded in full, the money comes back on the day the refund was issued - Total sold amount stays as it was on the original sale day, so a period you have already read or exported is never rewritten. Only the package's own price is reversed, so a sale that mixed a package with services never over-reports. A voided package is deliberately not a refund: no money went back, so it stays in Total sold amount while its sessions leave Sessions outstanding.
A new client offer redeemed at checkout was missing from the Discounts column, so the figure understated what you had actually given away. It is now included, in both the selected period and the comparison period.
A client refunded in full for a package could still book against its remaining sessions - you had given the money back and still owed the treatments. A full refund of the purchase now voids the package, so those sessions can no longer be redeemed at the till or online. Sessions the client had already used stay used, and a partial refund still leaves the package active - that is how you return just the unused portion of a package someone has already started.
- FixedRefunds on package sales are attributed correctly when you filter by team memberDashboard & Reports
With a team member filter applied, the Sales summary shares each refund across the sale in proportion to that member's work. Package lines were counted on one side of that calculation but not the other, so a refund on a package-only sale disappeared from the report entirely, and a refund on a mixed package-and-service sale was overstated. Both now come out right.
Cancellations
A cancellation used to itemise every product on the appointment, add them into the total and - on a deposit booking - print a "Balance due", even though cancelling releases those products and nothing is ever charged for them. Cancellation messages now cover the services only, and a new line says what actually happened to the products: released and not charged, or, when the client paid for them up front in the booking flow, still theirs to collect. The line is a template variable you can reword like any other.
Charging a late-cancellation or no-show fee to a saved card now sends the client a message saying what was charged and why - before this it was recorded only in your own activity log. It quotes the total that reached their card, including any card processing fee you pass on, and it is yours to edit under Settings → Automated messages. Turning off Notify the client on the cancel dialog suppresses it along with the cancellation message.
When a client has already paid for products reserved against an appointment, cancelling it asks you first: keep the order so they still collect, or cancel and refund it to their card. Bulk cancels ask once for the whole batch - including the sweep that runs when you archive a team member, service or bundle, which previously cancelled those appointments in silence and never mentioned the paid deposits or orders left behind.
The cancel dialog used to offer one switch over everything the client had used - Forfeit redeemed rewards & credits - and it never said what those were. It now lists them: the gift-card balance they spent, their store credit, the package and membership sessions this appointment used (named by package), the loyalty points, a referral reward, a first-visit or birthday offer, and the products going back on the shelf. Each line is yours to Restore or Forfeit, so a late cancellation can hand back the gift-card money while keeping the session, instead of all-or-nothing. Restore all and Forfeit all set the lot in one click. Only what the booking actually used is listed, so most cancellations look simpler than before, not busier - and cancelling an appointment that was already checked out now offers to refund that payment to the client's card, or to their credit balance, which previously could only be done by refunding the sale separately.
On businesses that pass card processing fees on, "Full refund" quietly refunded less than "Use policy", and the forfeit shown to both you and the client was short by the processing fee - a $100 deposit with a $3 fee and a 50% policy read $47 when the client was $50 out of pocket. Both now work from the amount the card was actually charged. The client's cancellation page also shows the refund and fee it had been silently discarding.
Checkout
An appointment whose deposit, gift card, client credit, package or discount already covers the full amount now shows "Paid in full by the $43.00 deposit - nothing left to collect" and a single Complete checkout button. Previously the payment-method list still appeared with the client's saved card pre-selected and a "Charge Mastercard ····1690" button, alongside a note saying the card would be charged immediately - none of which happened, and whichever method was left selected was recorded as the payment for the whole sale. Create Sale behaves the same way when a gift card covers a walk-in sale in full.
Refunds
Refunding part of a sale returned money and nothing else: with part of the bill still standing, Bella had no way to tell which session or reward the refunded amount belonged to, so it left them all alone. The refund dialog now lists what this sale used - package and membership sessions, loyalty points, a referral reward, a first-visit or birthday offer - and you say which of them the refund covers. Refunding one of two services and handing back the package session it used is a two-click job. A full refund still returns everything by default; you can now hold a line back there too. Gift-card balance and store credit stay full-refund-only, because their value is part of the bill and returning them beside a part-refund would give the client back more than the refund did.
When you ring up the wrong service, or the wrong client, open the sale and click Void sale. It reverses the whole checkout in one go: a card payment goes back to the client's card, a cash payment comes off your records, and everything the sale used comes back - gift-card balance, client credit, package and membership sessions, loyalty points, rewards, first-visit and birthday offers, and product stock. The appointment returns to unpaid so you can change what was sold and check out again. The voided sale stays in your Sales list marked Voided, keeping its invoice number and the reason you gave, so the correction explains itself later - and it leaves your sales and tax reports entirely, because it is not a sale and not a refund. Filter the Sales list by Refund status, Voided to see everything you have voided over a period. Until now the only way to undo a mistaken checkout was to refund it and re-ring it as a free-text charge, which lost the service on every report.
A refund used to be silent - the client found out when it turned up on their statement, or asked you. They now get a Refund issued message with their amended receipt, so they can see exactly what came back. It goes out for partial refunds too, which are the ones clients query most. Reword it or switch it off under Settings → Automated messages → Sales & receipts.
A late-cancellation or no-show fee charged to a card on file used to be permanent in Bella - putting it right meant a refund from your payment provider with nothing here to show for it. Open the cancelled appointment and click Refund fee: the fee and any processing surcharge go back to the card it came from, the appointment records it, and you can charge a corrected fee afterwards.
Cancelling a finished appointment was blocked outright whenever a deposit had been taken, so the only way to unwind a mistaken checkout was to call us. It now works like any other cancellation, with the deposit refund or forfeit decided by your cancellation policy exactly as it is everywhere else.
Cancelling a completed appointment puts any products sold back on the shelf. The product's History tab labelled that automatic restock Manual adjustment, which made it look like someone had counted the stock by hand. It now reads Sale refunded, with a note naming the appointment that caused it.
Bella records the refund reference your payment provider returns, so a refund on your Stripe dashboard can be matched to the sale it belongs to instead of hunted down by amount and date.
Refund Checkout and Refund Deposit have always been separate actions, because they reverse two separate charges. The refund screen capped the checkout refund correctly, but the underlying limit did not - so a refund requested outside the screen could return more than was ever collected at the counter. The limit now excludes the deposit, which continues to be refunded through Refund Deposit.
Forms
A client standing at your front desk can now have their form completed on the dashboard, instead of you watching them type on their own phone - or giving up. Fill in for client opens the same form, with the same questions and the same required fields, from the client's Forms tab, an appointment, the Submissions tab or any form still awaiting completion. If nothing has been sent yet, pick the form in Send form and choose Fill in for client - no email, no SMS, no link. Where a form is already waiting, the same submission is completed, so there is no second record and no duplicate message. Signatures are unchanged: hand the device over and the client signs. Every completed form now records who submitted it - Filled in by Alex Chen, or Completed by Sarah Nguyen - on every screen and in the CSV export, and a client is never sent a "we've received your form" message for one you filled in for them.
The form link in your email or SMS now opens the form itself. Until now it landed the client on a sign-in wall - they had to have an online-booking account and get a code by text before they could answer a single question, which is why so many consent and intake forms were never returned. The link now carries its own one-off key for that one form, so the client taps it and starts filling it in. Copy link on a pending submission in your dashboard hands over the same no-sign-in link, and the Submissions tab of a form now has its own Send form button - pick a client and it goes. Where a client already has that form waiting, Resend link nudges the same one instead of quietly creating a second submission and a second message. Links you sent before this update keep working exactly as they did.
Add a File upload field to any form - clients take a photo or choose files (JPG, PNG, WebP, HEIC, or PDF) from the form link, up to five files per question. Your team reviews them on the submission and on the client's Files and Photos tabs. Clients re-view their uploads on the completed form.
On a form built with more than one section, the answers on the client's record came back shuffled - the first question of every section together, then the second of every section, and so on. A follow-up like "If yes, which medicine?" ended up several answers away from the question it belongs to, and a signature could land in the middle. Submissions now read exactly as the form is laid out, section by section, and the same order carries through to the printed copy and the CSV export. Forms already completed are corrected too - nothing needs resending.
Clients
Build a treatment plan template once - phases, timing, notes and recommended services and products - then use it to start any client's plan, or add its phases to an existing plan. You can also save any client's plan as a template for next time. Your library lives under Catalogue, Treatment templates. Applying a template copies it, so editing or deleting a template later never changes a plan someone is already following - and the plan's revision log still names the template it started from. Adding phases to a plan already running asks which date they should begin and shifts the whole template by the same amount, so the spacing you designed is kept.
- NewLink two existing clients as family - so they can share an email address
The Family tab could only create a brand-new person, so a couple who are both long-standing clients could not be linked at all. Add now has two modes: New person as before, or Existing client - search anyone already in your list, pick the relationship, and link. They keep their own profile and their entire appointment history; nothing is created and nothing is merged. This also unblocks a common request: an email address or mobile number can only belong to one active client, and the single exception is people linked as a family - so link them first, then put the shared address on both profiles.
A client's payment history listed the deposit on its own row and also inside the sale total, so a $180 appointment with a $43 deposit read as $223 of activity and disagreed with the receipt. The sale row now shows what was collected at checkout, so the rows add up to what the client actually paid. Deposit rows also name the payment method now, including for deposits paid online.
Scheduler
Releasing a drag on the calendar opens a quick confirmation - the same one as picking a time - showing the new time, who performs it, any overlap, and a Notify the client toggle when the change would message them (a drop that keeps the appointment's start time, like handing it to another team member at the same slot, says so and sends nothing). Nothing saves until you confirm; Keep choosing puts the card back. A dragged recurring appointment now asks "this one or all future" before its move saves too. If you prefer instant drops, turn Ask before moving off in the Display menu - and Lock appointments plus this new setting now follow you to every device you sign in on.
How you like your calendar - zoom, visible hours, shading, hidden days, readable narrow cards, the team or resources view, and who to show - now joins Lock appointments and Ask before moving in being saved to you, not to one browser. Sign in on the front desk, your laptop or your phone and the board looks the way you left it. The view itself (Day, Week and so on) deliberately stays per device, since a phone and a desktop want different answers, and column choices are per location. New browsers also start with the calendar shaped around your opening hours instead of a fixed 7am to 8pm.
Confirm and Approve now open the same confirmation everywhere: the calendar preview, the appointment page, the appointments list, the client file, Messages, a series row, and bulk confirm. Notify the client stays on unless you turn it off. If the booking is waiting on a saved card, that same dialog still warns that approving waives the card. Check in, Start and Undo stay instant.
Whatever screen your calendar is open on no longer waits for a refresh. When a client books online, or a team member on another device adds, moves, checks in, checks out or cancels an appointment, every open calendar at your location shows it within a moment - smoothly, without the screen flickering or your place on the calendar jumping. Just the thing for a front-desk screen that stays open all day.
A Filters control in the scheduler header combines status, booking source (and team member preference for online bookings) and appointment tags. By default you still see Booked, Confirmed and Completed only - tick Cancelled when you want cancelled appointments on the calendar. Booking source moved here from Display options. Defaults show as unmodified; any change shows a dot; Reset restores the defaults. Session-only, so a reload clears them. The Appointments list now matches: Clear all returns status to the same default instead of switching cancelled appointments back on, and the online-booking indicator reads "Requested team member" / "Any team member" everywhere. Across the list screens that show a running total - Appointments, Clients, Sales - that "N results" line now stays put at the default view instead of only appearing once you filter.
Settings → Business settings → Week starts on sets the first day of the week for the scheduler, rosters, timesheets and every date picker - and for your online booking page, where it orders the opening hours clients see and the date picker they pick from. It also sets the week your weekly business summary covers and the morning it arrives: a Sunday-start business now gets a Sunday-to-Saturday summary on Sunday morning instead of a Monday-to-Sunday one on Monday. It is set from your country when your business is created, so a business in the US or the Middle East no longer starts every week on Monday, and you can change it to any day. Settings → Scheduling shows the same day, since that is where most people look for it.
Whether the calendar fills appointments with their status colour or their service colour has moved out of each person's browser and into Settings → Scheduling → Scheduler colours, beside the colours it decides. Everyone at your location now reads the same board, and a service colour you set actually shows up. The scheduler's Display menu links straight there.
In team view, click a team member's name at the top of their column for quick schedule actions: Edit this day sets custom hours for the date on screen, Edit working hours opens their weekly schedule (including per-day repeats like fortnightly late nights), and Add time off starts from the day you're looking at - plus links to their profile and the full Team schedule. The same actions as Team → Schedule, without leaving the board. Shown to people who can manage the team schedule.
If you colour the calendar by service so you can tell appointment types apart across the floor, checking out used to leave the tile in that service colour. Completed (and cancelled) appointments now take the Completed or Cancelled colour for the whole tile, the same as when you colour by status. Live appointments keep the service colour, and check-in still shows as the strip along the top in the Day, 3 days and Week views rather than painting over the work. Switch Colour by to Service under Settings → Scheduling → Scheduler colours.
The scheduler's Display menu now names its controls by what they do: Time grid is Zoom, Drag lock is Lock appointments, Working hours is Shade non-working hours (so it is no longer the same phrase as the Working hours enforcement setting), Start and end calendar at is Visible hours, and Rotate text on tight space is Keep narrow cards readable. Nothing behaves differently, and searching for the old names in the command palette still finds them.
On a phone, the Day and 3 days views share the width equally between your team member or resource columns, so the whole roster fits on one screen instead of a column and a half. Columns only tighten as far as the cards can stay readable (about 40 pixels); with more columns than that allows, the calendar pans sideways instead of squashing further. As columns narrow the cards adapt step by step, and Keep narrow cards readable in the Display menu keeps the tightest ones legible. Every zoom level is on a phone now too: the 10 and 5 minute rows used to be held back on small screens, which is exactly where a 15-minute appointment needs them.
An appointment with a promo code now carries a small amber tag with the card's other indicator icons, and hovering it reads Promo code applied. It shows once per appointment, whether the code was queued before checkout or already committed on the sale, so you can spot promotional work across the day at a glance. An ad-hoc discount your team applies by hand deliberately shows no tag: this signal means a promo code was used, not that any discount exists. You can also enter a promo code from the Discount dropdown while creating or editing an appointment now, not only at checkout.
On a waitlist entry, tap the client's phone or email - or use Send SMS / Send email in Actions - to open Messages with that client already selected. You stay one step from the waitlist instead of hunting them up in Clients first.
When you create an appointment series, the review now checks each date the same way a single appointment does: team member, room, hours, and whether the client is already booked in that window. A date the client cannot take is blocked and skipped. A team-member warning can still be booked anyway. If a date is refused at create, the rest of the series is still created and you see which date failed and why.
Cancel now sits on the same three-dot menu wherever you already look at an appointment: the scheduler, the appointments list (including a completed one, and in bulk), the client file, an upcoming appointment in Messages, a row in a series overview, and the edit form. On the preview and appointment page the status chip is Confirm and Undo; Check in, Start and Checkout sit in the button row with Actions. On a screen with no chip (list, client file, Messages, series), Confirm, Check in, Start and Undo sit on the three-dot menu. Permanently delete is only for a cancelled appointment. There is no live Delete on the edit form.
Resend confirmation, reminder, rebook reminder and review request on the appointments list open the same preview as the Activity tab. Decline on an approval or awaiting-card banner uses Decline wording in the cancel dialog. Confirm and Approve on the list, client file, Messages, series and preview let you choose whether to notify the client, the same as the status chip. Cancelling upcoming appointments in a series has the same forfeit-redeemed-rewards switch as bulk cancel (off by default, so rewards are restored).
Rebook now uses the same tap-a-time flow as moving an appointment. Choose Actions then Rebook on the preview or appointment page, or Rebook from a client's history or the appointments list. The calendar opens on the suggested next date, pick a slot, and confirm. A new appointment is booked and the client gets a new booking confirmation, not a reschedule message. If a deposit is required, confirm uses your policy default; Review in form is there to waive it, change the service, or add notes. Edit and Checkout stay in the form. After checkout, Rebook still opens the form with the suggested date, and Pick on calendar sits at the top of Scheduling.
Gift cards
A client paying for their service who also wants a voucher for someone else no longer needs two separate transactions. Click Add item under Items and choose Gift card - at an appointment checkout, or on a walk-in Add sale - set it up exactly as you would on the Gift cards screen, and it joins the same sale. One payment, one receipt, one line in your sales list, so your end-of-day totals match your card terminal. Every gift card you sell is now recorded as a normal sale: it appears in the sales list, on the client's record, and in your reports alongside everything else you sell. The card is never discounted by an appointment discount, reward, membership or package - a $100 voucher always costs $100 - and no tax is charged when it is bought, because tax applies when the card is spent on a service. The code prints on the receipt, so a card handed over in person is usable straight away, and refunding the sale voids the card so money you have given back can't be spent.
Once you have uploaded at least one custom gift card design, Settings → Gift cards → Custom designs gains a Built-in designs control (Visible or Hidden), the same shape as Prices in booking policies. Set it to Hidden and clients purchasing online only see your uploads - Bella's built-in designs stay out of the way. Delete the last custom and built-ins come back automatically so the picker is never empty.
Sell gift card now has an optional Card code field - scan or type the code printed on a physical card so the same code works in Bella, at the till, and when the client books online. Leave it blank and Bella still generates a code, as before. Online purchases are unchanged.
When you sell a gift card at the till without emailing it, you can leave recipient name blank. You no longer need to type a placeholder. Name is still required when the gift card is emailed, and for online purchases.
Products
A product's menu on the Products page now has Copy product link. It opens a page for that product alone - photo, brand, name, price, description and Add to cart - so a link in an Instagram Story, an SMS or a Google Business post previews the product itself rather than your business banner, which is what a link to the whole shop could only ever show. Tapping a featured product on your booking page opens the same page instead of the shop grid. The action appears only where a client could actually open the product, so a link you copy always works: it is hidden when your shop is off, the product is not available online, it is archived, or you track its stock and it has run out.
Add products to any appointment before the client arrives - stock is secured the moment they're added - and let clients add products while they book online, paid at the appointment by default, or in full when booking if you prefer.
Adding a product to a sale or an appointment checkout now matches SKU and barcode the same way the Products list always has. Click Add item → Product, click the search box, and scan or type the code - a USB or Bluetooth scanner that types like a keyboard finds the product. The same search works when you change a line, on a supplier order, and in the command palette.
Clients can enter a promo code in the shop cart, and every promo code now says what it discounts. Each code has an Applies to setting - Services, Products, or Services and products - and that decides the ITEMS it can discount, not where it is typed: a products code works in the shop and on a mixed appointment bill, and a services code discounts the services on that same bill but cannot be used in the shop. A code is only refused when the order in front of it holds nothing it can discount, and the message says so honestly. Membership benefits come off first and the code applies to what is left, so a percentage never discounts an item the plan already covered. The cart shows the whole calculation - subtotal, membership benefit, discount, total - and that total is what the checkout charges, with any processing fee worked out on it and returned by a full refund. Cancelling an unpaid order or fully refunding a paid one gives the code back, including its max-uses slot. Picking a promo code from the staff discount list now runs exactly the same checks as typing it. Your existing codes are set to Services, which is what they meant when they were created - open one and choose Products or Services and products to widen it.
Importing products from a spreadsheet could read a price like 1,195.00 as 1 - it stopped at the separator, and because 1 is a valid price the row imported with no warning. Unit price and purchase cost now accept the same formats the service import always has: 1195, 1,195.00 and 1.195,00 all read correctly, currency symbols are ignored, and a value that genuinely cannot be read is flagged on the Validation errors tab instead of being imported wrong.
Memberships
A membership benefit can cover products as well as services - the take-home serum included every month, or a standing discount on all your retail. On the plan, set Applies to for each benefit: Services and bundles, or Products, then pick the products or turn on All products. A benefit covers one or the other, never both, so its per-cycle allowance is always one kind of thing - mix them by adding more than one benefit. The discount applies per item, and a benefit with a limit covers that many items each cycle: beyond it the extras are simply charged in full rather than the sale being refused. It applies automatically wherever the client buys - at appointment checkout, on a walk-in sale with no appointment, and in your online shop, where signed-in members see their price on the product card before they order. An order a membership covers in full has nothing to pay, so it completes with no payment step; cancelling or refunding an order gives back both the stock and the client's included item. Your existing plans are untouched: a benefit that covers all services still means all services, and never touches retail.
When a membership is set to end at the end of the billing period (or at the end of an instalment term), you can reverse that from the member page with Undo cancellation - renewals continue and the client keeps their benefits. If you meant to end it sooner, Cancel now ends the membership immediately instead of waiting for the scheduled date. You no longer need to open Stripe to clear a pending cancellation.
Settings
- EnhancedLight or dark now follows you to every device
Your choice of Light, Dark or System is saved to your profile instead of to one browser, so the dashboard looks the way you left it whether you sign in at the front desk, on your laptop or on your phone. It joins your style palette, reading font, text size, density and motion, which already followed you. System still means "follow this device's own setting", so a machine set to dark in the evening keeps doing its own thing. On a brand new device you may see that device's appearance for a moment on the very first sign-in, before your saved choice arrives.
If you run one or more EFTPOS machines alongside Bella, name them at Settings → Card terminals and every in-person card payment says which machine took it. With one or two named terminals each machine is its own row in the payment picker; from three, Card (Manual) asks which machine - at checkout, deposits, client credit top-ups and gift card sells. The Sales summary report gains a Card terminal takings card showing what each machine took, refunded and netted, counted on the day the money actually moved so it balances against each terminal's own settlement, and the sales CSV carries Card terminal and Terminal amount columns. Recording only - payments stay Card (Manual), processed on your own machine, and the client's receipt never shows the name.
Settings → Team permissions gains Sales → Edit prices at checkout. It starts on for every role, so nothing changes until you turn it off. Turn it off for a role and their price fields become read-only everywhere a price is set - creating an appointment, editing one, and at checkout - showing the catalogue price for the service (pricing tier, variant and bundle pricing included) or the product, and the Custom button that adds an ad-hoc charge is hidden, because there is no catalogue price to hold such a line to. They can still take payment, apply a package or membership, redeem a gift card, and change the headcount on a shared-space booking. Applying a discount stays a separate permission, so a role can be allowed to discount for a reason you have approved without being able to retype the price itself. The lock is enforced on our servers, not just in the screen, so it holds however the change is attempted.
Paste your website in Settings → Business settings (or in setup) and Bella can fill the About on your booking page from it. Apply a short line detected from the site, or Generate with AI to draft a longer intro from the same scan - you edit it before anything is saved. If you have more than one location, each has its own About.
Your subscription
- EnhancedProfessional now covers every location, and you add one yourself
Opening a second site used to mean emailing us to be moved onto a separate Multi-Location plan. Professional now covers as many locations as you need, at the same rate per location, and the count is yours to change: open Settings → Billing and use the + and - control under Locations on your plan: adding a location charges the prorated difference straight away, removing one credits your next invoice. If you already run more than one site, checkout asks how many you are signing up for. Your SMS allowance still scales with the number of locations. Nobody pays a different price, and every business already running multiple locations keeps exactly what they had.
- EnhancedEvery change to your subscription confirms the price first
Upgrading a plan, changing how many locations you are billed for, arming SMS auto top-up, and starting or stopping Messages Plus now all open the same confirmation before any money moves. It says what changes, what you will pay, when the payment happens, and takes a promotion code wherever one can apply. Nothing about your subscription changes straight from a button any more. Ending a plan and changing your mind about it both happen in Bella too, so resuming is one click rather than a support ticket, and while a plan is due to end Bella says so on every screen instead of only on the billing page an owner has to go looking for.
- EnhancedChoosing a plan now checks the features you actually use
Plan changes used to count only team members and locations, so it was possible to move to a plan that quietly switched off something you were relying on. Bella now refuses a change that would strand something a client is holding - an unspent gift card, a live membership, a package with sessions left, account credit or loyalty points - and warns you by name when a change would switch off your own tools such as Forms, Reviews, Treatment plans, Add-ons or API access, so the consequence is in front of you before you choose.
Messaging
The Review & book step now carries a short line telling your client that booking means they will get appointment confirmations and reminders by text or email, plus an optional, unticked box for offers and promotions. Nothing is ever pre-ticked, so a client only receives marketing if they actively choose it, and they can change it any time from their profile. In the United States and Canada the line also carries the wording carriers require. This is also the screenshot to use as your opt-in proof when you verify your business for a toll-free number.
Verifying a business in the United States or Canada now spells out exactly what the carrier wants from your opt-in screenshot - full consent wording, your business name, and every box unticked - and warns you if your description mentions promotions your screenshot does not cover. If a submission comes back rejected, Settings → Messaging lists the exact reasons and what to correct, and your messages keep sending from a shared number while you fix it.
Bella AI
Attach a screenshot, photo or PDF to the Bella AI panel - by the attach menu, drag and drop, or pasting one you have copied - and the assistant now actually looks at it instead of answering from the text alone. Send one in the support chat while you are signed in to Bella and you get an answer about that screenshot too. When a file is a type or size it cannot open, or it cannot be read on that channel, it says so rather than guessing.
Try these features
Start your free trial today. No credit card required.
Australian-owned business. Sydney-based team, with responsive support across multiple timezones.