How should a coffee roaster set up QuickBooks Online for wholesale invoicing?

• 9 min read • Intermediate

Set each café location up as its own customer, put payment terms on the customer, use one item per coffee and bag size, and date each invoice on the delivery day. Always give every invoice line its price. QuickBooks Online handles invoicing well. It doesn’t handle the roasting side (green into roasted, roast loss, packaging cost), and it has a few traps that quietly produce $0 lines or block invoices. Both are covered below.

The setup, step by step

  1. One customer per delivery location. A café group with three shops pays from one office but receives three deliveries. Sub-customers set to “Bill with parent” roll up to the parent’s balance. Give each its own shipping address (turn on Shipping in Sales form content) so every invoice shows the right shop, and you can see which shop actually orders.
  2. Terms on the customer. Put Net 15 or Net 30 on the customer profile so every new invoice picks them up. The company default lives under Settings (the gear) › Account and settings › Sales › Sales form content › “Preferred invoice terms”, and only applies to new invoices.
  3. Date the invoice on the delivery day. QuickBooks counts the due date from the invoice date. A Monday invoice for a Thursday delivery gives a Net 30 account three fewer days than you agreed. More on terms and getting paid: How do coffee roasters get paid on time by wholesale accounts?
  4. One item per coffee per bag size. QuickBooks Online has no units of measure, so “Guji 12 oz” and “Guji 5 lb” are two items.
  5. Grind and other preferences go in the line description. Custom fields sit on the whole invoice, not on each line (Simple Start 1, Essentials and Plus 4, Advanced 12).
  6. Use the price the account actually pays on the line, not list price plus a discount line, so the invoice reads the way the account expects.
  7. Add a “P.O. Number” custom field on sales forms. Invoices have no PO field of their own.

What QuickBooks Online won’t do for a roaster

This section is general information, not accounting or tax advice. Have your accountant confirm the setup for your books and your taxes.

Green into roasted. QuickBooks Online Simple Start through Advanced has no assemblies or bills of materials; Intuit Enterprise Suite, the tier above, now adds them. On the regular plans, track quantities with inventory quantity adjustments (Plus and Advanced, or Intuit’s inventory add-on): take the green out by the weight you roasted, bring the roasted item up by what came out. A quantity adjustment books the green you took out as inventory shrinkage, at QuickBooks’ recorded cost; it doesn’t carry that cost over to the roasted coffee. Moving the green cost onto the roasted item usually takes a journal entry or an adjusted item cost. Have your accountant set that step up once.

Roast loss. Normal roast loss belongs in the cost of the roasted coffee: the green dollars carry over to fewer pounds. Track the loss percentage as a yield number, and expense losses beyond your normal rate, like a scorched batch.

Packaging cost. A bundle has no quantity on hand, so it can’t carry a finished bag’s cost. Either book packaging as an expense when you buy it, which leaves each coffee’s cost rougher, or include an average packaging cost when you set the roasted item’s cost. Which fits your books and your taxes is a question for your accountant. The quantity adjustment itself has no cost field.

Revenue by customer type. On Plus and Advanced, give each account a Customer Type (café, grocery, office) and run the Sales by Customer Type Detail report. Intuit doesn’t list a summary version, so for one total per type, export it, or use Classes or Locations on each invoice (also Plus and Advanced).

Traps we know from building on QuickBooks

effizient writes wholesale invoices into QuickBooks Online through its API. These are behaviours we confirmed while building that, mostly in Intuit’s test environment. They apply when an app or an import creates or updates the invoice, and they explain most “why does this invoice look wrong?” moments with synced invoices.

  • A line without a price becomes a $0 line. QuickBooks never falls back to the item’s default price on an invoice. If an app or import creates an invoice line without a price, QuickBooks stores $0 instead of the item’s price. Typing an invoice by hand avoids this, since picking an item fills in its price. On those lines, the item only decides which accounts the line posts to, not its price. If $0 lines keep appearing, check how the invoice was created before you check the item.
  • A line without an item quietly becomes “Services”. If an app sends a line with no item at all, QuickBooks assigns its default “Services” item instead of refusing the invoice. Your sales by item report then shows coffee as “Services”.
  • One inactive item blocks the whole invoice. If an app sends an invoice with a line on an inventory item you’ve made inactive, QuickBooks rejects the entire invoice with “You need to activate this item before updating the quantity.” The message doesn’t say which item. When an app’s invoice sync fails with that message, look for a coffee you retired recently.
  • Editing a paid invoice reopens it. If you raise the total on an invoice that’s already been paid, the payment stays applied and the invoice reopens with a balance for the difference. That’s correct accounting, but it surprises people. Check the payment is still linked after the edit, add a note, and tell the account.
  • The payment link can show other open invoices. The pay link on a QuickBooks invoice can also show the customer’s other sent, currently due invoices, so they can pay several at once (in our testing, the one you sent was highlighted). Good for collections, but make sure older invoices on that customer are really still open. Links also rotate after a while, and an expired one doesn’t show an error, it lands on an unrelated page, so don’t paste old links into reminders.
  • Small differences on every invoice are usually sales tax. If your order totals and QuickBooks’ totals differ by a little on nearly every invoice, QuickBooks’ automatic sales tax is the usual cause. That happens when your ordering system sends totals before tax.
  • QuickBooks doesn’t delete customers, it makes them inactive. A customer with transactions can’t be deleted, only made inactive, and a merged duplicate goes inactive with its transactions moved to the customer you keep. Check inactive customers before creating a duplicate.

When the order changes after you’ve invoiced

The rule that keeps the books clean: one invoice per order, and every change to the order changes that same invoice. Don’t create a second invoice for extra bags, and don’t delete an invoice that might already have a payment against it. If someone edited the invoice in QuickBooks, decide which version is right before anything overwrites it.

Where effizient fits

Once switched on, effizient writes each wholesale order into QuickBooks Online as an invoice, by default when the order is fulfilled. Every line carries its price, the customer is the one linked to that delivery location, and the invoice is dated on the delivery day. When an order is reopened or rescheduled, the same invoice is updated. If someone has changed its lines or prices in QuickBooks, effizient leaves it alone and flags it instead of overwriting the edit. A sync that fails, for example on an inactive item, is flagged on the order. More on how invoices and terms work in effizient: Invoicing and payment terms.

Sources

Written by Michael Wallbaum

Orders and books that agree

effizient is wholesale ordering for coffee roasters: each café orders at its own prices, phone and email orders land in the same list, and every order becomes the right QuickBooks invoice.

Twenty minutes on how you run wholesale today. No slides.