Under Section 143 of the CGST Act, inputs you send to a job worker must come back, or be supplied from the job worker's premises, within one year. Capital goods get three years. Miss that window and the original dispatch is treated as a supply on the day it left your gate, with tax and interest owed from then.
In textiles, that rule runs into a messy reality. A weaving mill sends 10,000 metres of grey fabric to a dyeing house. It comes back in four lots over five weeks. 200 metres are rejected, some go on to a printer, and 300 metres just aren't accounted for yet. Is that a shortage, process loss, or a GST exposure? With paper challans, WhatsApp updates and a separate accounting package, nobody can say for sure.
This guide covers job work under GST for textile manufacturers and process houses: what the challan has to carry, how to handle partial returns, when ITC-04 is due, and which parts Odoo covers as standard versus which need a custom build. It starts where our Odoo guide for textile mills ends, once grey fabric leaves the loom shed.
Key Takeaways
- Under Section 143 of the CGST Act, inputs sent for job work must return within 1 year and capital goods within 3 years, or the dispatch becomes a deemed supply.
- ITC-04 is half-yearly above ₹5 crore turnover and annual at or below it, due on the 25th after the period (Rule 45(3)).
- Standard Odoo moves the stock. The challan register, partial-return reconciliation and ITC-04 export are custom.
What is job work under GST?
Job work means processing goods that belong to someone else. Section 2(68) of the CGST Act defines it, and Section 143 lets a registered principal send inputs or capital goods to a job worker without paying tax on the movement, as long as the goods come back (or are supplied onward) within the time limits and move under a challan.
The point that trips people up: sending fabric for dyeing isn't a sale. You still own the fabric. The dyeing house bills you separately for the dyeing service. Two related transactions, one material movement and one service, and your system has to keep them apart.
Common job work in textile manufacturing looks like this:
- grey fabric sent for dyeing, bleaching or mercerising
- fabric sent for printing or specialised finishing
- yarn sent out for sizing or doubling
- semi-finished material moved from one job worker to another
- processed fabric returned for further work or direct dispatch
An ERP that books every dispatch as a sale, or every return as a purchase, gets the GST treatment wrong from day one. That's the first thing we check when a mill shows us its current setup.
How does fabric move through a textile job work cycle?
A typical cycle has four steps, and only the first one is clean. Rule 45 of the CGST Rules requires the principal to issue a challan for every dispatch, including inputs sent straight from a supplier to the job worker. Everything after that dispatch is where records drift.
Step 1: Dispatch grey fabric. You raise a job work challan for 10,000 m of grey fabric, with the process house, dispatch date, lot numbers and transport details.
Step 2: External processing. The process house dyes or prints. You need to see what's sitting outside your premises and at which stage.
Step 3: Partial return or onward movement. Fabric comes back in lots. Some is short, some is rejected, some goes on to another processor.
Step 4: Reconciliation and reporting. You reconcile dispatched, returned, rejected and outstanding quantities, then prepare ITC-04 data for the period.
It gets harder when one lot passes through three processors, or when the dyeing house measures in kilograms and you dispatched in metres. Can your system still tie the last returned roll to the first challan? If not, the ITC-04 you file is a best guess.
What should a job work challan carry?
Rule 55 of the CGST Rules sets the mandatory particulars for a delivery challan, and Rule 45 says job work goods must move under one. The challan has to carry its number and date, both parties' names, addresses and GSTINs, HSN code, description, quantity and taxable value. It's issued in triplicate: original for the job worker, duplicate for the transporter, triplicate for you.
For inter-state job work, Rule 138 requires an e-way bill whatever the consignment value. That's an exception to the usual ₹50,000 threshold, and it catches mills that send small reprocessing lots across state lines.
Here's how each challan field maps to what Odoo should capture:
| Challan information | What Odoo should hold |
| Challan number and date | Unique sequence and dispatch date |
| Principal and job worker | Company, process house, GSTIN and address |
| Material details | Grey fabric, dyed fabric, yarn or semi-finished goods, with HSN |
| Quantity and unit | Metres, kilograms, rolls or the applicable UQC |
| Material identification | Lot number, roll number, shade and fabric reference |
| Dispatch details | Source location, destination, transporter, e-way bill number |
| Value and tax fields | Taxable value and statutory fields under Rule 55 |
| Reference document | Job work order, production order or originating challan |
| Return tracking | Quantity received, pending, rejected and reprocessed |
| Attachments | Challan PDF, weighment slip, inspection report |
One caution. Roll numbers and shade codes are for your traceability. They don't replace any field the law requires. A challan format for job work needs both layers.
How should the flow work in Odoo?
- Job work order. Pick the processor, fabric, process, quantity and expected return date.
- Delivery challan. Generate a numbered challan linked to the stock move.
- Job worker stock location. Hold material at the processor in its own location, separate from factory stock.
- Return and reconciliation. Record each receipt against the original challan.
- GST register. Prepare challan data for review and ITC-04.
The job worker's location represents stock you still own, held somewhere else. It's not sold stock. How it's valued depends on your accounting policy and Odoo configuration, so settle that with finance before go-live.
Can Odoo handle job work under GST out of the box?
Partly. Odoo's Inventory app handles transfers, locations and partial receipts, and its Manufacturing app supports subcontracting. What standard Odoo doesn't give you is an India-specific job work challan register, challan-wise return tracking or an ITC-04 export. Those depend on your version, edition and installed localisation, and in most textile setups they're custom.
We've covered the wider question of why Odoo fits textile manufacturing separately. For job work specifically, the pattern we see is consistent: mills assume the subcontracting flow equals GST job work. It doesn't. Subcontracting moves components to a vendor and receives a finished product. It doesn't know about Section 143 time limits, Rule 55 particulars or ITC-04 tables.
So check the target Odoo version against your actual requirements before you sign off scope. Don't assume.
How do you handle partial returns and fabric shortages?
Partial returns are where a textile ERP earns its cost. In the example below, 10,000 m went out and 9,700 m physically came back, but only 9,500 m was accepted. That leaves 300 m with no status at all. Under Section 143, unreturned inputs past the deadline become a deemed supply, so that 300 m can't just be written off.
| Quantity category | Metres |
| Dispatched | 10,000 |
| Accepted | 9,500 |
| Rejected or held for reprocessing | 200 |
| Total physically received | 9,700 |
| Not yet received | 300 |
Dispatched Accepted Rejected / reprocess Not yet received 10,000 m 9,500 m 200 m 300 m, status unknown
Illustrative job work challan. The 300 m is not wastage until someone proves it is.
Without a structured system, three teams see three different numbers. Finance sees the 10,000 m dispatch. Stores sees the 9,700 m receipt. Production sees the 200 m reject. None of them owns the 300 m.
Unit mismatches make it worse. Dyeing houses often weigh fabric in, while you dispatched by length. If your conversions aren't built in, the gap looks like a shortage when it's actually a rounding problem. (We cover the maths in our post on yarn count conversion in Odoo.)
In our experience, the costliest error isn't a missing return. It's a challan closed by a stock adjustment just to clear the open list. Once that happens, the trail to the original dispatch is gone, and nobody can tell the tax team whether the 300 m was lost, scrapped or still sitting at the processor.
What custom work does textile job work need?
Challan-level reconciliation. Every receipt links to its original dispatch. The system calculates the outstanding balance and flags discrepancies, rather than closing the challan the moment a receipt is entered.
Roll and lot traceability. Each finished roll links back to its originating lot, process stage, shade and quality status, even when one dispatch produces dozens of rolls.
Process-wise tracking. The system knows whether material is at dyeing, printing, washing or finishing, including onward moves to a second processor.
Exception queue. Short receipts, rejects, unexplained differences and overdue returns land in one queue that stores, production and finance all see.
The rule we build to is simple. Every quantity difference gets a status and an owner. No balance disappears through an adjustment.
What is the ITC-04 due date?
ITC-04 due dates depend on the principal's aggregate turnover in the previous financial year. Under Rule 45(3), as amended in 2021, businesses above ₹5 crore file half-yearly by the 25th of the month after each half. Businesses at or below ₹5 crore file once a year, by 25 April.
| Turnover in preceding FY | Reporting period | Ordinary due date |
| More than ₹5 crore | April–September | 25 October |
| More than ₹5 crore | October–March | 25 April |
| Up to ₹5 crore | Full financial year | 25 April |
For the current year, that means the April–September 2026 return for larger principals fell due on 25 October 2026. The October 2026–March 2027 return, and the annual return for smaller principals, falls due on 25 April 2027. Due dates do get extended by notification, so check the portal before you plan around the ordinary date.
What goes into ITC-04 in GST?
ITC-04 reports goods sent to job workers and goods received back, or supplied onward, during the period. Odoo should be able to prepare:
- job worker GSTIN, or the prescribed details for an unregistered job worker
- challan number and date
- description of goods and unit of quantity
- quantities and taxable values dispatched
- goods returned, with the original challan reference and quantity
- any other transaction details the current form asks for
Map these fields to the current GSTN offline tool schema, not to an old spreadsheet someone downloaded three years ago. The format has changed before.
What does the ITC-04 workflow look like in Odoo?
- Collect. Pull eligible dispatches, returns and onward movements for the period.
- Validate. Flag missing GSTINs, challan references, dates, units or quantities.
- Reconcile. Surface open challans, partial returns and unresolved differences.
- Generate. Map validated records to the ITC-04 structure and export in the supported format.
- Review. Let the finance or tax team clear exceptions before anything is final.
- File and record. Submit through the GST portal and store the filing status and acknowledgement against the period.
Generating an ITC-04 report in Odoo isn't the same as filing it. Report generation, validation and portal submission are three separate jobs. We don't promise direct portal filing unless an integration has been built and tested for it.
How do you stop job work material going overdue?
The one-year limit in Section 143 starts from the date inputs are sent to the job worker, or from the date the job worker receives them when they're shipped straight from your supplier. Capital goods get three years. Moulds, dies, jigs, fixtures and tools are exempt from the time limit, and the Commissioner can extend the deadlines by up to one and two years respectively on sufficient cause.
So an old open challan isn't only a stores problem. Past the deadline, it can mean tax plus interest, calculated back to the original dispatch date. When did your team last look at challans older than nine months?
A job work dashboard should show:
| Control | What the system does |
| Open challans | Dispatched quantity less recorded returns and classified movements |
| Ageing | Days elapsed since dispatch, per challan |
| Approaching deadline | Flags records nearing the limit for that goods type |
| Overdue | Escalates to finance and the tax adviser |
| Unreconciled quantity | Missing, rejected, disputed or unexplained metres |
| Missing documents | Challans without e-way bill, inspection report or signature |
| Reporting readiness | Which records passed validation for the ITC-04 period |
A flat reminder at day 365 isn't enough. The deadline depends on whether the goods are inputs or capital goods, when the clock started, and whether an extension applies. The dashboard also has to tell an operational delay from a statutory one. A late dyeing order doesn't, on its own, mean a GST liability exists. We usually build these views on Odoo's reporting layer, and for groups with several plants we pull them into a wider business intelligence and data analytics setup.
Standard Odoo vs custom development: where's the line?
Most of the foundation is standard. Inventory transfers, locations, partial receipts, purchase orders, vendor bills, lots and manufacturing orders all come with Odoo. The job work and GST layer on top is custom: challan register, challan-wise reconciliation, roll-level traceability across processors, ITC-04 export and rule-aware ageing.
| Requirement | Standard Odoo foundation | Custom work |
| Material dispatch and receipt | Inventory transfers and receipts | Job work challan workflow and references |
| Stock at processors | Locations and stock moves | Job worker stock register and reconciliation |
| Processing charges | Purchase orders and vendor bills | Service charges linked to the job work transaction |
| Traceability | Manufacturing orders, BoMs, lots | Roll-level trace across external processes |
| Partial returns | Partial receipts | Challan-wise return status and discrepancy handling |
| GST challan printing | Delivery documents | Rule 55 fields, format and numbering |
| ITC-04 | Accounting and inventory data | Validated ITC-04 register, field mapping and export |
| Deadline monitoring | Scheduled activities, reports | Rule-aware ageing, alerts and escalation |
| Management view | List, pivot and dashboard views | Textile job work dashboard and exception reports |
Treat this as a starting design. The exact boundary depends on your Odoo version, edition, localisation and existing modules. For a fuller view of how this sits within a mill-wide build, see our guide to ERP for textile manufacturing.
A practical module layout
- Job work challan management. Challans, processor details, dispatches, partial returns and attachments.
- Textile material traceability. Lots, rolls, shades, process stages, quality status and quantity reconciliation across processors.
- GST compliance register. Reportable transactions, mandatory-field validation, deadline monitoring and ITC-04 output.
- Job work dashboard. Outstanding quantities, delayed returns, processor performance, exceptions and reporting readiness.
All four share the same transaction references. No module keeps its own copy of the data, which is why the audit trail holds together.
What changes for a textile business once this is in place?
The main change is that each open quantity has a named location and a named owner. Stores knows which processor holds which lot. Finance prepares ITC-04 from validated challans instead of rebuilding them from paper. Production can trace a finished roll back through dyeing and printing to the grey fabric challan it left on.
- Visibility of stock outside the factory. Every processor's balance, live.
- Cleaner challan reconciliation. Rejects and differences stay visible instead of vanishing into a spreadsheet tab.
- Less manual reporting. The same records feed ITC-04, with no re-keying.
- Traceability across processes. One roll, one trail, from grey fabric to finished goods.
- Earlier warnings. Overdue material and missing documents surface months before a deadline, not after it.
None of this replaces disciplined stock counts or a GST practitioner. An ERP makes the controls easier to run. It can't invent a physical record nobody kept.
Who builds this?
We build textile ERP on Odoo for weaving mills and process-linked manufacturers, including the job work, challan and ITC-04 layer. Our textile ERP issues job work challans from the system, keeps a live balance per job worker, applies an allowed process loss per job and generates ITC-04 data from the challans themselves.
For a sense of how we scope a mill, read how we took Rajeshwari Weavetex, a 110-loom weaving mill in Gujarat, from paper, Excel and Tally to Odoo. If you've already got an Odoo partner and just need extra hands, you can hire Odoo developers from our team. Our wider manufacturing work covers the plants around the mill.



