What ERPNext subcontracting inward does for a contract manufacturer
ERPNext subcontracting inward is for contract manufacturers whose customers ship their own raw materials and pay only for the conversion service. You need it when the material on the shop floor belongs to someone else, the invoice is a service charge rather than a product sale, and the customer still expects traceability of what came in and what went out. Without it, the team usually records customer material as its own stock, which distorts valuation, inflates inventory and muddies the billing basis. The core distinction is ownership. Customer-owned material sits in the warehouse but is not an asset of your company, so it should not be valued into your stock or carried in your cost of goods. Your own stock is material you bought and paid for, and it is valued and costed accordingly. ERPNext 16 is designed to keep these two pools apart, but the exact document flow, the fields that mark material as customer-supplied, and how the conversion charge is billed must be confirmed against the ERPNext 16 documentation for the minor release you run, since these details change between releases.
Before you configure anything, ask your implementation team to walk through three questions with your finance and operations leads: which warehouse or stock location holds customer material, how the conversion charge is priced and invoiced to each customer, and what the customer receives back when finished goods leave the plant. Write the answers down as the design basis. Then check that the entry types you plan to use exist in your installed version, that customer material is reported separately from your stock in valuation and stock reports, and that returned or scrapped customer material can be accounted for without touching your own inventory value. The main risk is reconciliation at month end. If customer material and your own stock are mixed in one warehouse without clear identification, you will struggle to show each customer what was received, consumed and returned. Plan that reconciliation report during design, not after the first billing cycle, and confirm with the vendor documentation how it is produced in your version.
Which inward subcontracting setup fits your customer material flow
This table compares three operating models a contract manufacturer may run for customer-supplied material: kits consumed in one order, material held across several orders, and mixed plants sharing warehouses with own stock. Read each row as a decision you must make before go-live, then check the column that matches your material flow. The main takeaway is that the more customer material overlaps with your own stock, the more the record keeping, valuation and scrap rules need to be settled up front.
| Decision point | Customer kits consumed in one order | Customer material held across orders | Mixed plant with shared warehouses |
|---|---|---|---|
| What the team records | Receipt of the customer kit, the conversion order and the finished output, usually tied to a single customer order | Receipt, holding location and consumption against each order, with a running balance of customer material per customer | Ownership of each stock line, separating customer-owned quantities from your own in every warehouse movement |
| What drives valuation | Little or no value on your books for the kit; billing is driven mainly by the agreed conversion service | Customer-owned stock must stay outside your inventory valuation, so reconciliation of held quantities at period close matters | Risk of customer material being valued into your stock; the separation rule must be clear before any transfer |
| What drives billing | Agreed conversion charge per unit or per order, with any material recharges set out in the contract | Billing per order as consumption occurs, plus any storage or handling terms agreed with the customer | Billing depends on the correct split of consumed quantities, so mixed stock raises the risk of charging the wrong party |
| Scrap and losses | Scrap typically sits with the party named in the contract; confirm who bears loss on each kit | Scrap and shortages on held stock need agreed reporting and a rule for who is liable for losses | Scrap from mixed stock needs owner attribution, otherwise customer losses can be absorbed into your own cost |
| Returns of unused material | Unused kit parts go back to the customer, so the return must be recorded against the original order | Surplus returned to the customer is recorded per customer and per lot, with the remaining balance agreed at close | Returns must be routed to the correct owner, which requires a clean ownership split at receipt |
| Traceability and lot control | Usually limited to one order, so lot records focus on the kit and the finished unit | Lot and serial traceability matter across orders, especially where customer parts carry their own certificates | Traceability must hold in shared bins, so segregation and labelling rules are central |
| Typical risk to test first | Missing or wrong kit quantities on the conversion order | Balances that drift from the customer's own records | Ownership errors during transfers and count adjustments |
| Questions to confirm with your team | Who owns scrap and shortages, and how quickly must unused parts be returned? | What balance statement does the customer expect, and how often? | Can customer and own stock be physically separated, and who signs off transfers between them? |
How to set up inward subcontracting in ERPNext 16, step by step
This sequence takes a contract manufacturer from a confirmed ERPNext 16 release to a tested inward subcontracting cycle, with customer-owned material tracked separately, the conversion service billed at the agreed rate, and scrap reconciled before go-live.
Confirm the release and feature documentation
Before building anything, confirm which ERPNext 16 minor release your environment runs and read the subcontracting inward documentation for that exact release, since behavior can differ between minor versions. Your ERP lead and the implementation partner should record the release number in the project file. You know this step is done when the team can point to the documented steps for receiving customer material, and when the release used in the test environment matches the one used in production planning. Check the release notes in the frappe/erpnext releases history for any changes that affect stock or manufacturing.
Define item and warehouse structure for customer material
Create separate item codes for customer-owned raw materials and for your own stock, and set up warehouses or warehouse groups so customer material is held apart from company stock. Agree with finance how each customer's material is identified, whether by item, batch or serial number, and how the owner is recorded. Confirm with the customer that their material must never be issued against your own orders. You know this step is done when a test receipt of customer material lands in the customer-designated warehouse and a stock ledger report shows it under the correct owner, not in company valuation.
Configure the conversion item and its pricing
Create the service item that represents the conversion work, set it as a non-stock service item, and enter the agreed conversion rate on the price list for each customer. Decide how the rate is expressed (per unit, per operation or per batch) and whether any scrap allowance is included. Finance should confirm tax treatment and the income account for the service. You know this step is done when a sales order for the conversion service shows the agreed rate, and a draft invoice calculates the same amount from the test quantity without manual overrides.
Set up the bill of materials for the conversion
Build the BOM that describes how the customer's material is converted into the finished good, and confirm that it references the customer material item and the conversion service rather than your own purchased stock. Verify that the BOM quantities match the customer's agreed specification and that the scrap or loss allowance is entered where it applies. Engineering and production should sign off the BOM before the test order. You know this step is done when the BOM costing view shows the expected material consumption for one unit and the test work order can be created from it.
Run a test order from receipt to delivery
Run one small test cycle end to end: receive a test quantity of customer material, create the subcontracting order, transfer material to the supplier or production warehouse, record the finished goods receipt, and deliver the finished goods to the customer. Use illustrative quantities that are easy to trace by hand. Keep each document and its stock movement in a test log. You know this step is done when every document in the chain is submitted, the customer material has moved through the expected warehouses, and no company stock was consumed.
Verify stock balances by owner
Run the stock balance and stock ledger reports for the customer warehouse and the company warehouse after the test. The customer material balance should show only the quantity received minus the quantity converted and scrapped, and the company balance should be unchanged. Compare these figures against the test log line by line. You know this step is done when every quantity reconciles and the team can explain any difference before moving on.
Reconcile the invoice and scrap report
Check that the delivery and the invoice for the conversion service match the agreed conversion rate multiplied by the converted quantity, and that the invoice references the correct customer. Then run the scrap report and confirm that received material equals converted material plus scrap plus any remaining balance. Finance and operations should review the reconciliation together. You know this step is done when the invoice amount matches the expected figure, the scrap report balances to the penny of material quantity, and the test file is archived as the baseline for production.
Document the procedure and confirm the go-live checks
Write the procedure the production and warehouse teams will follow, including the customer material receipt checklist, owner-specific stock checks and month-end reconciliation steps. Ask your implementation partner to confirm which of these steps can be automated or validated by reports, and which need a manual control. Agree who approves each step before production volumes start. You know this step is done when the procedure is approved, the team has run a second dry cycle without assistance, and the reconciliation checks are scheduled for each close.
How the setup changes by customer model
A customer who sends a complete kit for one product expects every component to be tracked against that product's order. The first question for your team is which items belong to the customer and which belong to you, and that answer should be settled before the first delivery arrives. (Illustrative) A customer sends kits of ten parts for one assembly, and your plant adds fasteners and labels from its own stock. Keep the two sets of items in separate item codes so the customer's stock can be counted, reported and returned without touching your purchased stock.
- Customer-owned item codes: Give each customer component its own item code so purchasing planning does not treat it as your stock.
- Dedicated customer warehouse: Hold received kit parts in a warehouse set aside for that customer, so the balance shows exactly what remains to be built.
- Kit completeness at receipt: Record which parts arrived and which are missing, so a short kit is visible before a work order is started.
- Conversion service billing: Keep the conversion charge on a service item separate from materials, so the invoice shows the process fee without pricing the customer's parts into your sales.
- Returns of unused parts: Agree how leftover kit components go back to the customer and record each return against the customer's stock.
Check that the customer's stock balance can be run on its own and that each service invoice references the work order that consumed the kit.
A customer who sends bulk material, such as coil, sheet or bar, for cutting, forming or treatment in several steps creates a chain of ownership. Each operation consumes part of the customer's material and produces output that may still belong to the customer, so the team has to follow one lot through every step. (Illustrative) A coil of metal is slit into strips, the strips are cut to length, and the offcuts are either returned or scrapped.
- Lot identity through steps: Carry the customer's batch or lot number onto every intermediate output so each step traces back to the original receipt.
- Yield and process loss: Record expected yield for each step beside actual output, so the difference shows as loss and does not disappear into the balance.
- Scrap and offcut ownership: Decide whether offcuts go back to the customer, are scrapped under an agreed allowance or are billed, and set a warehouse or status for each outcome.
- Intermediate stock by operation: Track semi-finished output per operation so the system shows what is waiting for the next step.
- Split lots: Expect lots to divide when only part of a coil is needed, and plan how each child lot keeps its link to the original receipt.
The reports that prove ownership here are the stock ledger filtered by batch, the stock balance by warehouse and the scrap entries. Check that input quantity, output, scrap and returned offcuts reconcile to zero for every lot before invoicing.
A manufacturer that serves several customers from one plant shares machines, staff and sometimes warehouses across owners. The risk is not that the system cannot hold the data, but that a receipt, a consumption or an invoice is posted under the wrong owner. (Illustrative) Two customers send similar bar stock to the same saw, and a single job card covers both runs. The team must decide up front how each owner's material, time and charges are recorded.
- Owner on every receipt: Record the customer on each receipt line and keep that link through work orders and deliveries, so balances can be split by owner.
- Warehouse separation or tagging: Decide whether each customer gets its own warehouse or whether one warehouse is tagged by owner, and confirm how your version reports the owned balance.
- Shared process runs: When one machine run processes material for two customers, agree how time and consumption are apportioned and record that basis on the job card.
- Customer-specific billing: Price conversion per customer and confirm each invoice pulls only the operations and quantities for that owner.
- Access restrictions: Limit which users can view or post for each customer, so one customer's stock and pricing stay out of another customer's view, and confirm the permission model in your version.
The most likely manual corrections are receipts tagged to the wrong customer and apportionment of shared runs. Run a per-customer stock balance and a per-customer invoice reconciliation for the same period and confirm they agree.
What changes for finance when the material belongs to the customer
Customer-owned material stays off the manufacturer's balance sheet and out of its stock valuation. In a subcontracting inward arrangement, the manufacturer holds the customer's raw materials for processing but does not buy them, so they should not appear as the manufacturer's inventory value, purchase cost or stock ledger balance. Finance needs to confirm with the ERPNext 16 documentation how the Subcontracting Inward workflow records receipt of customer material against the work it supports, and to check that no valuation rate is applied to those items in the company's reports. Keep the customer's material in a separate warehouse or tracking structure so that the company's own stock figures stay clean at period close.
Finance still has to track three things. The first is the conversion service revenue, which is billed for the processing work and not for the material itself, so the invoice line and the revenue account should reflect a service charge. The second is the cost of processing, meaning labor, overhead, consumables and any scrap the manufacturer absorbs, which belongs in the company's own cost records. The third is the reconciliation between material received, material consumed in the finished output, material returned to the customer and material scrapped. Any difference between received and accounted-for quantities should be explained and approved before the period closes, because it determines whether the manufacturer owes the customer material or a credit.
The accounting treatment, any value-added tax handling and any customs or import treatment depend on the company's jurisdiction and on the terms of the contract. Ask the company's accountant or tax adviser to confirm how customer-owned material, scrap and returns are treated locally, and check the current ERPNext 16 documentation for the exact fields and entries the workflow uses before the first live batch. Agree those answers with the customer in writing so that disputes about who owns leftover or scrapped material are settled before they reach the ledger.
Where inward subcontracting setups break in practice
Inward subcontracting fails less often in the shop than in the records around it. The cards below cover the points where customer material, yield and agreed rates drift out of ERPNext, and the check that keeps each one visible before it becomes a billing or inventory dispute.
Customer material mixed into own stock
Customer-owned material sits in the same warehouse bins as purchased stock. When receipts are booked as ordinary purchases or left unrecorded, the company can consume, sell or value goods it does not own. Check that customer material is received against the subcontracting order into a warehouse flagged for customer stock, and that a stock reconciliation confirms the customer quantities at each period close.
Unreconciled scrap and yield losses
Customer material consumed as scrap or lost in process is often written off informally, so the customer's quantity and the company's records disagree. The gap surfaces at invoicing or in a dispute. Check that scrap and process loss are recorded on each manufacture entry with the scrap items defined in the BOM, and that the customer receives a yield statement that ties back to the entries.
Conversion rates agreed by email
Service rates, minimum charges and rework terms agreed in correspondence never reach the item prices or the billing rules in ERPNext. Invoices then follow whoever prepares them. Check that each customer's conversion rate is held as a priced service item or price list entry tied to the subcontracting order, and that the approved rate sheet is the only source for invoice lines.
Returns of partly processed material
When a customer rejects or cancels partly processed goods, the returned material may not match any single receipt or finished item. Stock is then either written off or returned to the wrong owner. Check that every return to the customer is a documented movement referencing the original receipt and operation, and that the remaining customer-owned balance is reviewed before the return is closed.
Historic data without owner tags
Migrated stock and open orders often arrive without any marker showing who owns the material. Inherited balances then get billed or consumed as company stock. Check that every migrated customer balance is loaded with its owner identified and reconciled to the customer's own statement before go-live, and that the import is validated on a test site first.
What buyers ask before they set up inward subcontracting
How long does setting up ERPNext subcontracting inward take?
The timeline depends on the scope, so ask for a duration in the written plan rather than assuming one. The main drivers are the number of customers who send materials, whether those materials need serial or batch tracking, how many rate and conversion rules must be configured, and how well your existing item master and chart of accounts map to the new process. Master data often takes the longest. The Data Import tool documentation advises importing only a few thousand records at a time, so large customer and item lists add loading rounds and checks. Ask the provider to break the effort into design, configuration, data loading, testing and training, with a named owner and an exit check for each phase.
What drives the cost of an inward subcontracting setup up or down?
Cost has two parts: one-time setup and recurring running costs. One-time work covers scoping, configuring the subcontracting inward flow, loading data, building any custom reports or scripts, testing and training. Recurring costs cover hosting, support, upgrades and any retained testing. The software itself is free to self-host, according to the ERPNext pricing page, which also lists Frappe Cloud shared site hosting from 5 US dollars per month and Frappe Cloud servers from 20 US dollars per month for shared instances and 125 US dollars per month for dedicated servers. Costs rise with the number of customers and item variants, the depth of rate and tax logic, integrations with your shop floor or bank, and the number of custom rules. A quote should show each item separately, its owner and whether it recurs.
What must our team provide before a partner can start?
Your team must supply the business rules and master data before design begins. The core inputs are:
- Customer contracts or terms that state who owns supplied materials, how shortfalls and scrap are handled and how the conversion service is billed
- Rate cards for each conversion service, with units, minimum charges and currency
- Item lists for customer-supplied materials and your finished goods, including units of measure and any serial or batch requirements
- A warehouse plan showing where customer stock is received, held and kept separate from your own stock
- Your chart of accounts, tax treatment and the named people who approve each rule
Gaps in these inputs tend to extend the design phase, so ask the provider to list every missing input in writing before the scope is agreed.
Can an in-house team set up ERPNext inward subcontracting without a partner?
Yes, an in-house team can do it if it has ERPNext configuration skills, accounting knowledge and time to test. ERPNext is free and open source under GPL-3.0, and you can install it on Frappe Cloud, with Docker Compose or with the bench command line tool. The harder work is business design: contract terms, pricing, valuation and the audit trail for customer property. Your team should check whether it can write and maintain custom code, whether it runs its own servers and how quickly the process must go live. Certified partners are one implementation option, according to the ERPNext pricing page. A practical check is to match your team's skills against each input and test in the scope and identify the gaps before you decide.
Which ERPNext version should we choose for subcontracting inward?
Choose a supported version and confirm its support dates before you commit to a design. Frappe's supported versions page lists version 16 as supported until the end of 2029 and version 15 until the end of 2027, while version 14 reached end of life on January 31, 2026. Releases are frequent: the ERPNext releases page shows v16.51.1 released on October 15, 2026. Frappe warranty coverage requires a listed version and a matching Frappe Cloud support plan, so check that alongside your hosting choice. Ask the provider which version the subcontracting inward features were tested on, and whether any behavior differs between versions 15 and 16, since a later upgrade has its own cost and testing effort.
Do customer-supplied materials need special controls in ERPNext?
Yes. Customer-supplied materials are not your stock, so they need separate tracking, clear valuation rules and records you can show an auditor. Confirm in the version 16 documentation how the subcontracting inward flow records receipt, consumption, returns and any shortfall or scrap of customer material, and whether serial or batch numbers carry through to billing. Ask the provider to test a full cycle: receipt, a production job, a partial return, a scrap case and the final invoice. Holding customer and own stock in one warehouse without a clear ownership field can lead to disputes over who owns the material and what can be billed.
Who can see and change customer material records in ERPNext?
Control access through roles and user permissions, and test them before go-live. LDAP login maps Active Directory or OpenLDAP groups to ERPNext roles at each login, so your directory group design largely decides who sees what. Frappe Social Login can handle sign-in through providers such as Microsoft or custom OpenID Connect endpoints. Custom validation written as Server Scripts is disabled by default from version 15 and must be enabled with the server_script_enabled setting. Frappe Cloud public shared benches do not allow them, so a rule that blocks a job without a valid customer contract reference may need a dedicated or self-hosted site. Confirm this before you choose the hosting model.
How do we load existing customer and item data without errors?
Load data in batches with the Data Import tool, then reconcile each batch before starting the next. The tool imports and updates records from CSV or Excel files or public Google Sheets, using downloadable templates, and it supports child table rows such as rate lines. The Data Import documentation advises importing only a few thousand records at a time, so plan batches by record type and dependency order: customers and items first, then rate cards, then opening balances. Keep the source files under version control, run a test import on a copy of the site and ask the provider to show reconciliation totals for each batch. Errors in opening balances are harder to correct once transactions exist.
Securing customer material records and the plant network
Customer-owned material is the asset most likely to cause a dispute, so access to it should be designed before any receipt is posted. In ERPNext, the controls sit in role permissions, and the practical unit is usually the company or warehouse that holds the customer's stock. Decide which roles can create a subcontracting receipt for customer material, which can run the conversion, and which can see the valuation or pricing of the service. Keep the people who receive goods separate from those who bill the conversion where your team is small enough to allow it, and check that a user permission restricting a role to one company or warehouse also covers the reports and the stock ledger, not only the form. Confirm these behaviors against the ERPNext version you run, since permission handling for customer-supplied stock is a configuration exercise rather than a default.
Sign-in is the second control. If your organization already runs Active Directory or OpenLDAP, the ERPNext LDAP integration maps directory groups to ERPNext roles at each login, so a leaver loses access when the directory account is disabled and not only when someone remembers to edit an ERPNext user. Where the organization uses a identity provider such as Google, Microsoft or a custom OpenID Connect endpoint, Social Login Key covers that path. Enable two-factor authentication for anyone who can change pricing or stock. Be aware that server scripts are disabled by default from version 15 and must be turned on with the server_script_enabled setting, and that Frappe Cloud public shared benches do not allow them. If your conversion rules depend on custom validation, choose a hosting model that permits it, or move that logic into a custom app before you commit to a platform.
If the plant connects its machines, controllers or test equipment to ERPNext or to the shop floor network, the scope widens beyond ERPNext. The ISA/IEC 62443 series sets security requirements for industrial automation and control systems, and NIS2 Annex II lists manufacturing as a critical sector. Whether either applies to your plant, and at what level, depends on your entity status, sector and network design, so this needs a formal assessment with legal and OT engineering input before integration work starts. Ask your advisers to confirm which network zones hold the ERP, which hold the equipment, and what crosses between them. A customer-material register that is trusted only because it sits behind a firewall is weaker evidence than one with documented access, separated networks and logged changes.
Limits to confirm in your environment before you commit
Subcontracting inward touches software versions, support coverage, contracts, regulated records and local tax rules at once. Each card below names one limit to settle before scope is fixed, and who on your side or the vendor's should answer it.
Exact ERPNext 16 feature set
Confirm which subcontracting inward functions exist in the minor release you plan to install, since ERPNext ships frequent patch and minor releases. Test receipt of customer-supplied materials, the off-book stock ledger treatment and the billing of the conversion service in a staging site before you sign. Ask your Frappe implementation lead to show the release notes and a working test entry for each step.
Version and support plan match
Check that your ERPNext and Frappe Framework version is on the supported versions list and that your Frappe Cloud support plan matches it. Warranty coverage from Frappe depends on this match, so a mismatch affects who fixes a defect. Ask your procurement and IT leads to confirm the plan tier with Frappe before you commit to a version.
Title and risk in customer contracts
Subcontracting inward means you hold a customer's material without owning it. Confirm with your legal team who holds title, who bears loss or damage while the material sits in your plant, and how scrap or excess returns are settled. These terms decide which stock entries and accounts must exist and whether customer material is ever valued in your books. Ask legal counsel to review the clauses before you configure warehouses.
Regulated record requirements
If the products fall under a regulated regime, such as 21 CFR Part 11 for electronic records and signatures, the ERP trail alone may not meet the standard. Confirm with your quality lead which records, approvals and audit trails the customer requires, and whether ERPNext's standard logs plus your validation work cover them. Ask the customer's quality team for their written requirements before design begins.
Local tax and customs treatment
Material received for processing and returned finished goods can trigger customs, VAT or sales tax rules that differ by country and by movement type. Confirm with your tax and customs adviser how each inbound and outbound movement is treated, and whether ERPNext's tax templates and accounts need country-specific setup. Ask your adviser to write the treatment for each movement before the first live transaction.
Hosting and access ownership
Confirm who in your organization administers the site, the database backups and the user roles that can see customer material balances. Customer-confidential stock levels often need restricted roles that differ from general inventory access. Ask your IT lead and your security team to agree on the admin model and access review cadence before go-live.
How DeployOpen scopes and delivers ERPNext subcontracting inward
DeployOpen plans, implements, customizes, documents and supports self-hosted open-source platforms inside your own infrastructure, and that applies to ERPNext subcontracting inward as well. We start from a written scope that sets out how customer-supplied materials, conversion services and billing will be configured in your ERPNext instance.
How we scope
- We map how customer-owned materials arrive, are recorded, and are returned or consumed in your current process.
- We agree the written scope, deliverables and timeline with you before any build work starts.
- We confirm with your team which ERPNext version and deployment method fit your environment and support needs.
How we build
- We configure the subcontracting inward setup in a non-production ERPNext site, then test it against real order flows from your team.
- We validate stock ledger, valuation and billing outcomes for customer-supplied materials with your finance and production staff.
- We add integrations, data imports or custom scripts only where the agreed scope requires them, and review them before go-live.
How we hand over
- We deliver configuration records, test results, and written procedures for receiving, tracking and invoicing customer materials.
- We train the users who will run receipts, production entries and billing so the process stays with your team.
- We document the configuration and any custom code so your team or another partner can maintain it later.
How we support
- Ongoing support, upgrades and continuous testing are available as a retainer after handover.
- We can plan ERPNext version upgrades and retest subcontracting inward flows before each upgrade reaches production.
- Ask us to confirm the support scope, response expectations and upgrade responsibilities in the written quote.

