Platform CarinaSense™ ERPBeta States Pricing Support
Sign in Start free
Available today · beta

Your Metrc record is half your books.

Every ERP (enterprise resource planning) starts with an invoice somebody typed. CarinaOS starts with the plant — because it already holds your compliance record. The transfer you filed becomes the invoice. The package you shipped remembers the harvest that grew it. The cost follows the plant all the way to the sale.

30 days free, no card. Sign up, connect Metrc and the ERP is on from day one — $350/mo after, and it stops on its own if you do nothing. Live today, in beta — we are fine-tuning it with operators on real books; general availability Q4 2026
Cycle 24-03 · Flower Room 2 · cost per cycle
Nutrients & media$4,182.40
from 11 vendor billspurchase-derived
Labor$9,640.00
412 hrs tagged to this batchtimesheets
Overhead allocation$3,150.00
Total cost of cycle$16,972.40
Harvest weight from Metrc18,412 g
Cost per gram$0.92
Meter cross-check variance+1.8%
Illustrative figures. Nobody typed the harvest weight — it is the number you already filed with the state.
At a glance
In the product

This is the module, not a mock-up.

Screens from a running facility. Thirteen tabs — purchasing, overheads, inventory, sales and AR, costing, labor, transfers, documents, history, QuickBooks, reports and setup — sitting on the same record as your compliance data.

Everything, over time

See all of it on one chart. Then ask it questions.

Invoiced, collected, billed, paid out, net cash, labor, inputs, stock value, packaged pounds, wet weight, plants, cost per pound, cost per gram. Tick any of them and they land on the same timeline — each unit on its own axis, fitted to what you selected.

The gap between two lines is usually the answer. Invoiced against collected is your receivable, drawn. Billed against paid out is what you owe. Inputs against packaged pounds is your cost per pound before anybody calculates it.

And you can measure it by cycle — by the run, not the calendar month, because a crop does not respect the first of the month. Daily, monthly, year to date and any range are there too. The cycle is the one no accounting package can offer, because none of them know when you flipped.

A period that packaged nothing has no cost per gram. It reads as blank, not as zero — a zero would say you grew it for free and drag every average that follows.

1
Pick your measures. Thirteen of them, grouped by money, cost, production and rates. The chart remembers what you chose.
2
Pick your grain. Daily, monthly, by cycle, year to date, or a range you set. The axes refit to whatever is on screen.
3
Then ask. CarinaSense™ — your AI business analyst — reads the same figures your P&L, your margin by strain, your receivable and the money-versus-physics check are built from, and answers in sentences.
app.carinaos.com — ERP · Overview
CarinaOS ERP Overview: one chart with thirteen selectable measures grouped as Money, Cost, Production and Rates, and grain buttons for Daily, Monthly, Cycle, YTD and Range. Invoiced and Collected are drawn in the same green — solid and dashed — with the gap between them widening across the year, alongside Packaged and Wet weight in purple. Three axes are fitted independently: dollars, pounds and cost per gram.
Everything, over time. Invoiced against collected in one color, solid and dashed — the space between the two lines is the receivable. Packaged pounds sit on their own axis beside it, because a chart that put dollars and pounds on one scale would flatten whichever is smaller.
Your AI business analyst

Ask your books anything.

“Am I profitable, and is that the same as being cash positive?” “Which strain actually makes money?” “Are customers paying slower than they were?” It reads the same numbers you are looking at and answers from those alone.

It knows what a cultivation P&L is. That revenue is lumpy because harvests are, so a month with no crop down is normal rather than a collapse. That profitable and cash positive are different questions. That 280E makes the COGS split a tax position — which it flags and sends to your CPA, because that call is theirs.

It answers from your figures or it says it cannot. A facility with nothing entered is told there is nothing to analyze, rather than given something that sounds right.

