Logo Dark
Get In Touch

Odoo Landed Cost for Solar Manufacturers: Imported Cells to Module BoM

/
ERP

Your supplier invoice can be correct and your module costing still wrong.

In the worked example below, 14,400 imported cells cost ₹2,44,800 on the invoice. Freight, insurance, customs duty and clearance add another ₹1,20,500. That's a 49% jump on the cell value, or ₹1,205 on every 144-cell module. If those bills sit in an expense account instead of inventory, the cost sheet under-reports every module you build from that shipment.

This post walks through the full landed cost calculation in Odoo: purchase, receipt, landed-cost allocation, inventory valuation and a three-level BoM, ending at a solar panel manufacturing cost per module and per watt. For the wider cell-to-dealer picture, see our Odoo ERP guide for solar module manufacturing.

Key Takeaways

  • In this example, import charges raise the cell cost from ₹17.00 to about ₹25.37, adding ₹1,205 per module.
  • That's 12.5% of the ₹9,603 module cost, or about ₹2.10 per watt on a 575 Wp module.
  • Odoo landed cost only revalues stock on FIFO or AVCO with automated valuation, so the costing method has to be set before the first container lands.

About this worked example

Every figure here is illustrative. We use a publicly listed product, Spark Solar's Spark 144 Cells TOPCon M10 MBB module (nominal power 560–585 Wp), only as a product reference. The shipment, prices, BoM and conversion costs are our assumptions, not claims about Spark Solar's purchasing or production.

The assumptions:

  • 144 cells per module, so a 14,400-cell shipment builds exactly 100 modules
  • No breakage, no rework, no production losses
  • Glass-backsheet construction, chosen only to demonstrate the costing
  • USD 1 = ₹85, a fixed rate for the arithmetic, not a live or accounting rate
  • GST isn't modelled

Why doesn't the supplier invoice show the real cell cost?

Because the invoice covers only the goods. In this example the supplier bill is ₹2,44,800, but bringing those cells into the factory costs ₹3,65,300 once freight, insurance, duty and clearance are counted. Roughly one rupee in three of the true cell cost arrives on bills that never mention a solar cell.

That's the core problem. Freight comes from a forwarder, duty from customs, clearance from a CHA, often weeks apart. Each bill gets paid and booked correctly. But unless someone ties them back to the receipt, inventory still carries the cells at ₹17 each, and every manufacturing order consumes them at ₹17.

The result is quiet: understated product cost, margins that look better than they are, and quotations priced off a number that was never complete. It's the same disconnect we see across manufacturing businesses running on spreadsheets, just with larger import bills.

Step 1: How do you record the imported-cell purchase in Odoo?

Create the purchase order in the supplier's currency, then validate the receipt when the cells arrive. Here, 14,400 cells at USD 0.20 each gives a USD 2,880 invoice, which converts to ₹2,44,800 at the assumed rate. That puts the base cost at ₹17.00 per cell.

Purchase detailIllustrative value
Quantity purchased14,400 cells
Supplier price per cellUSD 0.20
Supplier invoiceUSD 2,880
Assumed exchange rateUSD 1 = ₹85
Supplier invoice value in INR₹2,44,800
Base purchase cost per cell₹17.00

Validating the receipt matters more than it looks. The landed cost record in Odoo attaches to a validated receipt (a stock transfer), not to the purchase order. No validated receipt, nothing to allocate against.

Step 2: Which import expenses belong in landed cost?

Expenses incurred to bring the goods to their current location and condition belong in landed cost. In this example that's ₹1,20,500 across five lines, with freight and customs duty making up 75% of it.

Import expenseIllustrative amount
International freight (USD 500 × ₹85)₹42,500
Insurance₹5,000
Customs duty₹48,000
Port and customs clearance₹18,000
Other eligible import expenses₹7,000
Total additional landed costs₹1,20,500

The duty figure is hypothetical. It isn't the statutory rate for any real solar-cell import.

What usually doesn't belong? Recoverable taxes. Import IGST that you claim back as input credit is normally a receivable, not inventory cost, while basic customs duty that you can't recover is. Which lines qualify depends on your tax position, so confirm the treatment with your CA before you configure the landed-cost products.

Step 3: How does Odoo landed cost allocation work?

Odoo's Landed Costs feature takes expenses booked on separate vendor bills and adds them to the value of the stock they relate to. You mark the expense as a landed-cost product on the bill, create the landed-cost record, pick the validated receipt, compute, review and validate.

Odoo offers five split methods, set per cost line:

