ERPNext for contract manufacturers: subcontracting inward

ERPNext 16 subcontracting inward lets a contract manufacturer receive a customer's materials, track them outside its own stock and bill the conversion service. This page covers the setup decisions and what to confirm first.

On this page

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 pointCustomer kits consumed in one orderCustomer material held across ordersMixed plant with shared warehouses
What the team recordsReceipt of the customer kit, the conversion order and the finished output, usually tied to a single customer orderReceipt, holding location and consumption against each order, with a running balance of customer material per customerOwnership of each stock line, separating customer-owned quantities from your own in every warehouse movement
What drives valuationLittle or no value on your books for the kit; billing is driven mainly by the agreed conversion serviceCustomer-owned stock must stay outside your inventory valuation, so reconciliation of held quantities at period close mattersRisk of customer material being valued into your stock; the separation rule must be clear before any transfer
What drives billingAgreed conversion charge per unit or per order, with any material recharges set out in the contractBilling per order as consumption occurs, plus any storage or handling terms agreed with the customerBilling depends on the correct split of consumed quantities, so mixed stock raises the risk of charging the wrong party
Scrap and lossesScrap typically sits with the party named in the contract; confirm who bears loss on each kitScrap and shortages on held stock need agreed reporting and a rule for who is liable for lossesScrap from mixed stock needs owner attribution, otherwise customer losses can be absorbed into your own cost
Returns of unused materialUnused kit parts go back to the customer, so the return must be recorded against the original orderSurplus returned to the customer is recorded per customer and per lot, with the remaining balance agreed at closeReturns must be routed to the correct owner, which requires a clean ownership split at receipt
Traceability and lot controlUsually limited to one order, so lot records focus on the kit and the finished unitLot and serial traceability matter across orders, especially where customer parts carry their own certificatesTraceability must hold in shared bins, so segregation and labelling rules are central
Typical risk to test firstMissing or wrong kit quantities on the conversion orderBalances that drift from the customer's own recordsOwnership errors during transfers and count adjustments
Questions to confirm with your teamWho 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

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.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.