app.carinaos.com — ERP · CarinaSense
CarinaSense open on its Finance tab over the ERP Overview chart, asked to explain a single month and reading a year of books to answer, with suggested questions below: what is my cost per pound trending toward, am I profitable and is that the same as being cash positive, which strain actually makes money, and are customers paying slower than they were.
Tap a point, get a paragraph. Clicking a month on the chart asks about that month — not a timestamp inside it — and the answer comes from your own figures or it says it cannot.
Written reports
CarinaSense™

Your analyst explains it.

Every system here can already tell you cost per gram went up. None of them can tell you why, in the sentence you would actually repeat to your partner. CarinaSense™ writes that sentence — the same analyst you ask questions of, now producing the standing reports as well.

The same analyst, asked a standing question. These are not a second AI feature bolted on beside the chat. A report is CarinaSense™ reading the same books, under the same rules, against a question you would otherwise have to remember to ask every month — so the answer arrives without anybody remembering.

The numbers are never the model’s. This is the rule the whole thing is built on, and it is what makes a generated finance narrative safe to forward. Every figure in every report is computed in our own code from your data, then handed to CarinaSense™ as a finished table. Its job is to explain, compare and flag — and re-deriving a number is treated as a defect, not a fallback.

It reads exactly what you can see. A report is assembled through your own login, against the same endpoints the tabs draw from. So it cannot quote a figure you could not open the tab and check for yourself, and it cannot drift from what the screen says.

The figures survive the writing. If the analyst is unreachable, the report still renders — every number, no commentary. The analysis is an addition to the statement, never a dependency of it.

And it is asked for, not fired off. Nothing is generated when you open a tab. You press a button, because a paragraph you did not ask for is one nobody reads.

Executive summary

How the business is doing over the last 90 days — where the money is, which way unit cost is moving, and the two or three things that need a decision. The one you forward.

Cost variance

Why cost per gram moved — split exactly into how much came from spending more and how much from harvesting less. Two different problems with two different answers.

Cycle P&L

One flowering cohort read as a business result, with revenue and cost joined to the batch that grew it.

Monthly close pack

This month against last, plus the list of what still has to be tidied before anyone signs it off.

Reorder & cash-out

What has to be ordered, when, and what it will cost — priced from what you actually paid last time.

Anomaly watch

Duplicate bills, input price spikes, and anything sold below what it cost to grow.

✦ And the chat itself

The sixth is CarinaSense™ open on Finance — the same grounding, the same books, for the questions no standing report anticipates.

Three of them, on a worked example.

Sample figures for a 12,000 sq ft indoor operation running perpetual harvest — but the arithmetic below is the real thing, produced by the same code that runs in the product.

The tables and figures above come from the product’s own calculation code, run on sample data for this page. The written paragraphs are illustrative of the format — what CarinaSense™ writes for you is generated from your own figures at the moment you ask.

The second opinion

Money checked against physics.

Because CarinaOS also reads your flow meter, it can derive the same cost a second, independent way — and the gap between the two is the finding.

Your input cost comes from purchases: opening inventory, plus what you bought, minus what’s left, straight off the vendor bills and the inventory ledger. That is exact, auditable to the invoice, and it reconciles to QuickBooks.

But metered gallons multiplied by the dose recipe in force that day, priced at what you actually paid per pound, gives the same number by a different route.

Two independent derivations. The gap is the finding. A widening variance is a spill, a leak, a miscount, an unbilled delivery, or a feed chart that no longer matches what the room is really being fed.

The operational ERPs don’t own the sensors. The accounting platforms don’t own the grow. This check needs both sides of the meter.

1
Upload your feed chart. Or build the recipe in the editor — ml per gallon of stock, by stage, by day range.
2
Bills set the price. Cost per pound derives from what you actually paid, and stays overridable — the source is always shown.
3
The meter sets the volume. Metered gallons for that room, that day, at that phase.
4
You get a variance, not a guess. Small means your books and your rooms agree. Large means go look.

No meter? The costing still works — purchases are the source of the total either way. The meter adds attribution and the cross-check, not the number itself.

Time clock

Labor is the number everyone estimates. Stop estimating it.

Inputs come off a bill and weight comes off Metrc, but hours are typed in on Friday from memory — so the cost per gram inherits a guess. A PIN pad on a tablet by the door fixes that at the moment the work happens.

