Logo Dark
Get In Touch

Job Work Under GST for Textile Process Houses: Challans and ITC-04 in Odoo

/
ERP

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 informationWhat Odoo should hold
Challan number and dateUnique sequence and dispatch date
Principal and job workerCompany, process house, GSTIN and address
Material detailsGrey fabric, dyed fabric, yarn or semi-finished goods, with HSN
Quantity and unitMetres, kilograms, rolls or the applicable UQC
Material identificationLot number, roll number, shade and fabric reference
Dispatch detailsSource location, destination, transporter, e-way bill number
Value and tax fieldsTaxable value and statutory fields under Rule 55
Reference documentJob work order, production order or originating challan
Return trackingQuantity received, pending, rejected and reprocessed
AttachmentsChallan 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?

  1. Job work order. Pick the processor, fabric, process, quantity and expected return date.
  2. Delivery challan. Generate a numbered challan linked to the stock move.
  3. Job worker stock location. Hold material at the processor in its own location, separate from factory stock.
  4. Return and reconciliation. Record each receipt against the original challan.
  5. 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 categoryMetres
Dispatched10,000
Accepted9,500
Rejected or held for reprocessing200
Total physically received9,700
Not yet received300

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 FYReporting periodOrdinary due date
More than ₹5 croreApril–September25 October
More than ₹5 croreOctober–March25 April
Up to ₹5 croreFull financial year25 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?

  1. Collect. Pull eligible dispatches, returns and onward movements for the period.
  2. Validate. Flag missing GSTINs, challan references, dates, units or quantities.
  3. Reconcile. Surface open challans, partial returns and unresolved differences.
  4. Generate. Map validated records to the ITC-04 structure and export in the supported format.
  5. Review. Let the finance or tax team clear exceptions before anything is final.
  6. 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:

ControlWhat the system does
Open challansDispatched quantity less recorded returns and classified movements
AgeingDays elapsed since dispatch, per challan
Approaching deadlineFlags records nearing the limit for that goods type
OverdueEscalates to finance and the tax adviser
Unreconciled quantityMissing, rejected, disputed or unexplained metres
Missing documentsChallans without e-way bill, inspection report or signature
Reporting readinessWhich 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.

RequirementStandard Odoo foundationCustom work
Material dispatch and receiptInventory transfers and receiptsJob work challan workflow and references
Stock at processorsLocations and stock movesJob worker stock register and reconciliation
Processing chargesPurchase orders and vendor billsService charges linked to the job work transaction
TraceabilityManufacturing orders, BoMs, lotsRoll-level trace across external processes
Partial returnsPartial receiptsChallan-wise return status and discrepancy handling
GST challan printingDelivery documentsRule 55 fields, format and numbering
ITC-04Accounting and inventory dataValidated ITC-04 register, field mapping and export
Deadline monitoringScheduled activities, reportsRule-aware ageing, alerts and escalation
Management viewList, pivot and dashboard viewsTextile 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.

Running fabric through outside process houses on paper challans?
Request Textile ERP Demo

FAQs

Can Odoo manage job work challans under GST for textile process houses?

Partly as standard, fully with custom work. Odoo Inventory handles transfers, locations and partial receipts. A GST job work challan with Rule 55 fields, a challan-wise return register and a job worker stock balance usually needs a custom module, depending on your Odoo version and localisation.

Can Odoo generate ITC-04 automatically?

A custom module can prepare ITC-04 data from validated job work challans and export it in the format the GST offline tool accepts. Generating the file and filing it on the GST portal are separate steps. Direct portal filing needs its own integration, built and tested for that purpose.

What is the ITC-04 due date?

Under Rule 45(3), principals with turnover above ₹5 crore file half-yearly: April–September by 25 October, October–March by 25 April. Principals at or below ₹5 crore file annually by 25 April. Check the GST portal for any notified extension before relying on these dates.

How long can goods stay with a job worker under GST?

Section 143 of the CGST Act allows 1 year for inputs and 3 years for capital goods, counted from dispatch or from receipt by the job worker if shipped directly. Moulds, dies, jigs, fixtures and tools are exempt. Unreturned goods past the limit are treated as supplied on the original dispatch date.

How should partial fabric returns be recorded?

Every partial receipt should reference the original challan. The system updates received and outstanding quantities, and records rejected, reprocessed or onward-moved fabric separately. It shouldn't treat every difference as wastage. In a 10,000 m dispatch with 9,700 m received, the 300 m gap needs its own status and owner.

Does a textile ERP replace a GST consultant?

No. The ERP makes job work data complete, traceable and ready for reporting. A qualified GST practitioner still needs to confirm the tax treatment, filing obligations and any exceptions that apply to your business.

Jaydip Solanki
SR. ODOO DEVELOPER | MIGRATION & CUSTOMISATION SPE
Jaydip is a Senior Odoo Developer with 6+ years of experience delivering customised ERP solutions across Odoo v12–v19. His expertise spans Odoo development, complex version migrations, performance optimisation, and third-party integrations. He focuses on solving challenging business problems and building scalable solutions that improve operational efficiency.
India (HQ)

201, iSquare Corporate Park, Ahmedabad-380060, Gujarat, India

+91 77 97 977 977
Canada

24 Merlot Court, Timberlea, NS B3T 0C2, Canada

+1 902-333-0067

For Sales

YO@7SPAN.COM

Looking For Jobs

Apply Now
Making It Possible Light