We’re currently migrating a distributor client from QuickBooks Desktop to Microsoft Dynamics 365 Business Central.
For this client, freight is not just a surcharge.
It is effectively a separate service business running alongside their product business.
They:
- Buy shipping services from UPS, FEDEX, LTL carriers, etc.
- Resell that service to customers (sometimes at cost, sometimes marked up, sometimes free)
- Want freight income, freight cost, and freight profit tracked separately
- Need this visibility per sales order, not just at the company level
- Pay sales commissions based on gross profit, so freight cost accuracy matters
Their statement during the call summed it up perfectly:
“When we’re invoicing it out, it’s income. When we’re being invoiced, it’s cost of goods.”
How freight works today (QuickBooks)
Freight billed to customers → Income
- Added as a Non‑Inventory Part
- Posts to 30800 · Shipping & Delivery Income
- Appears under Income on the P&L
- Never affects item unit cost
Freight paid to vendors/carriers → COGS
- Entered as vendor bills
- Posted to:
- 31250 · Freight‑In
- 31300 · Freight‑Out
- Both sit under Cost of Goods Sold
- Directly reduce gross profit (and commissions)
Desired P&L structure
| Section |
Account |
Amount |
| Income |
Shipping & Delivery Income |
$70,000
|
| COGS |
Freight‑In |
$44,000
|
| COGS |
Freight‑Out |
$45,000
|
What’s broken today (and what they want to fix)
QuickBooks shows freight income and freight cost but there is no link between them.
- Freight income lives on Sales Invoices
- Freight cost lives on Vendor Bills
- There is no per‑order freight profitability
- Orders look more profitable than they really are
Core requirements in Business Central
1. Freight charged to customers must post as Income
- Must hit Shipping & Delivery Income
- Must not:
- Increase item unit cost
- Touch COGS
- Conceptually: a service sale, not landed cost
Question: Is a Service Item with Gen. Prod. Posting Groups the correct standard approach here?
2. Freight paid to vendors must post as COGS
- Inbound → Freight‑In
- Outbound → Freight‑Out
- Often entered without a PO
- Final carrier cost may arrive days/weeks later
Question: Is posting directly to G/L accounts the recommended standard approach?
3. Per‑order freight profitability (the hardest part)
Example for one order:
| Component |
Amount |
| Item profit |
$50 |
| Freight income |
$25 |
| Freight cost |
$20 |
| Freight profit |
$5 |
| Total order profit |
$55 |
Key point: Item Charges are not suitable - They allocate freight into item cost and destroy freight visibility.
Question: Is there any standard BC mechanism to calculate service‑line profit per order, or does this require a custom Freight Ledger / sub‑ledger?
4. Absorbed freight must still reduce order profit
- Customer pays $0
- Company pays carrier
- Cost must still hit the order
- Otherwise profit and commissions are overstated
Question: How do others attach costs to an order when there is no sales‑side freight line?
5. Multiple freight charges per order
- Multiple inbound shipments
- Multiple outbound bills
- Carrier adjustments
- Nothing should overwrite previous costs
Question: Any standard way to aggregate multiple freight bills against one Sales Order?
6. Traceability (Sales ↔ Purchase)
Users want to open a Sales Order and immediately see:
- Freight billed to customer
- Freight paid to carriers
- Net freight profit/loss
Question: Is this typically solved with:
- Dimensions?
- Custom reference fields?
- A custom ledger table?
Question: Any standard feature or AppSource app that already does this?
Before building custom AL extensions, we’d love to learn from the community:
- Have you implemented freight as a service in Business Central?
- Did you build a custom freight sub‑ledger?
- Are there AppSource apps that truly handle freight profitability per order?
Any insights, patterns, or war stories would be hugely appreciated.