# ERP for distributors whose margin disappears between the port and the invoice

Canonical: https://erpfly.com/industries/distribution/
Last updated: August 21, 2026

You buy in containers, sell in cartons, and live on a margin thin enough that a badly split freight bill or an unclaimed supplier rebate wipes out a product line's profit for the quarter. Your ERP knows exactly what you sold. It's much vaguer about what the stock really cost you.

### Where standard ERP gets awkward in distribution

- **Landed cost split on the wrong driver.** Freight is charged by the cubic metre, but the system spreads it by value. Bulky cheap items look profitable, and small expensive ones look overpriced.
- **Rebates tracked in a spreadsheet, or not at all.** The supplier agreement says 3% back after 5,000 units a quarter. Whether anyone actually claims it depends on who remembers to check.
- **Back orders go to whoever shouts loudest.** Forty cartons arrive against 90 on back order. Sales reps lobby the warehouse, and your best account waits while a one-off buyer gets served.
- **Customer price lists that drift.** Contract prices were agreed two years ago, cost has moved twice since, and the gap only shows up at a quarterly margin review.

Modules distribution teams start with: https://erpfly.com/modules/inventory-management/, https://erpfly.com/modules/warehouse-management/, https://erpfly.com/modules/purchase-management/, https://erpfly.com/modules/sales-order-management/, https://erpfly.com/modules/invoice-management/

### Margin leaks the standard reports miss

Distribution looks simple from outside. Buy, store, sell. The people who run a wholesale business know the money is made or lost in the details between those steps: what a carton really cost once it cleared the port, whether the supplier paid the rebate they promised, and which customer got the stock when there wasn't enough to go round.

Standard ERP reports are built around sales and purchase totals. They're fine for that. They won't tell you that a best-selling line has been quietly losing money for a year because freight was allocated by value.

### Landed cost, worked through

Say one 40ft container holds two products. There are 500 cartons of paper towels, each 0.1 m³ and $8.00 at the supplier, so $4,000 of stock taking up 50 m³. There are also 200 cartons of hand soap, 0.05 m³ each at $30.00, so $6,000 taking 10 m³. Freight and clearing come to $3,000.

Split by value, towels carry 40% of the charges. That's $1,200, or $2.40 a carton, for a landed cost of $10.40. You sell towels at $12.00 and the margin report shows about 13%. Everyone's happy.

Split by volume, which is how the shipping line charged you, towels take 50 of the 60 cubic metres. That's $2,500, or $5.00 a carton, and a landed cost of $13.00. You're losing a dollar on every carton you sell at $12.00. The soap, meanwhile, is being overcosted and probably overpriced.

Duty is different again. It's charged on customs value, so value is the right driver for that line. A decent landed cost module lets each charge type carry its own split method. On ERPNext that means extending the Landed Cost Voucher with a per-charge distribution rule and item volumes. Odoo already supports splitting by weight or volume, so there the work is mostly about mapping charge types and getting good dimensions onto products.

### What stock ERPNext and Odoo handle well

Credit where it's due. Both platforms do a lot for distributors before any code is written. ERPNext has Pricing Rules and Promotional Schemes, Pick Lists, batch and serial tracking, multi-UOM items, reorder levels per warehouse and a solid Landed Cost Voucher. Odoo has routes with multi-step receipts and deliveries, reordering rules, vendor price lists, packaging units, backorder handling and wave or batch transfers.

What neither has as a first-class object is a **supplier rebate agreement** with tiers, periods and a claim process. Allocation rules for short stock are thin too. Those are the two gaps we're asked to fill most. For multi-bin put-away and pick paths, see the [warehouse management module](https://erpfly.com/modules/warehouse-management/). If buying is where the pain is, the [purchase management module](https://erpfly.com/modules/purchase-management/) covers approval limits and supplier scorecards.

### Who gets the stock when there isn't enough

Allocation is a business decision dressed up as a software problem. Before you ask for a module, agree on the rule. Common ones we generate are strict order date, customer priority tier, a fair share proportional to the quantity ordered, or protecting a minimum for contract customers before anyone else is served.

Pick one, write it down, and let the system apply it when goods are received against open orders. The module then updates the reserved quantity on each sales order line and tells the reps what their customers are getting. The arguments don't disappear, but they move to a meeting about the rule instead of happening at the warehouse door every morning.

### Before you ask for anything custom

Three checks save a lot of wasted effort. First, confirm your item master has real dimensions and weights, because a volume split can't fix bad data. Second, see whether a Pricing Rule or Odoo price list already covers your "custom pricing" need. Often it does. Third, read [ERPNext customization](https://erpfly.com/erpnext-customization/) or [Odoo customization](https://erpfly.com/odoo-customization/) to see what's a configuration change and what really needs code. If you're torn about building at all, our piece on [build vs buy for ERP](https://erpfly.com/blog/build-vs-buy-erp/) is blunt about the trade-offs.

### FAQ

### Does ERPNext handle landed cost for imports?

Yes. The Landed Cost Voucher adds freight, duty and other charges to purchase receipts and spreads them by quantity or amount, and you can distribute manually. What it won't do by default is split by volume or weight, or use a different driver per charge. That's a small, common custom module.

### Can Odoo do back orders without customisation?

Odoo handles partial deliveries well and asks whether to create a backorder when you validate a short shipment. Deciding which customer gets scarce stock first is a different problem, and that allocation logic is what people usually add.

### How are supplier rebates booked in the accounts?

We generate the accrual logic and the claim document. How the accrual posts (against purchase cost, a rebate income account or inventory) is a decision for your accountant, and the module takes that as a setting instead of guessing.

### Will this work with barcode scanners in the warehouse?

Yes. Both platforms accept scanner input as keyboard entry, and the pick, pack and receive screens we generate are built for scanning first. Rugged Android devices with a browser work fine.

### We run EDI with some big customers. Can erpfly build that?

We can generate the ERP side, meaning the import of orders and export of invoices and ASNs in a defined format. The EDI translation and VAN connection usually stay with your EDI provider.