Cost contract-manufacturing work without treating customer stock as a purchase
For finance, costing and accounts teams · Compare approaches
TL;DR — what you’ll learn
- Separate customer-owned free-issue stock (Zero-Purchase-Cost Custody Inventory) from company-owned purchased materials and consumables so inward contract-manufacturing jobs never inflate your inventory asset ledger or distort service gross margin.
- Track customer-supplied components in a dedicated Customer Stock Accountability Ledger using physical units and a shadow Contracted Replacement Liability Value—used strictly to measure yield-loss exposure against the customer's scrap allowance, not as a purchase cost of goods sold.
- Calculate True Conversion Service Margin by comparing contract service revenue (plus any billable material mark-ups or loss adjustments) against company-owned materials, direct assembly/test labour, machine conversion overhead, and excess customer-stock replacement liability.
- Reconcile physical customer material balances (Received = Shipped_In_Assemblies + Returned_Unused + Within_Allowance_Scrap + Excess_Payable_Loss) before issuing final job-work billing.

Illustrative manufacturing inspection room and machine shop floor; not a client facility.
Why standard BOM costing fails on inward job-work and toll manufacturing
In electronics manufacturing services (EMS), box-build industrial assembly, and inward toll/job-work plants, customers frequently supply high-value core components—such as bare printed circuit boards (PCBs), application-specific integrated circuits (ASICs), or precision enclosures—on a free-of-charge (FOC) custody basis, while the contract manufacturer supplies solder paste, passive components, fasteners, packaging, assembly labour, and automated optical/functional testing.
When a plant forces inward contract manufacturing through a standard make-to-order ERP workflow without separating ownership, two opposite accounting errors occur:
- Valuing customer stock as a company purchase (
Inflated COGS & Phantom AP): The ERP receives customer-owned chips at their commercial market value (₹2,200/unit) into a standard valued warehouse. This creates a phantom accounts-payable accrual (S18), overstates balance-sheet inventory, and makes a high-margin conversion service look like a low-margin hardware resale. - Receiving customer stock at zero value with zero scrap accountability (
Hidden Yield-Loss Liability): Conversely, if customer parts are received at₹0.00with no shadow liability rate or yield reconciliation, shop-floor operators and job-cost reports treat a ruined ₹2,200 customer microprocessor as a₹0.00scrap event—until the customer deducts the excess attrition loss from your conversion service invoice at month end.
Direct answer: To cost inward contract manufacturing accurately, maintain a dual-ledger model: (1) record customer-owned materials in a non-valued custody warehouse (S24, M018) at ₹0.00 balance-sheet purchase cost while tracking a separate memorandum unit replacement value and contractual attrition allowance, and (2) accumulate company-owned consumables, secondary materials, direct labour, and conversion overhead (M063) on the job order, adding a conversion cost charge for customer stock only when physical attrition exceeds the contracted free-issue scrap allowance.
As shown in ERPNext inward subcontracting documentation, customer-provided raw materials are received into a designated customer warehouse and tracked through production consumption and finished-good delivery separately from company-purchased items. Meanwhile, Microsoft Dynamics 365 accounts payable and financial matching controls govern purchased component invoices. Note that statutory financial reporting, revenue-recognition policy (principal versus agent treatment), and indirect tax/GST job-work rules must be approved by your Finance Controller and external auditors under applicable accounting standards.
Inward Contract-Manufacturing Dual-Ledger Costing and Custody Reconciliation
Follow the workflow below, or open its complete text version.
Read the complete workflow as text
- Receive Customer Order + Free-Issue Material Under Custody... → Post Customer Stock to Non-Valued Custody Warehouse (Balanc...
- Post Customer Stock to Non-Valued Custody Warehouse (Balanc... → Issue Company-Owned Materials & Consumables from Valued War...
- Issue Company-Owned Materials & Consumables from Valued War... → Execute Assembly & Testing: Capture Direct Labour, Machine...
- Execute Assembly & Testing: Capture Direct Labour, Machine... → Reconcile Customer Stock Mass Balance: Shipped Good + Unuse...
- Reconcile Customer Stock Mass Balance: Shipped Good + Unuse... → Excess Customer Stock Liability Charge = 0
- Excess Customer Stock Liability Charge = 0 → Compute Excess Liability Charge = Excess Lost Units x Agree...
- Compute Excess Liability Charge = Excess Lost Units x Agree... → Compute Conversion Service Cost = Company Materials + Labou...
- Compute Conversion Service Cost = Company Materials + Labou... → Finance Controller Verifies Custody Balance & Releases Serv...
Worked example: EMS control-board assembly with customer-owned ICs and company-owned packaging
The following scenario, component quantities, conversion rates, and margin figures are explicitly illustrative and use assumed values to demonstrate the separation of customer stock accountability from conversion service costing.
Suppose an electronics contract manufacturer (CM) executes Inward Job-Work Order JWO-2026-508 to assemble and test 500 industrial motor-controller boards (Assembly PCB-MC-900) for Customer OEM-TECH-04.
1. Ownership boundary and contractual terms
Under Contract MSA-OEM04-2026:
- Contracted conversion & assembly fee (includes company-supplied passive kit, solder consumables, and anti-static packaging): ₹680.00 per delivered good assembly (
500 good units × ₹680.00 = ₹3,40,000.00gross service & owned-material billing before tax). - Customer-supplied free-issue materials (
Zero balance-sheet purchase cost):- Bare 6-Layer PCB (
CUST-PCB-900): Customer supplies 510 units (500for build +10buffer). Contracted attrition allowance = 1.00% of good output (500 × 1.00% = 5 units). Memorandum replacement liability for excess loss = ₹450.00 per PCB. - Main DSP Microcontroller (
CUST-DSP-400): Customer supplies 510 units. Contracted attrition allowance = 0.40% of good output (500 × 0.40% = 2 units). Memorandum replacement liability for excess loss = ₹2,200.00 per IC.
- Bare 6-Layer PCB (
- Company-owned materials and conversion resources (
Valued on CM books):- Company-purchased SMD passive components & connectors (
OWN-KIT-900): ₹145.00 per completed board (500 × ₹145.00 = ₹72,500.00standard issue +₹1,160.00for passive kit scrap on ruined boards = ₹73,660.00 total). - Solder paste, flux, nitrogen & ESD shielding packaging (
OWN-CONS-900): ₹42.00 per completed board (500 × ₹42.00 = ₹21,000.00). - Direct SMT placement, selective soldering & ICT/functional test labour: 95.0 hours at ₹520.00/hour = ₹49,400.00.
- SMT line & automated optical inspection (AOI) machine overhead absorption: 45.0 machine hours at ₹1,600.00/hour = ₹72,000.00.
- Company-purchased SMD passive components & connectors (
2. Reconciling physical customer stock accountability and excess loss liability
During production of the 500 delivered good assemblies, shop-floor inspection records the following physical disposition of the customer's 510 free-issue units:
Scroll horizontally to see all columns.
| Customer free-issue item | Received qty (Custody_In) |
Embodied in 500 shipped boards | Scrapped in SMT/reflow (Actual_Scrap) |
Returned unused to customer (Custody_Return) |
Allowed scrap (Contract_Allowance) |
Excess chargeable loss (Actual − Allowed) |
Replacement rate (₹/unit) | Excess loss liability charge (₹) |
|---|---|---|---|---|---|---|---|---|
CUST-PCB-900 (Bare PCB) |
510 units |
500 units |
4 units |
6 units |
5 units (1.00%) |
0 units (4 ≤ 5) |
₹450.00 | ₹0.00 |
CUST-DSP-400 (DSP IC) |
510 units |
500 units |
5 units |
5 units |
2 units (0.40%) |
3 units (5 − 2 = 3) |
₹2,200.00 | ₹6,600.00 (3 × ₹2,200) |
Check the physical conservation and liability math for both customer items:
CUST-PCB-900conservation:500 (shipped) + 4 (scrapped) + 6 (returned unused) = 510 units received. Because actual scrap (4 units) is below the5-unitcontract allowance, excess chargeable loss is0 units(₹0.00).CUST-DSP-400conservation:500 (shipped) + 5 (scrapped) + 5 (returned unused) = 510 units received. Because actual scrap (5 units) exceeds the2-unitallowance by5 minus 2 = 3 units, the contract manufacturer incurs a contractual replacement/credit liability of3 units × ₹2,200.00 = ₹6,600.00.- Total memorandum value of customer stock embodied in the 500 shipped boards (
Not booked as CM purchase COGS or revenue):(500 × ₹450.00) + (500 × ₹2,200.00) = ₹2,25,000.00 + ₹11,00,000.00 = ₹13,25,000.00.
3. Comparing distorted "full-value purchase" accounting vs verified conversion service costing
See what happens if an ERP mistakenly books the 500 embodied customer PCBs and ICs (₹13,25,000.00) as company-purchased material vs keeping them in the custody ledger:
Scroll horizontally to see all columns.
| Cost / margin line item | Verified conversion service model (Custody Separated) |
Distorted model (Customer Stock Treated as Purchase & Gross Resale) |
Why separating custody matters |
|---|---|---|---|
Gross contract billing (500 × ₹680.00) |
₹3,40,000.00 | ₹16,65,000.00 (if inflated by ₹13,25,000 phantom stock value) | Customer never pays CM ₹13.25 lakh for their own free-issue chips. |
Less: Excess customer-stock loss credit (3 DSP ICs) |
−₹6,600.00 (or booked as direct job loss cost) | −₹6,600.00 | Explicitly visible as an operational yield penalty (3 × ₹2,200). |
| Net realised service & kit revenue | ₹3,33,400.00 | ₹16,58,400.00 (distorted) | Reflects actual cash receivable (₹3,40,000 − ₹6,600 = ₹3,33,400). |
Company-owned passive kit (OWN-KIT-900) |
₹73,660.00 | ₹73,660.00 | Actual company cash purchase cost (S18). |
Company-owned consumables & packaging (OWN-CONS-900) |
₹21,000.00 | ₹21,000.00 | Actual company inventory consumption. |
| Customer-owned stock purchase cost | ₹0.00 (held in custody ledger) | ₹13,25,000.00 (phantom COGS) | Prevents ₹13,25,000 phantom inventory and AP distortion. |
Direct assembly & test labour (95.0 h × ₹520) |
₹49,400.00 | ₹49,400.00 | Verified shop-floor labour routing cost. |
SMT & AOI machine overhead (45.0 h × ₹1,600) |
₹72,000.00 | ₹72,000.00 | Verified conversion overhead absorption. |
| Total conversion & owned-material cost | ₹2,16,060.00 (excluding ₹6,600 netted above, or ₹2,22,660.00 gross cost vs ₹3,40,000) | ₹15,41,060.00 (distorted) | ₹73,660 + ₹21,000 + ₹49,400 + ₹72,000 = ₹2,16,060.00. |
| Net conversion service margin (₹) | ₹1,17,340.00 | ₹1,17,340.00 | ₹3,33,400.00 − ₹2,16,060.00 = ₹1,17,340.00 (₹3,40,000 − ₹2,22,660 = ₹1,17,340). |
| Conversion service margin (%) | 35.20% of net revenue (34.51% of gross ₹3,40,000) |
7.08% (artificially compressed by phantom pass-through) | Preserves true conversion economics (₹1,17,340 ÷ ₹3,33,400 = 35.195%). |
Check the margin arithmetic:
- Before excess IC scrap (
Unpenalised Conversion Margin):₹3,40,000.00 (gross billing) minus ₹2,16,060.00 (company materials + labour + overhead) = ₹1,23,940.00(36.45%of gross billing). - Impact of losing 3 excess customer DSP ICs (
3 × ₹2,200.00 = ₹6,600.00):₹1,23,940.00 minus ₹6,600.00 = ₹1,17,340.00net margin (₹234.68profit per delivered board, reducing gross margin by1.94 percentage pointsfrom36.45%to34.51%).
Governance boundaries: Finance, Commercial, and Stores
Scroll horizontally to see all columns.
| Control area | Accountable owner | Required system configuration | Exception & audit boundary |
|---|---|---|---|
| 1. Customer stock receipt & warehouse segregation | Stores Lead & Finance Controller | Receive customer items into a non-valued Customer_Custody_Warehouse (S24, M018) with Valuation_Rate = ₹0.00 on general ledger |
Never book an AP trade liability (S18) for free-issue customer stock; store the Memo_Liability_Rate in a separate contract table. |
| 2. Owned consumables & secondary kit costing | Cost Accountant & Production Supervisor | Issue company-owned kits, solder, and packaging from valued warehouses to the job order (M063) |
Floor-stock consumables must be backflushed by approved BOM norms or issued by lot, not omitted from job cost. |
| 3. Scrap & attrition liability review | Quality Lead & Commercial Manager | Reconcile physical scrap tags against the contract's item-by-item attrition allowance | Disputed component defects (e.g., customer supplied oxidised bare PCBs) are flagged as Customer_Source_Defect_Excluded pending joint review. |
| 4. Service billing & custody statement sign-off | Finance Controller & AR Lead | Attach the reconciled Customer_Stock_Balance_Statement to the conversion service invoice |
Unresolved custody shortages stay open in a named Disputed_Custody_Variance account rather than being written off silently. |
Acceptance criteria for contract-manufacturing service costing
- Zero balance-sheet purchase inflation (
TEST-M067-01): Receiving 510 units of customer-ownedCUST-DSP-400increments physical custody quantity inCustomer_Custody_Warehouseby510while posting₹0.00to company inventory asset and AP accrual accounts. - Complete custody mass balance (
TEST-M067-02): Closing an inward job-work order requiresReceived_Customer_Stock = Embodied_In_Shipped_Goods + Returned_Unused + Scrapped_Within_Allowance + Scrapped_Excess + Open_Disputed_Shortage. - Explicit excess-attrition charge (
TEST-M067-03): When physical scrap of a customer component exceeds the contracted allowance (and is not flagged as a pre-existing customer material defect), the job-cost worksheet calculatesExcess_Units × Memo_Replacement_Rateas a visible margin deduction. - Reconciled conversion margin bridge (
TEST-M067-04): The job-cost report ties delivered assembly quantities to service billing, company-owned material issues, reported labour/machine hours, and approved attrition adjustments.
Synthesis and next actions
Accurate contract-manufacturing costing requires strict accounting separation between what you own and buy versus what you hold in custody and convert—while keeping the financial risk of damaging high-value customer stock visible on every job order.
- Segregate customer-supplied items into a non-valued custody warehouse (
S24): Configure your ERP so inward free-issue receipts never hit general-ledger inventory valuation or accounts payable (M018,S18). - Add a memorandum replacement rate and scrap allowance table to inward contracts: Store each customer component's allowed attrition percentage and agreed replacement charge on the contract header so job-cost reports quantify yield loss automatically.
- Require a customer stock reconciliation statement before final invoice release: Make AR service invoicing contingent on reconciling
Received = Shipped + Returned + Scrappedfor every free-issue line item (M066). - Separate factory conversion faults from defective customer-supplied inputs: Have Incoming and Line Quality log customer-supplied defects immediately so faulty free-issue stock is excluded from your contractual attrition penalty.
Compare this workflow with your current setup
Share the step that takes the most manual work, the systems involved and the exceptions your team handles. That gives us a concrete starting point for comparing approaches.
Sources and further reading
Sources checked 15 October 2026. Worked examples and workflow diagrams are original illustrations, not reported client results.