app.carinaos.com — Time clock
The CarinaOS time clock on a wall tablet: a large numeric PIN pad with Delete and Enter, the heading Enter your PIN, and a note that four to eight digits says who you are and is not a password. Beside it, On the clock now lists one person currently working.
A PIN, not a password. Most of a crew never signs into anything, and asking a trimmer for a password to record that they turned up is how you end up with no data at all. Four digits says which of the eight people here this is — it opens nothing, and it cannot.

Clocking out writes a costed entry, not a timesheet row. They tap the crop first — cycles still in flower, offered by name rather than typed. Clocking out prices the shift at that person’s rate for that day and puts it on that crop, where it becomes part of its cost per gram. Nothing is re-keyed, and there is no export step to forget.

And general labor is a choice, not a blank. Not every shift is on a crop, so there is a button that says so — which is how an approver tells real overhead from somebody who forgot to tap. Untagged time is still recorded; it just lands as administrative labor, named rather than buried.

Rates are effective-dated, so history stays true. A raise in March does not retroactively rewrite what January cost. The shift is priced at what that person was actually earning on the day they worked it.

Clocked hours are not approved hours. They sit pending until somebody signs them off, and only approved hours reach a cost per gram — otherwise your unit cost would move every time a shift was mistyped.

It refuses to invent a number. A shift left open overnight is a forgotten clock-out, not a sixteen-hour day. It closes, records nothing, and says so — a plausible figure nobody can vouch for is worse than a gap somebody has to fill in.

And the same clock-out reaches payroll. Approved hours go to QuickBooks as time entries, per person per day, carrying the crop and the task — so payroll works out the pay from its own rates and taxes, and no wage figure leaves CarinaOS. A timesheet app can send hours too; it cannot say which crop they were spent on, because it has never seen your grow. Needs QuickBooks Online Essentials or higher; on Simple Start the labor report and the journal do the same job.

Their own phone
The same time clock opened on a personal phone, showing the person's name, the words On the clock since 1:55 PM with 2.4 hours so far, a large Clock out button, and a smaller option for handing the device to somebody else.
Or no PIN at all. Someone signed in on their own phone is already identified, so they get one button. The same page, deciding which it is.
1
A tablet by the door. One shared device, one PIN each, then the crop they are on. It also shows who is clocked in right now, which is the roll-call a shift lead actually wants.
2
A login that only tells the time. A fourth access level — timekeeping only — so giving somebody a login no longer means giving them purchasing, inventory and documents just to press one button.
3
Then it is just labor cost. Approved hours flow into cost per cycle, cost per gram, margin by strain and the 280E split, alongside inputs and overhead.
What’s in it

A full back office, not a costing add-on.

Built as a system of record from the start — versioned, audited at the database, and isolated per facility.

Metrc manifests Synced

Every transfer in and out, with its packages, counterparties and dates. Inbound becomes a vendor bill, outbound becomes a sales invoice — and it won’t let you confuse the two.

Sales & AR

Customers, sales orders, invoices and payments — most of them born from a manifest rather than a keyboard.

Margin by strain

Revenue against real batch cost, resolved to strain, customer, package and room — with the uncosted lines named, not hidden.

Costing

Cost per cycle, per batch and per gram, with overhead carried in and the harvest weight taken from Metrc rather than typed.

Purchasing & receiving

Vendors, items, purchase orders and receiving. Received quantity is derived from the ledger, never a field somebody can overwrite.

Vendor bill capture

Upload a PDF or photograph an invoice; the lines are extracted for you. Confirming a match teaches it, so the second bill from a vendor is one click.

Inventory ledger

Append-only and double-entry. Stock arriving from outside balances against a system location, so the books always net to zero and history can’t be rewritten.

Labor & time clock

A PIN pad on a shared tablet, or one button on their own phone. Clocking out prices the shift at that person’s effective-dated rate and lands it on the batch — so a raise in March doesn’t retroactively rewrite what January cost. See it →

