Every line on a Lupa invoice traces back to one of three things you've configured in advance: a service (professional work: a consultation, a vaccination, a dental scale and polish), a product (a physical item with stock, like a vial of Metacam or a bag of food), or a bundle (a pre-packaged combination of services and products, sold as one). Getting these set up well means faster invoicing, consistent pricing across your team, and clean revenue reports.
π‘ In short: Configure services at Settings β Services, manage products in Inventory, and build bundles at Settings β Bundles. All three appear in the same search when staff add items to an invoice.
Before You Begin
π Permissions required. Editing services needs Update Standalone Store Services or Update Derived Store Services (depending on whether the service is inherited from a reference list). Editing bundles needs Appointments Settings. Product management is gated by Inventory. Permissions are granted under Settings β Permissions; ask your Practice Manager if you can't see these tabs.
For multi-site groups, services and bundles can also be configured at Admin β Settings. Items configured at company level are inherited by every store and stay in sync when the reference is edited.
Services
A service is professional work your practice charges for: anything that doesn't have a stock count behind it. Consultations, surgeries, dispensing fees, lab fees, microchip implants, and administration fees are all services.
Where to find them
Store level: Settings β Services (the Billing group in the sidebar).
Company level: Admin β Settings β Services. The list shows every service on a single page, with columns for Name, Category, Price, VAT percentage, and Tags. By default archived services are hidden: toggle the Archived filter chip at the top of the table to show them.
πΈ Screenshot to add during sanity check: the Settings β Services list, with the search bar, Archived is False filter chip, and + Add button visible, showing a typical practice catalogue (Consultation, Castration, Vaccination, etc.).
Creating a service
Click + Add in the top-right of the services list.
Fill in the form fields (see the field reference below).
Click Save.
πΈ Screenshot to add during sanity check: the Create Service dialog with realistic data: e.g. Name "General Consultation - 20 min", Category "Consultation", Price (incl. VAT) Β£45.60, VAT 20%, Is Sellable on.
Service fields
Field | What it does | Required |
Name | What the service is called everywhere in Lupa: invoice search, invoice line items, reports. Be specific: "General Consultation - 20 min" reads better than "Consultation" once your catalogue grows. | Yes |
Category | Groups the service for reporting and filtering: e.g. Consultation, Examination, Procedure, Treatment, Vaccination. The dropdown is the same set used everywhere services are categorised. | Yes |
Species | Multi-select. Controls which patients the service shows up for at the point of sale. A service set to "Dog" only doesn't appear when you're invoicing for a cat. Leave empty to make the service available for all species. | No |
Price (incl. VAT) | The final price that appears on the invoice line. Lupa stores price as VAT-inclusive everywhere. | Yes |
VAT | The VAT percentage applied to this service. Some veterinary services are zero-rated - check with your accountant which apply to your practice. | Yes |
Is Sellable | Switch off for services that exist only as components of bundles or visit types so they won't appear in invoice search. | Yes |
Is External | Toggle on for services billed to you by a third-party (e.g. external lab work). Reveals Procurement Cost, Mark Up, and External Reference fields, plus an optional Linked Diagnostic Test Type. | No |
Analysis Category / Analysis Code | Optional reporting codes used by some accounting integrations. Leave blank if you don't use one. | No |
Tags | Free-form labels that show up in the services list and can be filtered on (e.g. "Emergency", "Out-of-hours", "Specialist"). | No |
Linked Services | Other services that are automatically added alongside this one when it's invoiced - useful for grouping a procedure fee with its consumables. See Linked services below. | No |
Editing and archiving
Click any service row to open its edit dialog, or use the three-dot menu for inline actions. The menu includes Edit and Archive / Unarchive.
β οΈ Price changes only affect future invoices. Updating a service's price doesn't change invoices that already have it on them - they keep the price that was set at the time the line was added.
Archive (don't delete) services you no longer offer. Archiving hides the service from invoice search but preserves it on every historical invoice and report. Use the Archived filter to find archived services if you need to bring one back.
Products
Products are physical items with stock, suppliers, batches, and selling variations. Their full lifecycle (creating products, recording stock movements, batch tracking, and supplier orders) is covered in . For billing purposes, the things to know are:
Concept | How it affects billing |
Selling variations | One stocked product can be sold in multiple ways: a 50 ml bottle of injectable might have a 1 ml in-clinic injection variation and a 10 ml take-home bottle variation, each with its own price, VAT, and linked services. |
Linked services on a variation | Each variation can carry its own set of services that are auto-added when the variation is invoiced typically a dispensing fee, an injection administration fee, or a service charge. |
Procurement cost and markup | Variations track what you pay your supplier and the margin you apply. The selling price is computed from procurement cost + markup + VAT. |
Sellable units on invoices | For products that have a subunit (e.g. Box β Tablet), you can restrict which unit staff are allowed to bill in. Open the product in Inventory, find the Sellable units on invoices field, and choose Both {unit} and {subunit}, Only {unit}, or Only {subunit}. When a restriction is set, the unit switcher on the invoice line only shows the permitted option β preventing staff from accidentally billing a tablet at box pricing or vice versa. Products without a subunit are unaffected, and products added as part of a bundle are also unaffected by this setting. |
Stock deduction | Stock is deducted only when an invoice is finalised, not when the product is added to a draft. See . |
Bundles
A bundle is a named package of services, product variations, and (optionally) other bundles, sold as one. They save time when you charge the same combination of items often, such as puppy first visits, dental clean packages, pre-op work-ups, neutering days.
Where to find them
Store level: Settings β Bundles.
Company level: Admin β Settings β Bundles. The list shows every bundle with Name, Price, Is Child Bundle (whether it's nested inside another bundle), Nested Bundles (whether it contains other bundles), and Has Reference (whether it's inherited from a company-level bundle).
πΈ Screenshot to add during sanity check: the Settings β Bundles list with example bundles ("Booster - Cat", "Kitten 1st Vaccination", "Op - Castrate Dog"), showing the Name, Price, Is Child Bundle, Nested Bundles, and Has Reference columns.
Creating a bundle
Click + Add in the top-right of the bundles list.
Give the bundle a Title β this is what staff will search for and what appears on the invoice.
Set Species if the bundle should only show up for specific patients.
Decide whether to Show items in invoices (toggle on) or merge them into a single bundle line (toggle off). See How bundles appear on invoices below.
If you want every item in this bundle to be read-only on invoices, turn on Is Locked. See Locked bundles below.
Use + Add Item to search for and add components β services, product variations, or other bundles. For each component you can set the Unit Price, Quantity, Discount, and the Amount (incl. VAT) updates live. Use the Default checkbox to control whether an item starts pre-selected when staff add the bundle to an invoice. Use the Locked toggle to make an individual item read-only on invoices. Drag items into the order you want β the order here is the order they appear on the invoice.
The Billing Summary at the bottom shows the bundle total, computed from the components.
Click Create Bundle.
πΈ Screenshot to add during sanity check: the Create Bundle dialog with Title "Puppy First Visit", Show items in invoices on, Is Sellable on, and three or four items added (General Consultation, Primary Vaccination, Microchip Implant) with quantities and prices visible in the items table.
Bundle fields
Field | What it does | Required |
Title | Bundle name. Shown in invoice search and on the invoice itself. | Yes |
Species | Limits the bundle to specific patient species. | No |
Show items in invoices | When on, every component appears as its own line under the bundle name on the invoice. When off, only the bundle line shows and components are merged into a single price. | Yes |
Is Sellable | Switch off for bundles that only exist as components of other bundles or visit types. | Yes |
Is Locked | When on, every item in this bundle is read-only on invoices: quantity, discount and price can't be edited, and no new items can be added to the bundle on an invoice. Individual item lock settings are preserved β unlocking the bundle restores them. Nested bundle lines inherit their lock state from the child bundle's own editor. | No |
Items | The services, product variations, and child bundles that make up the package, with per-component quantity, price and VAT. Each item has two additional controls: Default (whether the item starts pre-selected when staff add the bundle to an invoice) and Locked (whether the item's quantity, discount and price are read-only on invoices). Drag items to reorder them β the order here is the order they appear on the invoice. | Yes (at least one) |
Clinical Notes | Free-text notes, displayed when staff add the bundle on an appointment. Useful for protocol reminders ("check for breed-specific considerations before anaesthesia"). Click Clinical notes to expand the field; click Hide notes to collapse it. | No |
π‘ Discounted bundle pricing. Set a component's price within the bundle lower than its standalone price to give a discount when the bundle is sold. The component still reports under its own revenue category, so a Puppy First Visit at Β£85 still credits the consultation, vaccination, and microchip categories proportionally on revenue reports.
Editing and duplicating
The three-dot menu on any bundle row offers Edit and Duplicate. Duplicate is the fastest way to create a similar bundle (e.g. cat vs dog versions of the same package): it copies all the fields, you rename it, and adjust species or items.
β οΈ Bundle changes don't reflow into existing invoices. Updating a bundle's components or price only affects future uses. Invoices already created with the bundle keep their original line items at their original prices.
For multi-site groups, bundles inherited from a company-level reference (the Has Reference column shows β) can't be edited at store level - change the company bundle and the change propagates down.
How services, products, and bundles appear on invoices
Every billable item (service, product variation, or bundle) shares the same point-of-sale: when a vet, nurse or receptionist edits an invoice and clicks + Add Item, the search returns matches across all three types, scoped to the patient's species.
Linked services on products
When a product variation has linked services (e.g. an Injection Administration Fee on the in-clinic injection variation), Lupa adds those services as nested rows beneath the product on the invoice. The team sees the full breakdown; the client sees the items listed clearly. You don't need to remember to add the dispensing or injection fee - it's attached to the variation.
Bundles on the invoice
Bundles render based on the Show items in invoices toggle:
Toggle state | How the invoice line looks |
Show items in invoices: on | The bundle name appears as a parent row, with each component (services, products, child bundles) listed as nested rows beneath it. Each component shows its own quantity and price. This is the right choice when clients should see what's included. |
Show items in invoices: off | Only the bundle name appears, with the total bundle price. Components are still recorded in the database (so revenue reports break down by category and stock still deducts), but they're hidden from the printed invoice. Use sparingly β clients sometimes want to see everything they're being charged for. |
Locked bundles
If a bundle has Is Locked turned on, all of its lines on the invoice are read-only: staff can't change the quantity, discount or price of any item, and they can't add new items to the bundle. A lock indicator appears on the bundle row and on each of its lines.
Individual items can also be locked without locking the whole bundle β a locked item shows the same read-only behaviour on its own line.
Nested bundle lines inherit their lock state from the child bundle's own settings; you configure those in the child bundle's editor, not the parent's.
Stock and finalisation
Stock is deducted from product variations only when the invoice is finalised, regardless of whether the product was added directly or as part of a bundle. Until then, the items are reserved on a draft invoice but the stock pool is unchanged.
Linking services to appointment types
Appointment types (configured at Settings β Appointment Types) work like bundles for the calendar β when staff create an appointment of a given type, the linked services and products auto-populate the invoice. The picker inside the appointment type editor is the same one used for bundles. This is the right place to configure the standard set of items charged for each appointment kind: consultations, vaccinations, surgeries. See for setting up appointment types.
Settings reference
Setting | Description | Default |
Settings β Services | Practice service catalogue β every billable piece of professional work. | Seeded during onboarding |
Settings β Bundles | Pre-packaged combinations of services and products. | None - create your own |
Inventory | Products with stock, suppliers, and selling variations. | Seeded during onboarding or migration |
Admin β Settings β Services / Bundles | Company-level reference catalogues that cascade to every store. | Empty unless you operate multi-site |
Settings β Appointment Types | The set of items auto-added when staff create an appointment of a given type. | Seeded during onboarding |
Tips
β Best practices from practices running Lupa:
Be specific with names. "General Consultation - 20 min" reads better than "Consultation" once your team is searching across 100+ services.
Set species on everything. It cuts the invoice search down to relevant items and prevents accidentally billing a dog-only service for a cat.
Use bundles for the routine stuff. Puppy first visits, dental days, pre-op work-ups, anything you sell the same way every time. Staff search once instead of five times.
Configure linked services on every product variation that needs them. Dispensing fees, injection administration fees, and admin charges should auto-attach and not come from memory.
Keep bundles simple. It's tempting to nest bundles inside bundles inside bundles. The simpler the structure, the easier it is for new staff to understand and the cleaner the invoice looks.
Archive instead of deleting. Archived services and bundles are hidden from search but preserved on history. Deletion isn't recoverable.
Review prices annually. Costs drift; menus shouldn't. Block out an hour each year to walk through services and bundles.
Troubleshooting
Problem | Solution |
A service or bundle isn't appearing in invoice search | Check it's not archived (toggle the Archived filter in Settings β Services or Settings β Bundles), check Is Sellable is on, and check Species matches the patient. |
Wrong price on an invoice line | Check the catalogue price in Settings β Services. If it looks right, check whether a price factor is applied to the line β see . Editing an invoice line's price requires the Edit Invoice Line Final Price permission. |
Bundle component prices don't sum to the bundle total | That's by design: bundles can carry component-level discounts. Open the bundle and check each component's price. |
Linked service isn't auto-adding when the product is invoiced | Linked services are configured per selling variation, not per product. Edit the product, open the right variation, and check its Linked Services section. |
Bundles tab isn't visible in Settings | You need the Appointments Settings permission. Ask your Practice Manager to grant it under Settings β Permissions. |
Inherited bundle won't let me edit it | Bundles with Has Reference: β are inherited from the company-level catalogue and can only be edited from Admin β Settings β Bundles. Editing the company bundle propagates to every store. |
Staff can't edit a bundle's items on an invoice | The bundle may have Is Locked turned on. Open the bundle in Settings β Bundles, check the Is Locked switch, and turn it off if staff need to adjust quantities or prices on invoices. If only specific lines are locked, check the Locked toggle on each item in the bundle editor. |
A bundle item is greyed out and can't be edited on an invoice | That item has its Locked toggle on in the bundle editor, or the whole bundle is locked. Open the bundle in Settings β Bundles and adjust the item's Locked toggle, or turn off Is Locked at the bundle level. |
VAT looks wrong on an item | Each service, variation and bundle stores its own VAT percentage. Edit the catalogue item directly. Some veterinary services are zero-rated - confirm with your accountant which apply. |
Staff can't switch between units (e.g. Box and Tablet) on an invoice line | The product may have a Sellable units on invoices restriction set. Open the product in Inventory and check the Sellable units on invoices field β if it's set to only one unit, only that unit will appear on the invoice. Update the setting if both units should be available. |
Frequently Asked Questions
What's the difference between a service and a product?
What's the difference between a service and a product?
A service is professional work: consultations, surgeries, dispensing fees. It has a price, a category, and a VAT rate, but no stock count. A product is a physical item: medications, vaccines, food. They have stock, batches, suppliers, and one or more selling variations. Both appear in the same invoice search alongside bundles.
Do I have to use bundles, or can I just add items individually?
Do I have to use bundles, or can I just add items individually?
Bundles are optional. Staff can add services and products line-by-line on every invoice. Bundles save time when you regularly sell the same combination - one search instead of five - and they prevent missed components.
Can a bundle contain another bundle?
Can a bundle contain another bundle?
Yes. Bundle items can be services, product variations, or other bundles. Nesting is supported, but keep it shallow as three layers deep gets confusing fast.
Can I duplicate a service?
Can I duplicate a service?
Not directly. The fastest equivalent for services is to copy the values manually into a new entry. Bundles, however, do have a Duplicate action in their three-dot menu.
Where do I configure VAT rates?
Where do I configure VAT rates?
VAT is set per service, per product selling variation, and on each bundle. There's no shared VAT setting. See for company-level tax configuration.
Do archived services still appear on past invoices?
Do archived services still appear on past invoices?
Yes. Archiving removes a service from invoice search but every historical invoice that used it keeps its line item, price, and VAT exactly as it was at the time. Revenue reports for past periods still include archived items.
Can I change pricing for specific clients (e.g. corporate, charity)?
Can I change pricing for specific clients (e.g. corporate, charity)?
Not by editing the service catalogue as that would change pricing for everyone. Use price factors instead. See .
