Skip to content
Salisbury Bookkeeping logo
med-spas9 min read

How Med Spas Track Injectable Inventory in QuickBooks (the Right Way)

Most med spas track $40k–$120k of Botox, filler, and weight-loss vials on a spreadsheet that nobody trusts. Here's how to wire it into QuickBooks so you finally see real margin per service.

Cory Salisbury
Cory Salisbury
Founder & Fractional CFO • Salisbury Bookkeeping

How Med Spas Track Injectable Inventory in QuickBooks (the Right Way)

If you walk into ten med spas and ask the owner what's on their Botox shelf right now, eight of them will guess. Two will check Mindbody. Zero will check QuickBooks.

That's the problem.

A typical $1M med spa carries $40,000 to $120,000 of injectable product — Botox, Juvederm, Restylane, Voluma, Sculptra, Radiesse, semaglutide, IV bags, lash adhesive, the whole list. It's perishable. It's high-cost. It walks out the back door as owner draws and friends-and-family comps. And in most QuickBooks files, all of it is buried in a single line called "Supplies — $48,217."

You can't run a med spa on "Supplies — $48,217." You need to know the per-unit cost of every injectable, the gross margin on every service, and the dollar value sitting on your shelf right now.

This post walks through how to wire injectable inventory into QuickBooks Online the right way. Not the spreadsheet-on-the-side way. Not the "we'll figure it out at year-end" way. The right way — so by month two you can answer the question every owner should be able to answer Monday morning: **what's my real margin on Botox?**

The four mistakes that kill margin reporting

Before we build, here's what goes wrong.

Mistake 1: lumping all product under "Supplies." No injectable cost detail. No way to see Botox margin. No way to spot over-injection or theft. The IRS doesn't care, but you should.

Mistake 2: treating distributor invoices as expenses. When the Allergan bill arrives, most owners book it to "Botox Expense" and call it a day. That's wrong. You haven't used the Botox yet. It's an asset (inventory) until the service happens. Booking it as expense on day one inflates expense in the buying month and understates expense in the using month. Your margin numbers swing wildly.

Mistake 3: not tracking expiration. Restylane has roughly an 18-month shelf life from manufacture. If you ordered $4,200 of Restylane Lyft in March 2025 and it's still on your shelf in February 2026, that's not inventory anymore — that's trash. If you don't write it off, your balance sheet lies.

Mistake 4: burying owner-use in COGS. Owner-injectors love to inject themselves "on the house" and call it R&D. The IRS calls it a personal draw. Your CPA calls it the reason your effective tax rate is wrong. We'll fix this below.

How to set it up in QBO — step by step

Here's the build. Plan on 90 minutes one Saturday. Faster if you have a recent distributor invoice handy.

Step 1: turn on inventory tracking

QBO doesn't track inventory by default in lower-tier plans. You need QBO Plus or QBO Advanced. If you're on Simple Start or Essentials, you'll need to upgrade. Plus is $90/mo at standard pricing — worth every penny for a med spa.

Once on Plus: **Account Settings → Sales → Products and services → toggle "Track inventory quantity on hand" ON.**

Step 2: build the chart of accounts

Add (or confirm) these accounts. Skip the ones you already have.

Asset accounts:

  • 1240 — Inventory — Injectables (Other Current Asset)
  • 1241 — Inventory — Skincare Retail (Other Current Asset)
  • 1242 — Inventory — IV Bags & Supplies (Other Current Asset)

Income accounts:

  • 4010 — Revenue — Botox
  • 4020 — Revenue — Filler
  • 4030 — Revenue — Weight Loss
  • 4040 — Revenue — Skincare Retail
  • 4050 — Revenue — Facials
  • 4060 — Revenue — IV Therapy
  • 4070 — Revenue — Lasers / Body
  • 4080 — Revenue — Memberships
  • 4090 — Revenue — Other

COGS accounts (this is the magic):

  • 5010 — COGS — Botox
  • 5020 — COGS — Filler
  • 5030 — COGS — Weight Loss
  • 5040 — COGS — Skincare Retail
  • 5050 — COGS — Facial Supplies
  • 5060 — COGS — IV Bags
  • 5070 — COGS — Laser Consumables

Special accounts (the discipline accounts):

  • 5910 — Inventory Shrinkage — Expired
  • 5920 — Inventory Shrinkage — Damaged / Lost
  • 6310 — Owner Use — Injectables (operating expense — see step 6)
  • 6320 — Friends & Family Comp — Marketing