Chart of accounts & P&L

A real general ledger with journals and a derived profit and loss statement, 280E-aware. Not an export — it lives in the platform.

QuickBooks sync Live

Invoices, bills, payments, customers, vendors and items round-trip to QuickBooks Online — posting to real company files today. A connect wizard reads your own chart of accounts, dry-runs first, and refuses to post anything unmapped.

Works on every QuickBooks Online plan, Simple Start included. Pushing approved hours as time entries — so QuickBooks Payroll works out the pay — needs Essentials or higher, because Simple Start has no time tracking. On Simple Start the labor report and the journal cover it.

Role-based access

Four levels — none, timekeeping, operations, full. Your head grower can run purchasing without ever seeing payroll, and a trimmer can clock in without seeing either.

Audited at the database

Every change writes an append-only audit row with the actor, at the database layer — not in application code that can be bypassed.

The chain

Everything the grow consumes, priced to the pound.

One engine between what you spend and what you sold — reconciled against Metrc and QuickBooks, and allocated to the cycle that consumed it. Compliance, sales, accounting and costing are the same events looked at four ways; CarinaOS is the only place they all already live, so it can join them instead of asking you to re-key them.

CarinaOS ERP cost engine Labor, utilities, nutrients and media, purchases and overhead feed a central CarinaOS cost engine, which syncs two-way with Metrc and QuickBooks and produces cost per pound, gross margin and cost of cycle. CARINAOS cost engine Metrc two-way sync QuickBooks two-way sync Labor 824 hrs on this batch Utilities metered, coded per room Nutrients & media from 22 vendor bills Purchases vendor bills, received Overhead rent, allocated in Cost per pound $317.24 / lb Gross margin 81.3% Cost of cycle $33,944.80

Scroll the diagram sideways →

Illustrative figures — 107.0 lb off the cycle, $33,944.80 of cost carried into it.

Versus the cannabis ERPs

Where we actually differ from Canix and Flourish.

Taken from their own published documentation — checked August 2026, and the reporting and AI rows re-checked September 2026 — including the half of it that is table stakes rather than an advantage. It is long because it is specific.

Table stakes — they do this too

Anyone who tells you batch costing is exotic is selling you something. Canix carries labor and material cost through veg → flower → harvest, then applies it proportionally to the child packages by weight. Flourish reports cost at production, run, batch and SKU level. So do we. It is the price of entry in this tier, not a reason to switch.

CapabilityCanix / FlourishCarinaOS
Metrc lifecycle: batch → harvest → package → transferYesYes
Materials and labor attached to a plant batch, carried to the harvestYesYes
Cost per unit, and margin by strain or SKUYesYes
Purchasing, inventory, sales orders and ARYesYes
A QuickBooks Online integrationYesYes
Dashboards, custom reports, exports, and reports emailed on a scheduleYesYes
An MCP server, so you can point ChatGPT or Claude at your own dataYes — bothYes

Where we lead

These come straight out of their documentation rather than ours.

CapabilityCanix / FlourishCarinaOS
Where the ledger lives QuickBooks is the ledger — Flourish debits COGS and credits Inventory Asset in QBO; Canix creates invoices in QBO and imports its chart of accounts Native GL, journals and a derived 280E-aware P&L in the platform. QuickBooks is a sync target, not the book of record
Overhead in the cost Canix’s costing primer scopes it to what you spent “to directly produce your good” — non-cannabis items, cannabis items and labor Overhead allocated into cost per gram, not left out of it
How the numbers arrive Unit cost × a quantity someone enters, labor hours someone applies, and a CSV/Excel COGS uploader for bulk allocation Derived from vendor bills and the inventory ledger, hours tagged at entry, metered gallons as the driver
Who does the financial analysis — and who is answerable for the arithmetic in it You do. Canix’s business intelligence is charts, filters, exports and scheduled email; Flourish’s is pre-built dashboards, with “advanced analytics” and custom dashboards listed under Scale at $3,000/mo. Both publish an MCP server and Flourish adds Snowflake and an in-app chatbot — real, and pointed at operations and support. Either way the model reads your rows and does its own sums, and nothing between it and the answer checks them Six written reports in the product — executive summary, cost variance, cycle P&L, monthly close, reorder outlook, anomaly watch. Every figure is computed in our code and handed over as a finished table: CarinaSense™ explains and flags, and re-deriving a number is treated as a defect. Included in the $100/mo add-on
Money checked against physics — metered gallons × the live dose recipe, priced, against what was actually bought No — neither integration directory lists a single environmental, climate, irrigation or IoT partner Yes — we read the meter

