A distributor orders $14,000 of product from a manufacturer and pays $950 to get it trucked to the warehouse. In a generic QuickBooks chart, both amounts land in the same place: a single "Shipping" or "Cost of Goods Sold" line, indistinguishable from the $3,100 the same distributor pays this month to ship finished orders out to its own customers. Whether inbound or outbound freight happens to dominate this particular month, the P&L reads the same, because nothing on the chart asks which direction the truck was going.
The same distributor earns a rebate from that manufacturer for buying enough volume this quarter, and separately gives one of its own customers a 2 percent discount for paying an invoice early. Both are real dollars, moving in opposite directions between the same three parties, and neither is an ordinary sale or an ordinary loss. A chart built for a business that just buys and resells at a fixed markup has no way to tell a supplier's rebate from unrelated income, or a customer's contractual discount from money that simply never showed up. This guide covers the accounts that keep freight split by direction, a rebate where it actually reduces cost, a discount where it actually reduces revenue, and a reserve for inventory that is still on the shelf but is not worth what it cost.
Why a generic chart breaks down for a wholesale distributor
The default QuickBooks chart gives a business one shipping expense and one cost-of-goods-sold account, which works fine for a company that only ever pays freight in one direction. A distributor pays it in two: inbound, to get product from a supplier to the warehouse, and outbound, to get a completed order to a customer. Under GAAP, only the first is part of what the inventory costs — the second is a cost of making the sale, not of acquiring the product. Blended into one account, a month where a distributor is stocking up ahead of a busy season looks identical, on paper, to a month where it's shipping out a backlog, even though the two describe opposite states of the business.
Rebates run through the same distributor from both directions, and a generic chart can't keep them apart. A rebate for buying enough volume from a supplier reduces the real cost of the inventory bought — a discount on a purchase, not unrelated income — and belongs against cost of goods sold. Booked into a general income account instead, cost of goods sold stays at its full, pre-rebate level, so gross margin looks worse than it actually is even though total profit nets out the same further down the income statement. A rebate a distributor owes a customer runs the other way: a real liability the moment the customer crosses the volume threshold that earns it, not an expense that exists only the day the check goes out.
Two more distortions sit closer to the shelf and the invoice. Slow-moving inventory that hasn't sold in a year isn't damaged and hasn't been stolen, so it never triggers a shrinkage entry — it sits on the books at full cost until a count or a forced markdown catches it, usually all at once. And a customer who takes an early-payment discount under terms the distributor itself offered hasn't defaulted on anything; the gap between the invoice and the cash that shows up is not a collection problem, but a chart with no account for it can make it look exactly like one.
How freight, a rebate, a discount, and a reserve move through the accounts
Four different flows, each moving through a different pair of accounts, from the same wholesale operation.
The accounts that do the work
These are the accounts from the wholesale distribution template that a generic chart does not give a distributor. Account numbers, names and types below are exactly as they import.
| Row | Account | Number | Type | Purpose |
|---|---|---|---|---|
| 01 | Trade Receivables | 1210 | Accounts Receivable | Receivables from wholesale customers |
| 02 | Inventory - Finished Goods | 1300 | Other Current Assets | Wholesale inventory ready for sale |
| 03 | Inventory - In Transit | 1310 | Other Current Assets | Goods in transit from suppliers |
| 04 | Inventory - Damaged/Returns | 1320 | Other Current Assets | Damaged goods and customer returns |
| 05 | Vendor Payables | 2010 | Accounts Payable | Amounts owed to product suppliers |
| 06 | Vendor Rebates Payable | 2230 | Other Current Liabilities | Volume rebates owed to customers |
| 07 | Accrued Freight Charges | 2250 | Other Current Liabilities | Freight and shipping charges payable |
| 08 | Wholesale Sales - General | 4000 | Income | General wholesale product sales |
| 09 | Volume Rebates Received | 4400 | Income | Rebates earned from supplier volume purchases |
| 10 | Cost of Goods Sold | 5000 | Cost of Goods Sold | Cost of wholesale inventory sold |
| 11 | Purchase Discounts | 5010 | Cost of Goods Sold | Discounts received on inventory purchases (contra-COGS) |
| 12 | Inventory Shrinkage | 5020 | Cost of Goods Sold | Loss from damaged, stolen, or missing inventory |
| 13 | Freight In | 5100 | Cost of Goods Sold | Inbound freight costs on inventory purchases |
| 14 | Customer Rebates Issued | 6230 | Expenses | Volume rebates and discounts to customers |
| 15 | Delivery Expenses | 6400 | Expenses | Outbound delivery and shipping costs to customers |
Inventory - Finished Goods carries a unit's landed cost — the supplier's invoice price plus whatever it took to get that unit to the warehouse — until the unit sells, and Freight In is the cost-of-goods-sold account inbound freight reaches once released, kept apart from Delivery Expenses, which only ever carries the cost of shipping a completed order out the door. Purchase Discounts nets against cost of goods sold rather than sitting in Volume Rebates Received, because a rebate tied to a specific purchase reduces what the inventory actually cost. Vendor Rebates Payable and Customer Rebates Issued track the opposite flow: a rebate a distributor owes a customer, recognized as a liability the moment it's earned and cleared only when paid. Inventory - In Transit and Inventory - Damaged/Returns keep two very different kinds of stock apart from Inventory - Finished Goods — one still moving, one unlikely to sell at full value — so neither drags down the numbers for stock actually ready to ship.
How the accounts get booked
Follow one landed-cost purchase, one early-payment discount, and one month-end inventory review through the accounts that hold them apart. Figures are illustrative throughout.
A distributor orders $14,000 of product from a supplier and pays $950 to have it trucked to the warehouse. Under GAAP, that freight is part of what the inventory costs, not a separate expense the day the carrier bill arrives.
| Account | Debit | Credit |
|---|---|---|
| 1300Inventory - Finished Goods | 14,950 | |
| 2010Vendor Payables | 14,000 | |
| 2250Accrued Freight Charges | 950 | |
| Totals | 14,950 | 14,950 |
The $950 becomes part of what this inventory is worth on the balance sheet rather than posting to Freight In or Delivery Expenses the day the carrier bill shows up. It will not touch cost of goods sold until the units it's attached to actually sell — when they do, the product cost and the freight riding with it release into Cost of Goods Sold and Freight In as two separate lines, so the freight-in portion of this month's margin stays visible instead of disappearing into one blended number.
A wholesale customer's $18,600 order is already sitting in Trade Receivables under 2/10 net 30 terms — pay within 10 days, take a 2 percent discount. On day 8, the customer wires $18,228.
| Account | Debit | Credit |
|---|---|---|
| 1000Operating Cash | 18,228 | |
| 4000Wholesale Sales - General | 372 | |
| 1210Trade Receivables | 18,600 | |
| Totals | 18,600 | 18,600 |
The template has no separate contra-revenue account for a term discount like this, so the $372 posts directly against Wholesale Sales - General, the income account it reduces, rather than through a dedicated line a larger distributor's chart would carry to show gross billings and net revenue side by side. What it must not do is land in Bad Debt Expense: nothing here is uncollectible. The customer paid in full, on time, under terms the distributor offered, and expensing the gap as bad debt would tell a lender the company is writing off receivables it isn't.
At month end, a physical count turns up $6,400 of stock that has sat on the shelf for over a year and is unlikely to move at anything close to its original cost — not damaged, not missing, just slow.
| Account | Debit | Credit |
|---|---|---|
| 5020Inventory Shrinkage | 6,400 | |
| 1300Inventory - Finished Goods | 6,400 | |
| Totals | 6,400 | 6,400 |
The template carries Allowance for Doubtful Accounts as a contra-asset for receivables that won't collect, but no equivalent contra-asset for inventory that won't sell at full value. This entry uses Inventory Shrinkage — built for physical loss from damage, theft, or a counting error — for the expense side, and writes the value down directly against Inventory - Finished Goods rather than through a separate allowance, so the balance sheet loses the ability to show original cost and the reserve against it as two numbers the way it can for a doubtful receivable.
What this looks like on the statements
The same accounts, seen from the reports, across a full month of the distributor's purchasing and sales rather than the three entries above in isolation.
| Wholesale Sales - General | 141,628 |
| Total revenue | 141,628 |
| Cost of goods sold | |
| Cost of Goods Sold | 86,400 |
| Freight In | 5,850 |
| Purchase Discounts | (1,200) |
| Inventory Shrinkage | 6,400 |
| Total cost of goods sold | 97,450 |
| Gross margin | 44,178 |
| Warehouse Rent | 4,200 |
| Delivery Expenses | 3,100 |
| Net income | 36,878 |
Example figures.
Wholesale Sales - General already reflects Entry 2's $372 discount, so the $141,628 on this line is what the distributor actually realized, not what it invoiced. Freight In carries $5,850 of released landed cost for everything that sold this month — most of it from purchases made in prior months, only a small piece from the batch in Entry 1, which is still sitting in Inventory - Finished Goods, unsold. Purchase Discounts shows $1,200 of vendor rebates tied to this month's purchases, reducing cost of goods sold directly rather than padding a separate income line the way Volume Rebates Received would; had it landed there instead, gross margin here would read $1,200 lower than it actually is, even though net income would come out the same. Inventory Shrinkage carries the $6,400 from Entry 3, a cost that a chart with no reserve account would only show up as a surprise the month a count or a sale finally forced the issue.
| Current assets | |
| Trade Receivables | 34,200 |
| Inventory - Finished Goods | 8,550 |
| Current liabilities | |
| Vendor Payables | 14,000 |
| Accrued Freight Charges | 950 |
Example figures.
Vendor Payables and Accrued Freight Charges carry exactly the $14,000 and $950 Entry 1 posted, still unpaid at month end. Inventory - Finished Goods carries $8,550, the net effect of Entry 1's landed-cost purchase and Entry 3's obsolescence write-down — not the distributor's entire shelf, which doesn't move on these two entries alone. Trade Receivables carries $34,200, the running balance of every wholesale invoice still open across every customer, of which only $18,600 was the invoice Entry 2's early-payment discount cleared.
- 01What does a unit of inventory actually cost to land, separate from what it costs to ship out the door? Blending inbound and outbound freight into one account makes a month of heavy inbound purchasing look identical to a month of heavy outbound shipping, even though the two mean opposite things for the business.
- 02Is a supplier rebate really unrelated income? Booked into a general income line instead of against cost of goods sold, a rebate tied to a specific purchase leaves cost of goods sold at its full, pre-rebate level — gross margin looks worse than it actually is, even though the bottom line is the same either way.
- 03How much of the inventory on the books is actually worth what it cost? Nothing about slow-moving stock trips a shrinkage entry, so it sits at full value until a count or a forced markdown catches it all at once.
- 04Is a short payment a discount or a default? An early-payment discount taken under terms the distributor itself offered looks, on the bank statement, exactly like a customer who paid less than they owed — with no account explaining the difference, it can end up expensed as a bad debt for a customer who did nothing wrong.
What the template changes
The diff, in the grammar the product uses everywhere else.
- Shippinginbound and outbound freight blended into one account, so the mix of directions this month decides whether cost of goods sold looks high or low
- 5100Freight Incogs
- 6400Delivery Expensesstays a selling expense, never inbound freight
- no account for a rebate tied to a purchasea supplier rebate had nowhere to post but a general income line
- 5010Purchase Discountscogs
- 4400Volume Rebates Receivedstays income, but only for a rebate that is not tied to a specific purchase
- no reserve for slow-moving stockobsolete inventory sat at full value until a count or a sale forced a write-down
- 5020Inventory Shrinkagecogs
- no account for an early-payment discounta discounted collection had nowhere to post but an unexplained shortfall or a bad-debt write-off
- 4000Wholesale Sales - Generalcarries the discount directly, since the chart has no separate contra-revenue line
- Publication 538, Accounting Periods and Methods · Internal Revenue Service
- Principles of Accounting, Volume 1: Financial Accounting · OpenStax, Rice University
Get started
The wholesale distribution chart of accounts template includes every account on this page, pre-numbered and ready to import into QuickBooks. It takes about 60 seconds to optimize and gives a distributor a P&L that shows freight cost by direction, a vendor rebate where it actually reduces cost, and a discount where it actually reduces revenue, instead of one shipping line and one income account that blur all four together.
If you already have a chart, the optimizer reads it and shows the diff above against your own accounts, so you can see which of these are missing before you change anything. Capitalize freight-in at the source, keep a supplier's rebate out of the income line it doesn't belong in, and reserve for slow-moving stock before it becomes a surprise, and next month's margin comes from the trial balance instead of a spreadsheet rebuilt after the fact.
Frequently asked questions.
Why can't inbound and outbound freight share one account?
Because they answer different questions. Freight paid to get inventory to the warehouse is part of what that inventory costs, and belongs in cost of goods sold. Freight paid to ship a finished order to a customer is a cost of making the sale, and belongs in operating expenses. Blend them into one 'Shipping' line and a month where inbound purchasing outpaces outbound orders looks identical to a month where the reverse is true, even though gross margin moved for opposite reasons.
Is a volume rebate from a supplier the same thing as income?
Only if it isn't tied to what was actually paid for inventory. A rebate earned for hitting a purchase threshold with a supplier reduces the real cost of the goods bought, and belongs against cost of goods sold, not in a general income account. Book it as income instead and cost of goods sold stays at its pre-rebate level, which makes gross margin look worse than it actually is, even though the bottom line nets out the same.
Is an early-payment discount the same as writing off a bad debt?
No, and treating it that way misrepresents the customer. A bad debt write-off means the money is not coming. An early-payment discount means the customer paid in full, on time, under terms the distributor itself offered — the invoiced amount and the realized amount are just two different numbers by design. The gap belongs against revenue, not in an account meant for money that was never going to show up.
The principles are easy. Applying them is the work.
This guide is the theory. The free trial helps you review a real QuickBooks Online chart with a score, structural diff, and prioritized cleanup plan.
- +Score the chart across the health dimensions
- +Compare structure against a reference pattern
- +Prioritize cleanup work before changing books
- +Review recommendations before anything is applied