Free download: the full SpaCFO Med Spa Chart of Accounts template, including
a .iif file you can import directly into QBO with all of the above pre-built,
is available on the med spa landing page. Skip the typing.

Step 3: build the inventory items

Go to Sales → Products and services → New → Inventory.

For each injectable, create one item. The naming convention matters — be specific so you don't end up with three "Botox" items.

| Item name | Unit | Cost | Income account | Inv. asset account | |---|---|---|---|---| | Botox — per unit | unit | $4.20 (varies) | Revenue — Botox | Inventory — Injectables | | Dysport — per unit | unit | $3.80 | Revenue — Botox | Inventory — Injectables | | Juvederm Voluma — 1mL syringe | syringe | $325 | Revenue — Filler | Inventory — Injectables | | Juvederm Volbella — 1mL syringe | syringe | $215 | Revenue — Filler | Inventory — Injectables | | Restylane Lyft — 1mL | syringe | $245 | Revenue — Filler | Inventory — Injectables | | Sculptra — vial | vial | $385 | Revenue — Filler | Inventory — Injectables | | Semaglutide — per mg | mg | $9.50 | Revenue — Weight Loss | Inventory — Injectables | | Tirzepatide — per mg | mg | $14.00 | Revenue — Weight Loss | Inventory — Injectables |

The cost is your per-unit cost, calculated as: distributor invoice ÷ total units received. So if Allergan sends a $4,200 Botox shipment with 1,000 units, your per-unit cost is $4.20.

Keep updating cost as you re-order — QBO uses first-in-first-out (FIFO) by default, which is correct for our use case.

Step 4: receive invoices against inventory items

This is where most med spas slip. When a distributor bill arrives, don't book it to "Botox Expense." Do create a Bill in QBO and add the inventory item line by line.

Allergan bill example:

``` Bill from Allergan, Inc. Date: 2026-03-12

  • Botox — per unit 1,000 units @ $4.20 = $4,200.00
  • Juvederm Voluma 12 syringes @ $325 = $3,900.00
  • Juvederm Volbella 8 syringes @ $215 = $1,720.00

Total: $9,820.00 ```

Hit Save. Inventory automatically increases by the quantities. No COGS hits yet — that happens when you sell. Pay the bill normally when the time comes; payment just clears the A/P, not inventory.

Step 5: map services in your POS to consume inventory

This is the trickiest part because it depends on your POS.

In Mindbody / Boulevard / Vagaro: each service gets a "kit" or "consumed products" attachment. When you sell "Botox 30u," the system deducts 30 units of your Botox-per-unit item from inventory. You set this up once per service.

Sync to QBO: depending on your sync tool (native Mindbody-QBO, Bookkeep, Synder, Greenhouse), you have two options:

  1. Daily summary journal entry (recommended). Sync pushes a single end-of-day

JE: debit Cash, credit Revenue (by category), debit COGS (by category), credit Inventory. Clean. One line per category. Bank reconciles to merchant deposits.

  1. Per-transaction sync (avoid). Every Mindbody sale creates an individual

QBO sales receipt. Your books explode to thousands of lines per month. Don't do this unless your CPA insists.

If your sync tool can't handle inventory consumption (some don't), you have a fallback: a monthly inventory journal entry based on a physical count. Cory Salisbury writes that JE for clients on Growth tier ($750/mo).

Step 6: handle owner use, comps, and expirations

Now the discipline part. These are three accounts that exist only because med spa books are unique.

Owner-injected vials (yourself or co-owner):

``` Debit: Owner Use — Injectables ($X cost) Credit: Inventory — Injectables ($X cost) ```

Do not credit Revenue. The owner did not buy from the business. The business gave the owner inventory at cost. That's a draw. Track the dollar value monthly so your tax preparer knows.

Friends-and-family comp ("you injected your sister for free"):

``` Debit: Friends & Family Comp — Marketing ($X cost) Credit: Inventory — Injectables ($X cost) ```

This is a business expense — within reason — because comps drive referrals. Cap it at 1–2% of revenue. Anything beyond that, the IRS calls a draw.

Expired Botox or filler:

``` Debit: Inventory Shrinkage — Expired ($X cost) Credit: Inventory — Injectables ($X cost) ```

