Home/Blog
Guides

ERP for a wholesale coffee roaster: price lists, credit terms, recurring orders and distribution

Wholesale is not retail in bigger quantities. It is a different model: a price per customer, payment on terms, a monthly statement, and an order that repeats every week.

ERP for a wholesale coffee roaster: price lists, credit terms, recurring orders and distribution
In short
  1. Wholesale is a different model, not retail in bigger quantities. The price sits on the relationship, not the product.
  2. A price list per customer, with quantity tiers and expiring contract rates, so nobody quotes from an old list.
  3. Credit terms and a credit limit that can hold a delivery before the coffee leaves the building, rather than a write-off three months later.
  4. The standing weekly order is the most valuable and least managed part of the business. Hold it as one recurring order, not as a habit.
  5. The margin leaks in four quiet places: forgotten prices, deliveries without proof, statements built by hand, and collection chased from memory.

A note on the title: this is about the system you run a wholesale roastery on, not about where to buy coffee wholesale. If you are looking for green beans or a supplier, this is the wrong page.

Wholesale is a different model, not a bigger one

A roastery that supplies cafes, hotels and offices looks from the outside like retail with larger bags. It is not. Four things change, and each one breaks a tool built for consumer selling.

The price is not on the product, it is on the relationship: this cafe pays one rate, that hotel pays another, and the rate was agreed in a meeting eight months ago. The payment does not arrive with the order, it arrives thirty days later, or sixty, or after three reminders. The order is not a decision, it is a habit: the same twelve kilos every Tuesday. And the delivery is not a courier tracking number, it is your own driver, your own route, and a question later about whether the third bag was actually left at the door.

If the roastery also runs its own cafes and an online store, a roastery with cafes and an online store covers that shape instead. And if you are still deciding whether any of this needs a system at all, does your business need an ERP is the place to start. Naqlah's trading and distribution page covers the wider category.

Where the margin leaks

In wholesale the margin rarely disappears in one visible place. It leaks in four small ones.

Prices agreed and then forgotten. A discount given to win an account, never written anywhere a system can read, so it is applied inconsistently or not at all until the customer notices.

Deliveries without proof. A driver leaves four bags and remembers five, or the customer remembers three. Without a record signed at the door, the argument is settled by whoever is more confident.

Statements built by hand. Someone rebuilds each account's position in a spreadsheet at month end, which means it is always slightly out of date and always disputable.

Collection chased from memory. The accounts that get chased are the ones somebody happens to remember, not the ones that are furthest overdue or closest to their limit.

None of these is dramatic. Together they are usually worth more than the discount you are arguing about with your biggest customer.

A price list per customer

This is the first thing to fix, and it is mechanical.

Instead of one price per product, each customer is assigned a price list, and that list is what the system uses when an order is entered for them. Inside a list you can hold a flat rate per product, a rate that changes by quantity so twenty kilos prices differently from five, and a contract price that applies for an agreed period and then expires.

Customer typeHow the price is setWhat the system does
Standard cafePublished trade listApplies the list rate automatically
Volume accountTiered by quantity orderedPrices each line by its own quantity
Contract accountAgreed rate, fixed periodHolds the rate, then expires it on the end date
Hotel or groupOwn list, several delivery addressesOne account, one price, many drop points

The immediate benefit is not neatness. It is that a rep can no longer quote from an old list, because the rep does not type the price at all. Odoo's sales application is where this lives.

Credit terms, receivables and collection

This is the section that decides whether a wholesale business is healthy, and it is the one most often run on nerve.

Each account gets payment terms and a credit limit. The terms drive the due date on every invoice automatically, so the ageing report is a fact rather than an estimate. The credit limit does something more useful: it can hold a delivery when an account is already over its limit, which turns a difficult conversation into a system message before the coffee leaves the building rather than a write-off three months later.

What the finance view looks like, as a share of the total balance owed to you.

Ageing bucketShare of balanceWhat it means
Not yet dueJust over halfHealthy, within terms
1 to 30 days lateAbout a quarterNormal slippage, first reminder
31 to 60 days lateRoughly a sixthNeeds a call, not an email
Over 60 days lateThe remainderOne account over its limit, next delivery held

Those proportions are illustrative rather than a benchmark. The point is the last row: a system that flags the account and holds the drop is doing collection work that otherwise depends on someone remembering. Statements go out from the same ledger, which means what you send matches what you booked. Accounting carries the terms, the ageing and the statements.

Recurring orders and a trade portal

The standing order is the most valuable and least managed part of wholesale.

If a cafe takes the same twelve kilos every Tuesday, that is not twelve separate decisions a year. It is a recurring order, and holding it as one means the delivery and the invoice are generated on schedule, the roast plan can be built on committed volume, and a missed week shows up as an exception rather than as silence.

The second half of this is letting the customer place and adjust their own order rather than sending it by WhatsApp to whoever answers. A trade portal gives each account a login where they see their own prices, their order history, their outstanding invoices, and a reorder button. Worth being precise about scope here: the portal where customers view their orders and invoices is standard, while a full self-service ordering experience with each account's own prices is a configuration decision to settle during the project. Ask for it explicitly rather than assuming it.

