Subcontracting in ERPNext
Subcontracting is a type of job contract that seeks to outsource certain types of work to other companies. It allows work on more than one phase of the project to be done at once, often leading to quicker completion. It is practiced by various industries.
For example, manufacturers who make a number of products from complex components subcontract certain components and package them at their facilities.
If your business involves outsourcing certain processes to a third party Supplier where you supply the raw materials and the third party does the labor/production, you can track this by using the subcontracting feature of ERPNext. In ERPNext v16, you can also manage subcontracting directly from Job Cards with support for Subcontracted Operations, allowing you to create Subcontracting Purchase Orders against those Job Cards. Additionally, the system supports valuation rate tracking and batch/serial no. transfer to subcontractors, and automates receipt of finished goods after subcontracted processing.
How to manage subcontracting in ERPNext?
For demonstrating the outsourcing, we are considering below scenario:
A manufacturer of flowers produces raw, uncolored flowers. These flowers are packed in cartons (1 Carton = 1000 flowers) and sent for coloring to external vendor.
- In Item Master of subcontracted item, ensure that you have enabled the option, "Supply Raw Materials for Purchase". In our example, the Item is "RM-111-Colored Flower"
- Create a BOM (Bill of Material) for the subcontracted Item and include the raw materials that you send to the subcontractor so as to get the finished/semi-finished product. There will be no operations in this BOM since the activities are not done at manufacturer's end. In our example, the BOM of RM-111-Colored-Flower is as below:
- Now, you need to create the Purchase Order for procuring this Item from the external party/vendor. Ensure that you select "Yes" for the field, "Supply Raw Materials" and then select the warehouse from which the raw materials will be transferred to the vendor. Note that this can also be a virtual warehouse just to stand as a placeholder for making the Stock Entry when transferring materials to the vendor. Below is the Purchase Order as per our example:
In ERPNext v16, after creating the Purchase Order with subcontracting enabled, the system will prompt you to create a Stock Entry of type ‘Send to Subcontractor’, moving raw materials from the selected warehouse to the Supplier Warehouse. Upon receiving the finished goods, ERPNext will automatically account for the consumption of raw materials and receipt of the finished/semi-finished product into your inventory. The valuation is adjusted accordingly based on the material rate and subcontracting charges defined in the Purchase Order.
Note: The rate of the Item entered here will be your Service Cost rate.
- There is also another child table that shows the status of the raw materials to be transferred against this Purchase Order. In that table, you need to select the "Reserve Warehouse" from which the raw materials will be transferred to the virtual vendor warehouse that we selected in previous step. This table also tells you how many items have been supplied already, in our case, it is zero since we are yet to submit the order and supply the raw materials.
Note: In ERPNext v16, this child table now also supports tracking Batch Numbers and Serial Numbers (if enabled) for raw materials. This allows better traceability of components sent to the subcontractor. You can also view “Pending Qty” and “Last Transferred On” details for better planning.
- After submission of the Purchase Order, there will be a button, "Transfer" for creating the Stock Entry to transfer raw materials to the external vendor:
- The Stock Entry type will be "Send to Subcontractor".
- The system will auto-fill raw material details, valuation rate, and source/target warehouses based on the Purchase Order and BOM.
If batch/serial tracking is enabled for any raw material, you must select the batch or serial number before submitting the entry.
Once the Stock Entry is submitted, the child table in the Purchase Order is also updated to reflect the transferred quantity under "Supplied Qty".
Note: ERPNext v16 introduces support for partial supply tracking. When raw materials are sent in multiple transfers, the "Supplied Qty" and "Pending Qty" fields are updated accordingly. This helps in staggered production and subcontracting schedules.
- As in when you receive the semi-finished/finished goods from the vendor, you can create Purchase Receipt against this Purchase Order:
- Upon selecting the linked Purchase Order, the system fetches the service item, rate, taxes, and terms.
- The system checks if sufficient raw materials have been transferred before allowing submission of the receipt.
Batch or Serial No. for the received item can be recorded if applicable.
Note: In ERPNext v16, the system also calculates the valuation rate of the received item based on both the cost of raw materials supplied and the service cost entered in the Purchase Order. This ensures accurate landed cost and stock value.
The next steps for invoicing follow as per regular Buying Cycle.
Purchase Order -> Purchase Receipt -> Purchase Invoice.
- Purchase Invoice created for this transaction: (Print Format Preview)
- The Purchase Invoice reflects the service cost charged by the subcontractor.
- If taxes or charges are applied in the Purchase Order, they are carried over to the invoice.
- The invoice can be linked to both the Purchase Order and Purchase Receipt for full traceability.
Note: ERPNext v16 allows cost center and accounting dimension mapping for service items in subcontracting invoices. This helps in reporting and budgeting of subcontracting expenses more effectively.