This is fully deductible as an operating expense. The reason we keep it separate from COGS: shrinkage is a signal. If you're writing off $400/mo of expired filler, you're over-ordering. If you're at $2,000/mo, you have an inventory management problem worth fixing.

Time for an honest gut check: if reading this is making your shoulders tense,
it's because most med spas don't do any of this. You're not alone. We do this
for you on the Growth tier. $750/mo flat. Worth a 30-minute
conversation.

Step 7: count weekly. Reconcile monthly.

The whole system breaks if your physical shelf doesn't match QBO. Two cadences:

  • Weekly count of fast-movers (Botox, Voluma, semaglutide). 10 minutes.
  • Monthly full count of everything. 45 minutes if it's organized.
  • Reconcile QBO to count. If shelf says 482 units of Botox and QBO says 510,

you have 28 units of unbooked owner-use, comps, theft, or breakage. Investigate. Adjust with a journal entry.

The discrepancy is the data. If you find $0 of monthly variance, your count is wrong, not perfect.

What a clean Botox margin report looks like

After 60 days of doing it right, your monthly P&L answers questions you couldn't answer before. A real example from a $1.4M client (anonymized):

``` Botox revenue $26,140 COGS — Botox $5,127 ──────── Gross profit $21,013 Gross margin 80.4%

Filler revenue $15,580 COGS — Filler $4,517 ──────── Gross profit $11,063 Gross margin 71.0%

Weight Loss revenue $9,820 COGS — Weight Loss $2,255 ──────── Gross profit $7,565 Gross margin 77.0% ```

Now you can make decisions. Botox at 80% is healthy. Filler at 71% is industry average. Weight loss at 77% is fine but the question becomes: are you charging enough for tirzepatide vs semaglutide? That's a CFO conversation. That's the point.

What to do this week

  1. Confirm you're on QBO Plus or Advanced. Upgrade if not.
  2. Pull your last Allergan / Galderma / Merz invoice and your last 30 days of

Mindbody sales.

  1. Build five inventory items: Botox, your top filler, your top weight-loss drug,

one retail SKU, one IV bag. Don't try to do all 50 at once.

  1. Receive your most recent distributor bill against those items. Confirm

inventory ticked up.

  1. Download the full SpaCFO Med Spa Chart of Accounts so you have

the COGS scaffolding pre-built.

Or — if any of the above made you want to throw your laptop — that's what we do. We do bookkeeping for med spas only. We wire this up in your first 30 days.

Related reading


Want SpaCFO to handle this for you?

We do bookkeeping for med spas only. Owner-operated, $300k–$3M, single location. If that's you, book a free 30-minute call — we'll look at your last P&L and tell you what we'd fix in the first 30 days.

See SpaCFO med spa bookkeeping →

Frequently Asked Questions

How do I set up Botox inventory in QuickBooks Online?
Create an Inventory item in QBO Products & Services. Name it "Botox — per unit." Set the cost as your per-unit cost (Allergan invoice ÷ total units received). Set the income account to your Botox revenue sub-account and the inventory asset account to "Inventory — Injectables." Every Allergan bill gets received against this item. Every service that uses Botox reduces the inventory and posts to Botox COGS.
Should I track injectables by syringe or by unit?
Track Botox by unit. Track filler by syringe (most fillers come in 1mL or 2mL syringes and are sold as syringes). Track semaglutide by mg or by mL depending on how you bill. The rule is: track in the same unit you sell, not the unit you buy.
How do I handle Botox that expires before it's used?
Write it off to a separate expense account called "Inventory Shrinkage — Expired" or "Spoilage." Do not bury it in COGS. Tracking expirations as a separate line item is what tells you whether you're over-buying or under-pricing.
What about Botox the owner injects on themselves?
Credit Inventory at cost and debit "Owner Use — Injectables" (or "Owner Draw — Inventory" if you're a sole proprietor). Do not record it as revenue. Do not bury it in COGS. The IRS treats this as a personal draw, not a business expense.
How often should I count my injectable shelf?
Weekly for fast movers (Botox, Voluma, semaglutide). Monthly for slow movers (less-used filler types, retail skincare). Quarterly for everything. The count adjusts inventory in QBO with a journal entry: Inventory Adjustment expense ↔ Inventory asset.
Ready to see your numbers?

Book a free 30-minute call.

You walk away with a list of leaks in your books. Free. No pitch.

Book a free call