Split methodHow it spreads the costFits
EqualSame amount per receipt lineSmall fixed fees
By QuantityPer unit receivedSingle-product shipments
By Current CostIn proportion to product valueDuty and insurance (value-based charges)
By WeightIn proportion to product weightSea and air freight
By VolumeIn proportion to product volumeLCL freight billed on CBM

In our example the container holds one product, so every method gives the same answer: ₹1,20,500 spread across 14,400 cells.

Mixed containers are where it goes wrong. Say the same shipment also carried junction boxes and ribbon. Split duty "By Quantity" and a ₹30 junction box absorbs the same duty as a cell worth far more, so cells come out understated and junction boxes overstated. Because Odoo sets the split method per cost line, you can send duty and insurance by current cost and freight by weight inside the same landed-cost record. In our experience that one setting decides whether the per-module numbers are usable.

Step 4: What's the new cost per cell after allocation?

About ₹25.37, up from ₹17.00. The landed cost formula is simple: (supplier value + eligible landed costs) ÷ units received. Here that's ₹3,65,300 ÷ 14,400 cells, an increase of roughly ₹8.37 per cell.

CalculationAmount
Original cell purchase value₹2,44,800
Additional landed costs₹1,20,500
Total landed inventory value₹3,65,300
Total cells received14,400
Original cost per cell₹17.00
Landed cost per cell≈ ₹25.37

At module level, the landed cost example looks like this:

Cell-cost comparisonPer module
Cell purchase cost before landed costs₹2,448
Landed costs allocated to 144 cells₹1,205
Cell cost after landed costs₹3,653

So what does ₹1,205 a module mean in practice? On a 1 MW order of 575 Wp modules (about 1,740 modules), it's roughly ₹21 lakh of cost that either sits in your inventory valuation or doesn't.

Timing matters as much as the method. Duty and clearance bills often arrive after the cells are already on the line. Once a manufacturing order has consumed cells, a later landed cost can't revalue the modules built from them; the share tied to consumed stock goes to the accounts rather than into those finished goods. We've found the practical fix is a process rule: no manufacturing order consumes an import lot until its landed-cost record is validated.

Want to check how your import bills currently flow into inventory?
Get a Costing Review

Step 5: How do you connect landed cell cost to an Odoo multi-level BoM?

Use nested BoMs, where each subassembly is a manufactured product with its own BoM. The landed cell value (₹25.37 each) then flows up through cell strings, the laminate and the finished module automatically, instead of being added by hand at the end.

An illustrative three-level structure:

Level 1: Cell strings

  • 144 solar cells
  • Ribbons and interconnects

Level 2: Laminate assembly

  • Cell-string assembly
  • Solar glass, encapsulant and backsheet

Level 3: Finished solar module

  • Completed laminate
  • Aluminium frame
  • Junction box, cables, connectors, sealants, consumables and packaging

This isn't Spark Solar's production structure; your BoM has to reflect your own design and material specs. Should every solar plant run three levels? Not always. A multi-level BoM earns its keep when you stock or track strings and laminates separately. If you don't, a flatter BoM with operations is easier to run. We cover the same tradeoff for formulation and fill BoMs in cosmetics.

Step 6: What's the total solar panel manufacturing cost per module?

₹9,603 in this example, of which ₹8,353 is material and ₹1,250 is conversion. Cells, after landed cost, are the single largest line at 38% of the total.

Cost component per moduleIllustrative cost
Solar cells, including landed costs₹3,653
Ribbons and interconnects₹650
Solar glass₹1,150
Encapsulant materials₹700
Backsheet₹450
Aluminium frame₹850
Junction box, cables and connectors₹450
Sealants and consumables₹150
Packaging₹300
Total material cost₹8,353
Labour₹450
Energy₹250
Production overhead₹550
Illustrative total manufacturing cost₹9,603

Illustrative cost breakdown of a 144-cell solar module (₹9,603) Cells (incl. landed cost)₹3,653 Solar glass₹1,150 Aluminium frame₹850 Encapsulant₹700 Ribbons and interconnects₹650 Production overhead₹550 Labour₹450 Backsheet₹450 Junction box and cables₹450 Packaging₹300 Energy₹250 Sealants and consumables₹150 Illustrative 7Span worked example. Amber = cells, grey = other materials, slate = conversion.

Illustrative solar panel manufacturing cost breakdown for one 144-cell module. Source: 7Span worked example.

All values are hypothetical and rounded. Odoo Manufacturing builds the manufacturing-order cost from the BoM components plus the operations, work-centre costs and employee costs you configure, the same way we set up warping, sizing and weaving lines for textile mills.

How much does landed cost change the cost per watt?