The ledger is the structural one. Both platforms are excellent at getting cultivation data into an accounting system; neither is the accounting system. That is a deliberate architecture, and it means your cost detail goes over the wall and the answer comes back later. The meter check is the one nobody can copy without owning both halves — the operational ERPs don’t read your sensors, and the accounting platforms don’t run your grow.

The analysis one is the same shape. An MCP server is a genuinely good thing to ship and both of them have one — but it hands your ledger to a model and lets it do the arithmetic, which is the one job a language model should never be given on money. We took the other half of that problem: the figures are computed here, in code, and the model is handed a finished table to explain. That is why we can put a written close pack in front of a bookkeeper and why an MCP pipe, on its own, cannot.

What $350 actually buys

Flourish publishes its tiers, which we respect — most of this industry doesn’t. Their entry tier is the same headline number as ours, so it’s worth reading what sits underneath it. Canix is in the table too, with every cell it does not publish marked as exactly that. Flourish figures are from their published pricing page, August 2026.

CarinaOS Full + ERPEverything, one tier Flourish EssentialsNot comparable Flourish LaunchClosest equivalent Canix Cultivation + ERPNot published
Monthly $350 $350 $1,000 Not publisheddemo required · operators report from ~$1,000
Users included Unlimited — ten employees cost the same as one 4 10, then $100/mo each Not published
Revenue band None — we don’t price off your revenue Under $1M $1M – $5M Not published
Multi-state Yes — any live state Single-state only Yes Yes
Advanced analytics & dashboards Included Not included Not included — listed under Scale, $3,000/mo Not published
Live sensor telemetry & the AI analyst Included at every tier No sensor integrations at any tier No sensor integrations at any tier No sensor integrations — hardware list is scales, RFID and label printers

We’ve left Essentials in the table because the headline number matches ours and you deserve to see that — but it isn’t the same purchase. Four seats, one state and a revenue ceiling rule it out for most operators running a real facility. The honest comparison is Launch at $1,000/mo, and the analytics most cultivators actually want sits a tier above that again at $3,000. Canix does not publish pricing at all — a demo comes first — so every “not published” in its column is exactly that, not a guess. The ~$1,000 figure is operator-reported rather than official, and Canix prices by state, licence structure and facility size, so treat it as a floor rather than a flat rate. Its sensor row comes from Canix’s own published integration directory, where the hardware section lists scales, RFID and label printers.

Where they’re ahead of us

We’d rather you read this here than find it on a demo call.

CapabilityCanix / FlourishCarinaOS
Scope beyond cultivation — manufacturing, distribution, wholesale marketplaceYesNo — cultivation only, on purpose
Bill of materials and multi-stage production runsYesNo
BioTrack states as well as MetrcYesMetrc only
Track record, headcount and integration breadthYears of itWe’re newer and smaller
The ERP module itselfShipping todayLive today, in beta — general availability Q4 2026

Compiled August 2026 from the vendors’ own published documentation — the Canix help center’s costing primer and QuickBooks Online integration guide, and the Flourish documentation on costing and its QuickBooks Online integration, the Flourish pricing page, and both vendors’ published integration directories — neither lists an environmental, climate, irrigation or IoT partner (Canix’s hardware integrations are scales, RFID and label printers). Flourish tier prices, seat counts, revenue bands and inclusions are from its published pricing page. Canix does not publish pricing publicly; the $1,000/mo entry point comes from pricing data shared by operators rather than from a published page, and Canix prices by state, license structure and facility size, so treat it as a floor rather than a flat rate. Absence of overhead allocation reflects what their documentation describes; if it exists and is simply undocumented, we’ll correct this. Note also that Illumify claims native GAAP accounting with 280E-aware COGS, and Viridian Sciences is built on SAP Business One — both at enterprise price points well above this tier. Canix, Flourish, Illumify and Viridian are trademarks of their respective owners and CarinaOS is not affiliated with any of them. If anything here is out of date or wrong, email hello@carinaos.com and we’ll fix it.