One boundary. If you also sell retail bags to consumers on Salla or Zid, that storefront stays where it is. A trade portal is for your wholesale accounts and is a separate thing from your consumer store.

Delivery, routes and proof

Your own van changes what the system has to do.

Orders for a given day are grouped into a route, the driver carries a delivery document per drop, and the delivery closes the line so the invoice reflects what was actually delivered rather than what was ordered. That much is standard. What is worth asking about specifically is how proof gets captured at the door: a signature, a photo, or a confirmation in an app. That capture is usually an addition rather than a checkbox, so it belongs in the scope conversation rather than being assumed. Without it you are back to settling disputes from memory, which is the leak described earlier.

Customer contacts, visit history and who promised what live in the CRM, which matters more in wholesale than in retail because a single account can be worth years of revenue and usually has three people involved in it.

Compliance on credit sales

Short, but not optional. An invoice on deferred payment is still an e-invoice, and it has to be issued and reported like any other.

Saudi Arabia's e-invoicing integration has rolled out in waves, and the twenty-fifth wave covers taxpayers whose taxable turnover exceeded SAR 187,500 in 2022, 2023, 2024 or 2025, with an integration deadline of 1 February 2027. At that threshold, very nearly every operating wholesaler is in scope. Check your own position and date on ZATCA's e-invoicing pages rather than taking a vendor's word for it, including ours.

The practical implication for a roastery is that the compliant invoice should come out of the same record that holds the order, the price list and the delivery, rather than being typed a second time into a separate tool.

What to switch on

Sales with price lists, inventory, purchasing for green coffee, and accounting with payment terms and credit limits. Add manufacturing if roast batches are tracked as production with a recorded loss. Add the CRM when accounts have more than one contact, which in practice is immediately. Add the portal when enough customers order often enough that taking orders by message has become a job in itself.

FAQ

Frequently asked questions

What is the best system for a roastery selling wholesale to cafes?

The one that holds a price per customer rather than a price per product, calculates due dates from agreed payment terms, can hold a delivery when an account is over its credit limit, and treats a weekly standing order as one recurring agreement. Those four are what separate wholesale from retail. A tool built for consumer selling will do none of them, however many bags you move through it.

How do I manage a different price list for each customer?

Assign each account its own price list and let the system apply it when an order is entered, so nobody types a price from memory. A list can hold a flat rate, a rate that changes with quantity so twenty kilos prices differently from five, and a contract rate that expires on an agreed date. The point is not tidiness: it is that a rep cannot quote from a list that is eight months out of date.

How do I track receivables and credit sales?

Give every account payment terms and a credit limit. The terms produce the due date on each invoice automatically, which makes the ageing report a fact rather than an estimate, and statements come out of the same ledger as the invoices so what you send matches what you booked. The credit limit is the part most businesses are missing: it can hold the next delivery while the account is over limit, which is cheaper than chasing the money afterwards.

How do I manage recurring weekly orders?

As one recurring order rather than a habit somebody remembers. The system then generates the delivery and the invoice on schedule, the roast plan can be built against committed volume, and a week that gets skipped appears as an exception instead of as silence. It also means a customer who quietly stops ordering shows up in a report rather than being noticed a month later.

Can my customers place their own orders?

Yes, through a trade portal where each account logs in and sees its own prices, order history and outstanding invoices. Be precise when scoping it: a portal for viewing orders and invoices is standard, while full self-service ordering at each account's own prices is a configuration decision for the project. It is worth doing once taking orders by message has become somebody's job. If you also sell retail on Salla or Zid, that storefront is separate and stays where it is.

How do I prove a delivery was made?

The delivery record itself is standard: a document per drop, grouped into a route, closing the order line so the invoice matches what was delivered rather than what was ordered. Capturing proof at the door, meaning a signature, a photo or a confirmation in an app, is usually an addition rather than a built-in checkbox, so ask specifically how it will be captured before the project starts. Without it, delivery disputes are settled by whoever sounds more certain.

Do e-invoicing rules apply to sales on credit?

Yes. An invoice on deferred payment is an e-invoice like any other, and it has to be issued and reported the same way. Saudi Arabia's integration has rolled out in waves, and the twenty-fifth covers taxpayers whose taxable turnover exceeded SAR 187,500 in 2022, 2023, 2024 or 2025, with an integration deadline of 1 February 2027. At that threshold almost every operating wholesaler is in scope, so check your own position on ZATCA's e-invoicing pages.

How long does this take, and what drives the cost?

The drivers are the number of accounts and how many of them have their own agreed prices, whether roast batches are tracked as production, whether you run your own delivery fleet, and whether a trade portal is in scope. The sequence is discovery, then sales with price lists and inventory, then accounting with terms and credit limits, then delivery and routes, then the portal if you want one. A scoped quote after a discovery session is the only honest number.

Keep reading

Related articles

Ready to run your business on one system?

Free consultation. Meet the team and get a clear roadmap in one call.

Book your consultation