Cannabis bookkeeping is its own discipline. Three-way matching against Metrc, per-vendor terms across COD / Net 30 / consignment, settlement reports that need to land in the right Expense Account on the right date — none of this is what your accounting platform was built for, and none of it survives "we'll just enter it from the spreadsheet on Friday." If you're a bookkeeper or accounting firm with cannabis retail clients running consignment on ShelfSpace, the QuickBooks side of the integration is where you'll spend most of your time. Or, if it's working right, almost none of your time.
Here's exactly what posts to QuickBooks Online when a consignment settlement resolves on ShelfSpace, what you have to enter manually, and the close-discipline gotcha that catches firms off-guard the first time.
The standard path: Approve & Pay
Every week, the platform pulls your client's POS sales, reconciles inventory against Metrc, applies the per-category profit splits and aging discounts, and produces a net payout amount for each consignment vendor. The retailer reviews the settlement in their dashboard and clicks Approve & Pay.
At that moment, two things happen on the QuickBooks side, both automatic, both within seconds.
Entry 1 — the Bill posts
A Bill is created in QuickBooks against the vendor, with the consignment settlement's net payout as the amount and the Expense Account mapped during your QuickBooks Setup. The Bill carries the Settlement ID as its DocNumber so the audit trail is traceable both ways — you can click from the Bill in QBO back to the original settlement record on the platform.
Entry 2 — the Bill Payment posts
A Bill Payment posts against the Bank Account mapped in QBO setup, applied to the Bill from Entry 1. This is the Check 21 the platform cuts from the retailer's bank — the same check the vendor receives as the last page of their settlement report PDF. The check number on the QBO entry matches the check number on the vendor's Check 21.
Both entries land in QBO before the bookkeeper opens the client file. Bank reconciliation works on autopilot because the Check 21 hits the retailer's bank feed with the same check number that's on the Bill Payment record. Match Health on your QBO Setup page shows green. Close is faster because the work was already done as the settlements ran.
The close-period exception
Bookkeepers ask this one the first month: "What happens if a settlement posts to QuickBooks but the period is closed?" This is a real edge case — a settlement runs for a period ending three days into the previous month, but by the time the retailer gets around to approving it, the month is closed in QBO.
The platform handles it. If the original TxnDate falls in a closed period, the Bill posts with today's date as the TxnDate instead. The DocNumber (Settlement ID), Amount, and Vendor stay intact so the entry reconciles cleanly against the bank feed. Only the posting date shifts to a current open period. The bookkeeper doesn't need to reopen anything — the entry lands in the current period, the bank-feed match still works, and the settlement period dates remain visible on the original Bill memo for audit purposes.
The exception that breaks the sync: Mark as paid externally
There's one button click that breaks the auto-sync, and bookkeepers need to know about it before it happens or they spend hours hunting for the missing Bill.
When the retailer clicks Mark as paid externally instead of Approve & Pay, the platform records the settlement as resolved on its side — payment status moves to Paid, the vendor gets the settlement report with a "PAID EXTERNALLY" stamp on the last page instead of a Check 21 — but no QuickBooks entries post. Not the Bill, not the Bill Payment, nothing.
The reason: ShelfSpace didn't generate the payment instrument. The retailer told the platform "I handled this off-platform" (own check, ACH from their bank, cash). The platform has no payment object to push to QBO. It's not a bug; it's the logical consequence of the retailer choosing the off-platform resolution path. Full breakdown of when to pick each path lives on the Approve & Pay vs Mark as Paid Externally doc.
What the bookkeeper has to do manually
For every settlement marked paid externally, the bookkeeper enters two corresponding entries in QBO from whatever the retailer used:
- Bill — against the vendor, for the net payout amount. Use the Settlement ID as the DocNumber to preserve the link back to the platform record. The TxnDate should reflect the original settlement period.
- Bill Payment — against whichever Bank Account the retailer actually paid from. If they used their bank's bill-pay, look up the check number from the bank feed. If they sent an ACH, use the ACH reference. If they paid cash, the Bill Payment is from a cash account, no check number.
The retailer should flag externally-paid settlements during the weekly handoff so the manual entries don't get missed. ShelfSpace doesn't currently send a separate notification for these — the visibility comes from the retailer's own discipline or from the bookkeeper noticing that a Bill is missing for a vendor that the platform shows as having a Paid settlement.
Bookkeeper rule of thumb: if a vendor settlement shows Paid on the platform but no corresponding Bill exists in QBO, the retailer used Mark as paid externally. Enter the Bill and Payment manually based on the retailer's payment method.
Spotting sync drift with Bookkeeper Match Health
The QuickBooks Setup page on ShelfSpace surfaces a Bookkeeper Match Health indicator that shows the percentage of Bills + Bill Payments that have synced cleanly versus those that have errored or stalled. For retailers running consignment on Approve & Pay end-to-end, this number should sit at or very near 100% across any rolling window.
The number drops when something interrupts the sync — most commonly an expired OAuth token (the retailer needs to reconnect QBO from My Account), a vendor that exists on the platform but hasn't been mapped to a QBO vendor (the Setup screen flags these for manual mapping), or a closed-period exception that the platform handled but you'd want to verify cleared. The indicator is a fast way to catch drift before it shows up at month-end close.
For the full QuickBooks setup walkthrough, see the QBO setup blog or the docs version. For the broader bookkeeper partnership model, see For Bookkeepers.
What this means for the close
If your cannabis retail client runs every settlement through Approve & Pay, your QBO file stays auto-reconciled and your close gets faster every month. The Bills and Payments are in the file before you open it. Bank rec lines up because the check numbers match the bank feed. The only manual work is whatever happens outside the consignment cycle (AP for non-cannabis vendors, payroll, owner draws — the work your firm does anyway).
If your client mixes in Mark as paid externally for some settlements, those need manual entry on your side. Flag them during your weekly handoff. The platform's Settlement detail page makes the resolution path visible (it'll say "Paid externally" instead of showing a check number), so the audit trail is intact — you just need to make sure QBO catches up.
Cannabis bookkeeping doesn't have to live in a spreadsheet. With the consignment sync running clean, the work is done before you log in to QuickBooks. Your close stops being a catch-up exercise and becomes a review exercise.
If you're a bookkeeping or accounting firm with cannabis retail clients, the For Bookkeepers page covers the partnership track in depth. If your retailer is your own dispensary and you want to see how the QBO sync compounds against your monthly close discipline, reach out for an evaluation.