Versus a general ERP

A general ERP sees a line item. We see the plant.

NetSuite, Odoo, QuickBooks on its own: hand one an invoice line reading “1 lb flower — $1,200” and it has done its job. It cannot tell you which strain is quietly losing you money.

A general ERP / accounting stack
  • Sales are typed in, or imported from a spreadsheet somebody exported from Metrc
  • COGS is a percentage, an average, or a number the bookkeeper agreed on
  • Inventory is a quantity field that drifts from the room
  • The plant batch is not a concept it has — so cost cannot attach to one
  • Margin is per invoice at best, never per strain, never per room
CarinaOS ERP
  • Sales are generated from the manifest you already filed
  • COGS is built up from actual bills, hours and metered volume, per batch
  • Inventory is an append-only double-entry ledger — nothing is overwritten
  • The harvest batch is the cost object, and Metrc keeps the lineage for you
  • Margin resolves to strain, customer, package and room
And it tells you what it couldn’t cost. When a line has no package tag, no source harvest, no cost on its batch yet, or a quantity that isn’t a weight, it is counted and named rather than quietly averaged away. Costed and uncosted lines are never added into one total — a number like that reads as margin and is actually revenue.
Pricing

An add-on, not a new platform.

Add to the Full Ops Hub
+$100 /mo per facility
Full Ops Hub $250 + ERP module $100 = $350/mo per facility.
Still no per-seat pricing, no batch caps and no metered AI credits.
Start your 30 days free
The first 30 days are free, hub and ERP both — no card, and it lapses on its own if you do nothing, so there is nothing to cancel. At the end you choose: keep both, keep the hub alone, or stop. It’s the published price — there is no per-facility quote.
Straight answers

Questions we’d ask too.

Can I use it now, or is it still coming?
You can use it today. The ERP is live — purchasing, inventory, labor, costing, the ledger and QuickBooks sync are all running, and the trial turns it on from day one. What is still in beta is the finishing: we are fine-tuning it alongside a handful of operators we trust, on their real books. General availability is Q4 2026, and we name a quarter rather than a day because it is done when the books it produces are ones we would file ourselves. None of that is a queue — sign up and start using it now.
Do I have to move off QuickBooks?
No. Bills, invoices and payments sync to QuickBooks Online, and the connect wizard maps to your chart of accounts and item list rather than imposing ours. The ERP is where the cultivation detail lives; QuickBooks stays your book of record if you want it to be.
Does this need a flow meter?
No. Total input cost is derived from purchases, which works at any facility on day one. The meter adds two things on top: sharper attribution (which room or batch carries the spend) and the cross-check that catches leaks, miscounts and stale recipes. Worth having — not a prerequisite.
What about 280E?
The derived P&L is 280E-aware, which means the structure supports the COGS-versus-disallowed-expense split rather than pretending the problem doesn’t exist. It is not tax advice, and it doesn’t replace your CPA — it gives them a defensible starting point instead of a spreadsheet.
Is my data isolated from other facilities?
Yes, and structurally rather than by convention. Every internal reference carries the facility identifier as part of the key, so a cross-facility reference isn’t just blocked — it can’t be expressed. Row-level security is enforced at the database.
Is the ERP included in the $250 hub?
No — it’s $100 per facility per month on top, so $350 all in. Everything currently in the Full Ops Hub stays in it; the ERP doesn’t claw anything back behind a higher tier.

Want your grow’s real cost per gram?

Start it yourself — 30 days free, no card, nothing to cancel. Or talk to us first.