By about ₹2.10 per watt in this example. Without landed costs the module would cost ₹8,398; with them, ₹9,603. On a 575 Wp module that's ₹14.61 per watt versus ₹16.70 per watt.

Module cost viewPer modulePer watt (575 Wp)
Supplier invoice only₹8,398₹14.61
With landed costs allocated₹9,603₹16.70
Gap₹1,205 (12.5%)₹2.10

Across the 560–585 Wp range of the reference module, the landed-cost figure works out to ₹16.42–₹17.15 per watt. That's why a solar module cost per watt quoted off invoice prices alone can be off by more than two rupees before anyone touches the margin.

FIFO or AVCO: which costing method fits landed cost?

Either works, and nothing else does. Odoo applies landed costs only to products whose category uses automated (real-time) inventory valuation with FIFO or AVCO. On standard price, the landed cost doesn't revalue stock the same way.

MethodHow it works
FIFO (First In, First Out)Keeps a cost layer per receipt. The landed cost lands on that receipt's layer, and consumption draws from the oldest layers first.
AVCO (Average Cost)Recalculates a weighted-average unit cost as stock is received and revalued. The landed cost shifts the average for all units on hand.

Which should you pick? FIFO keeps each container's landed cost tied to its own cells, which helps when duty or freight swings sharply between shipments. AVCO smooths those swings and is simpler to read. Either way, it's a design decision for the first phase, not something to change after a year of postings.

What this means for a solar module business

When the landed cost of imported goods reaches inventory, five things get more reliable:

  • Pricing. Quotations start from the full module cost, not the invoice cost.
  • Margins. Profitability by order or dealer isn't flattered by a missing ₹1,205.
  • Inventory value. Cell stock on the balance sheet reflects what it actually cost to land.
  • Production planning. You can see which subassemblies carry the cost.
  • Reporting. Purchase, inventory and manufacturing data sit in one place, ready for 

Some needs go past standard configuration, such as provisional duty accruals before the customs bill arrives, or automatic landed-cost creation from a CHA's statement. Those belong in scoped custom development, not assumed out of the box. If you're also running continuous or batch processes elsewhere, our post on Odoo MRP for process manufacturing covers how the same costing logic carries over.

Get the full module cost into Odoo

When purchasing, import bills, inventory and manufacturing run as separate processes, the real cost of a finished module stays partly invisible. Standard Odoo already connects them: purchase, landed-cost allocation, FIFO or AVCO valuation and multi-level BoMs. The work is in the design decisions, such as costing method, split methods per charge and when manufacturing orders may consume an import lot.

For the rest of the operation, from lot tracking and flash testing to serials and dealer dispatch, read Odoo ERP for solar module manufacturing.

Map one of your recent import shipments from supplier bill to finished-module cost
Book a ERP Demo

Frequently Asked Questions

Can standard Odoo include freight and customs duty in inventory valuation?

Yes. Odoo's Landed Costs feature adds freight, insurance, customs duty and other eligible charges to the value of a validated receipt. In our example that moves the cell cost from ₹17.00 to about ₹25.37. The product category must use automated valuation with FIFO or AVCO for the revaluation to apply.

What is the landed cost formula for imported solar cells?

Landed cost per unit equals supplier value plus eligible import expenses, divided by units received. Here that's (₹2,44,800 + ₹1,20,500) ÷ 14,400 cells, or about ₹25.37 per cell. Recoverable taxes such as import IGST claimed as input credit are normally left out.

Which Odoo landed cost split method should I use for a mixed shipment?

Set it per cost line. Value-based charges such as customs duty and insurance usually fit "By Current Cost", and freight usually fits "By Weight" or "By Volume". "By Quantity" works only when every unit carries similar value, which a container of cells and junction boxes doesn't.

Is landed cost per module the same as the supplier's cell price?

No. In this example the supplier price works out to ₹2,448 of cells per module, while the landed cell cost is ₹3,653. The full manufacturing cost of ₹9,603 then adds glass, frame, encapsulant, other materials, labour, energy and overhead from the BoM and operations.

Nikunj Shekhada
ERP Consulting Partner
Nikunj is an expert in Odoo and Magento, creating ERP systems and e-commerce stores that help businesses run more efficiently. His love for solving complex problems makes him the go-to guy for businesses looking to streamline their operations.
India (HQ)

201, iSquare Corporate Park, Ahmedabad-380060, Gujarat, India

+91 77 97 977 977
Canada

24 Merlot Court, Timberlea, NS B3T 0C2, Canada

+1 902-333-0067

For Sales

YO@7SPAN.COM

Looking For Jobs

Apply Now
Making It Possible Light