The owner of a fabrication shop in Chennai learned his true job cost on a ₹12 lakh enclosure order exactly 47 days after he shipped it. That is when his accountant finished the monthly P&L, allocated overheads, and informed him that the job had cost ₹13.4 lakh to produce. He had lost ₹1.4 lakh on a job he thought would make him ₹1.8 lakh in profit. By the time he found out, the customer had already placed a repeat order at the same price — locking in another ₹1.4 lakh loss.
This is not unusual. It is the default in Indian manufacturing. Most factories learn their job cost after the invoice is sent, after the customer has paid (or not), and after the opportunity to do anything about it has passed. The P&L tells you what happened. It does not help you change what is happening.
Job costing — real, live, per-job costing that updates as the job progresses — is the antidote. It tells you the true cost of a job before the invoice goes out, sometimes before the job is even complete. It converts the month-end surprise into a daily decision-making tool.
How most Indian factories actually do costing
Let's be honest about the baseline. Most Indian SMEs, including well-run ones doing ₹5-50 crore in revenue, follow some version of this process:
Material cost is tracked reasonably well — because Tally or the accounting system captures purchase invoices and the store issues material against jobs (or at least against production in general).
Labour cost is a monthly lump sum — total salary and wages divided across jobs using some rough allocation: by job value, by weight, or by the production manager's estimate of which jobs consumed more effort.
Overhead is an afterthought — rent, electricity, depreciation, maintenance, consumables, and administrative costs are totalled at month end and allocated across jobs using a percentage markup on material, or a percentage of revenue, or not allocated to jobs at all.
The "job cost" is calculated after the fact — by the accountant, in a spreadsheet, 3-6 weeks after the job shipped. It is used for the P&L, not for decision-making.
The result: the factory runs on estimated costs and discovers actual costs long after the decisions have been made. The owner quotes the next similar job based on the same estimates that were wrong last time. The cycle repeats.
What is wrong with this approach
You cannot fix a problem you discover 6 weeks late. If a job is going over budget on labour, you want to know on day 3 of a 10-day job — not on day 47. On day 3, you can reassign a faster operator, simplify a complex welding sequence, or negotiate with the customer for a scope reduction. On day 47, you can only absorb the loss.
Overhead allocation by percentage hides the truth. If you allocate overhead as "25% of material cost," a job that uses expensive imported material looks like it consumes more overhead than a job that uses cheap mild steel — even if the second job occupied the shop floor for twice as long and consumed far more electricity, machine time, and supervision.
Labour as a monthly lump sum prevents learning. When you do not know how many hours each job consumed, you cannot compare estimated versus actual labour. You cannot identify which jobs are labour-intensive and which are not. You quote labour based on intuition, which is unreliable at best and systematically wrong at worst.
The three cost buckets
Every job cost consists of three components. Understanding these buckets — and tracking each one per job — is the foundation of job costing.
Bucket 1: Direct material
This is the easiest bucket to track and the one most factories handle reasonably well. Direct material includes:
- Raw materials consumed (steel, aluminium, polymers, etc.)
- Bought-out components (motors, bearings, fasteners, electrical parts)
- Consumables directly attributable to the job (welding wire, cutting inserts, paint)
How to track it: Issue material from the store against a job number. Every material indent references a job. The store records the quantity issued and the rate (FIFO, weighted average, or last purchase — be consistent). The total material cost for a job is the sum of all issues against that job number.
Common mistake: Not tracking consumables. Welding wire, cutting inserts, grinding wheels, and abrasives are treated as "general shop consumables" and lumped into overhead. In reality, a TIG welding job on stainless steel consumes 3-5x more filler wire per hour than a MIG job on mild steel. If you dump all filler wire into overhead, the MIG job subsidises the TIG job, and your costing is wrong.
Fix: Create standard consumption rates for key consumables. Example: MIG welding on MS consumes approximately 1.2 kg of wire per metre of weld. TIG welding on SS consumes approximately 0.5 kg of filler per metre. Apply these rates per job based on the weld length in the BOM.
Bucket 2: Direct labour
Direct labour is the cost of the workers who physically work on the job — the machine operator, the welder, the fitter, the painter. It does not include the production manager, the store clerk, or the security guard (those are overhead).
How to track it: Assign labour hours to jobs. When an operator starts working on Job 1042, the clock starts. When they stop (to switch to another job, to take a break, to wait for material), the clock stops. The total labour hours for the job, multiplied by the labour rate per hour, gives you the direct labour cost.
The labour rate calculation:
Most Indian SMEs do not have a formal labour rate. Here is how to calculate one:
| Component | Monthly amount | Per-hour rate (assuming 200 working hours/month) |
|---|---|---|
| Basic salary (skilled operator) | ₹22,000 | ₹110 |
| PF + ESI (employer contribution) | ₹3,500 | ₹17.50 |
| Bonus and leave encashment (prorated) | ₹2,500 | ₹12.50 |
| Total loaded labour rate | ₹28,000 | ₹140/hour |
For a semi-skilled helper, the rate might be ₹80-100/hour. For a highly skilled CNC programmer/operator, it might be ₹180-220/hour. Use different rates for different skill levels — a single average rate hides important cost differences between jobs that use skilled welders versus jobs that use semi-skilled helpers.
How to capture hours without an army of timekeepers:
You do not need timekeepers standing with stopwatches. Modern approaches:
Phone-based logging. Operators scan a job barcode when they start and stop work. The app records the hours automatically. This is the most practical approach for Indian SMEs (see our guide on moving from paper to phone-based tracking).
Simplified manual logging. Operators fill in a daily time sheet with three columns: Job Number, Operation, and Hours. At the end of each shift, the supervisor reviews and signs. This works for smaller shops with 10-15 operators.
Supervisor allocation. For very small shops, the supervisor allocates hours based on the daily plan and his knowledge of what each operator worked on. Less accurate, but better than zero.
Bucket 3: Overhead
Overhead is everything that is not direct material or direct labour but is still necessary to run the factory. This includes:
- Rent and property taxes
- Electricity (for machines not directly attributable to a job, for lighting, for offices)
- Depreciation of machines and equipment
- Maintenance and repair costs
- Quality and inspection costs
- Administrative salaries (production manager, store, accounts, HR)
- Insurance
- General consumables (cleaning, safety equipment, office supplies)
The overhead allocation problem:
Overhead is real cost. It must be recovered from jobs. The question is: how do you allocate ₹8 lakh per month of overhead across 60 jobs fairly?
Method 1: Percentage of material cost. This is the most common method in Indian SMEs. If total monthly material cost is ₹32 lakh and overhead is ₹8 lakh, the overhead rate is 25% of material. A job with ₹2 lakh of material gets allocated ₹50,000 of overhead.
Problem: A job that uses ₹3 lakh of imported titanium and takes 4 hours of machine time gets allocated ₹75,000 of overhead. A job that uses ₹50,000 of mild steel but occupies the shop floor for 80 hours gets allocated ₹12,500 of overhead. The titanium job subsidises the mild steel job. The costing is wrong.
Method 2: Percentage of direct labour cost. If total monthly direct labour is ₹5 lakh and overhead is ₹8 lakh, the overhead rate is 160% of direct labour. A job with ₹30,000 of labour gets allocated ₹48,000 of overhead.
Problem: Better than Method 1, but still imprecise. Two jobs with the same labour hours but very different machine requirements (one uses a ₹35 lakh CNC centre, the other uses a ₹1 lakh drill press) get allocated the same overhead.
Method 3: Machine-hour rate. Allocate overhead based on the machine hours a job consumes, with different rates for different machines. A CNC lathe hour carries more overhead than a manual grinding hour because the machine is more expensive, uses more electricity, and requires more maintenance.
How to calculate machine-hour rates:
| Cost element | CNC Lathe (per month) | Manual Lathe (per month) |
|---|---|---|
| Depreciation (machine cost ÷ useful life in months) | ₹25,000 (₹30L ÷ 120 months) | ₹3,000 (₹3.6L ÷ 120 months) |
| Electricity | ₹8,000 (15 kW × ₹8/unit × 200 hrs × 0.33 load factor) | ₹1,500 (3 kW × ₹8/unit × 200 hrs × 0.31 load factor) |
| Maintenance (average monthly) | ₹5,000 | ₹1,500 |
| Tooling/consumables (average) | ₹8,000 | ₹2,000 |
| Allocated floor rent (by sq ft) | ₹4,500 | ₹2,000 |
| Total monthly overhead | ₹50,500 | ₹10,000 |
| Available production hours/month | 320 hours (2 shifts) | 200 hours (1 shift) |
| Overhead rate per machine hour | ₹158/hour | ₹50/hour |
Now when you cost a job, you allocate overhead based on actual machine hours used, at the correct rate for each machine. A job that uses 8 hours of CNC lathe time gets allocated ₹1,264 in CNC overhead. A job that uses 12 hours of manual lathe gets allocated ₹600 in manual lathe overhead. This reflects the true resource consumption of each job.
Setting up job costing without an army of accountants
The biggest objection to job costing in Indian SMEs is practical: "We don't have the staff to track all this." Here is a realistic implementation that adds minimal work.
Step 1: Set up job numbers (Day 1)
Every job gets a unique number. This is probably already the case in most factories. If not, start a simple sequential numbering system: 2526-001, 2526-002, etc. (fiscal year prefix + sequence number). This number appears on every material indent, every job card, every time log, and every invoice.
Step 2: Track material issues against jobs (Week 1)
If your store already issues material, add a "Job Number" column to the issue register. That is the only change. The store clerk writes the job number on the material issue slip. If you use Tally or any accounting software, create a cost centre for each job and book material issues against it.
For bought-out components, book the purchase invoice against the job it was bought for. If a component serves multiple jobs, split the cost proportionally.
Step 3: Track labour hours against jobs (Week 2-3)
Implement one of the labour tracking methods described above. For most factories, the phone-based scanning method is the fastest to deploy and the most accurate. The operator scans the job barcode when they start and stop — the system captures hours automatically.
If phone-based tracking is not feasible immediately, use the simplified daily time sheet. Give every operator a small notepad. Three columns: Job Number, Operation, Hours. Filled in at the end of each shift. The supervisor collects them daily.
Step 4: Calculate machine-hour rates (one-time)
Sit down for 2-3 hours with your accountant. List every machine. Estimate the monthly overhead for each (depreciation, power, maintenance, rent allocation). Divide by available hours. You now have a machine-hour rate for each machine. This calculation is done once and updated annually — or whenever you add a new machine.
Step 5: Build the job cost sheet (ongoing, automated)
For each active job, the cost sheet accumulates three numbers:
| Cost element | Source | Updated |
|---|---|---|
| Direct material (cumulative) | Store issue register / Tally | Each time material is issued |
| Direct labour (cumulative) | Time tracking system / time sheets | Daily or per shift |
| Overhead (cumulative) | Machine hours × machine-hour rate | Daily or per shift |
| Total cost to date | Sum of above | Real-time or daily |
Compare the total cost to date against the estimated cost (from the original quote). If the job is 40% complete and has consumed 55% of the estimated cost, you have a problem — and you know about it now, not in 6 weeks.
Estimated versus actual: a worked example
Let's trace a real fabrication job through both the quoting stage and the execution stage.
The job: Mild steel control panel enclosure, batch of 10
Estimated cost (from the quote):
| Cost element | Detail | Estimated cost |
|---|---|---|
| Direct Material | ||
| MS CR sheet 1.6mm | 85 kg × ₹72/kg | ₹6,120 |
| MS CR sheet 1.2mm | 40 kg × ₹72/kg | ₹2,880 |
| MS angle 25×25×3 | 24 metres × ₹48/m | ₹1,152 |
| Fasteners (bolts, nuts, rivets) | Lot | ₹1,800 |
| Welding wire (MIG, MS) | 8 kg × ₹120/kg | ₹960 |
| Powder coating (grey RAL 7035) | 10 units × ₹350/unit | ₹3,500 |
| Hinges, locks, cable glands | Lot | ₹4,200 |
| Gasket/seal | 20 metres × ₹45/m | ₹900 |
| Material subtotal | ₹21,512 | |
| Direct Labour | ||
| CNC laser cutting | 6 hours × ₹140/hr | ₹840 |
| Bending (press brake) | 8 hours × ₹140/hr | ₹1,120 |
| Welding (MIG) | 20 hours × ₹140/hr | ₹2,800 |
| Grinding and finishing | 6 hours × ₹100/hr | ₹600 |
| Assembly and fitting | 12 hours × ₹140/hr | ₹1,680 |
| Inspection | 4 hours × ₹120/hr | ₹480 |
| Labour subtotal | ₹7,520 | |
| Overhead | ||
| CNC laser (6 hrs × ₹200/hr) | ₹1,200 | |
| Press brake (8 hrs × ₹100/hr) | ₹800 | |
| Welding bay (20 hrs × ₹80/hr) | ₹1,600 | |
| Grinding (6 hrs × ₹50/hr) | ₹300 | |
| Assembly area (12 hrs × ₹60/hr) | ₹720 | |
| Powder coating (10 units × ₹120/unit overhead) | ₹1,200 | |
| Overhead subtotal | ₹5,820 | |
| Total estimated cost | ₹34,852 | |
| Margin (20%) | ₹8,713 | |
| Quoted price (before GST) | ₹43,565 | |
| GST (18%) | ₹7,842 | |
| Quoted price (with GST) | ₹51,407 |
Per unit: ₹5,141 (with GST), estimated cost ₹3,485 per enclosure.
Actual cost (tracked during production)
Now let's see what actually happened:
| Cost element | Estimated | Actual | Variance | Reason |
|---|---|---|---|---|
| Direct Material | ||||
| MS CR sheet 1.6mm | ₹6,120 | ₹6,840 | +₹720 | Rate increased to ₹80/kg since last purchase; also 5% extra wastage on nesting |
| MS CR sheet 1.2mm | ₹2,880 | ₹2,880 | ₹0 | On target |
| MS angle | ₹1,152 | ₹1,152 | ₹0 | On target |
| Fasteners | ₹1,800 | ₹2,100 | +₹300 | Customer spec change added cable gland plates |
| Welding wire | ₹960 | ₹1,320 | +₹360 | Thicker weld on corners per customer quality requirement |
| Powder coating | ₹3,500 | ₹3,500 | ₹0 | On target |
| Hinges, locks, cable glands | ₹4,200 | ₹4,600 | +₹400 | Switched to IP65 cable glands (customer upgrade) |
| Gasket/seal | ₹900 | ₹900 | ₹0 | On target |
| Material subtotal | ₹21,512 | ₹23,292 | +₹1,780 | +8.3% over estimate |
| Direct Labour | ||||
| CNC laser cutting | ₹840 | ₹980 | +₹140 | Programming took extra hour for new nesting pattern |
| Bending | ₹1,120 | ₹1,400 | +₹280 | 2 extra hours — operator unfamiliar with this bend sequence |
| Welding | ₹2,800 | ₹3,640 | +₹840 | 6 extra hours — rework on 3 units (distortion), customer-required extra weld passes |
| Grinding/finishing | ₹600 | ₹800 | +₹200 | Extra finishing to fix weld distortion marks |
| Assembly | ₹1,680 | ₹1,680 | ₹0 | On target |
| Inspection | ₹480 | ₹600 | +₹120 | Customer QA visit required additional documentation time |
| Labour subtotal | ₹7,520 | ₹9,100 | +₹1,580 | +21% over estimate |
| Overhead | ||||
| Machine overhead (proportional to actual hours) | ₹5,820 | ₹6,740 | +₹920 | More hours = more overhead |
| Total actual cost | ₹34,852 | ₹39,132 | +₹4,280 | +12.3% over estimate |
Impact on margin:
| Estimated | Actual | |
|---|---|---|
| Quoted price (before GST) | ₹43,565 | ₹43,565 |
| Total cost | ₹34,852 | ₹39,132 |
| Margin | ₹8,713 (20%) | ₹4,433 (10.2%) |
The margin dropped from 20% to 10.2%. On a ₹43,565 job, that is ₹4,280 of margin erosion. Multiply this across 60 jobs per month, and you understand why Indian manufacturing owners are perpetually surprised by their P&L.
What live job costing would have changed
With real-time job costing, here is when the factory would have seen the problems:
Day 2 (laser cutting complete): Material cost already ₹720 over estimate on sheet metal. Alert: rate variance. Action: update the rate card for future quotes immediately. Cannot fix this job's material cost, but the repeat order quote will be correct.
Day 3 (bending in progress): Labour on bending trending 25% over estimate. Alert: labour variance. Action: check if the operator needs help or if the bend sequence needs optimisation. The production manager walks over, identifies that the operator is bending panels in a suboptimal sequence, and corrects it — saving 1 hour on the remaining 6 units.
Day 5 (welding in progress): Welding labour already 4 hours over estimate with 4 units remaining. Alert: significant labour variance. Action: production manager discovers the weld distortion issue. Adjusts the welding sequence for the remaining units (tack weld all corners first, then full weld in alternating pattern). The remaining 4 units are welded without distortion — saving 3 hours of rework and 1.5 hours of extra grinding.
Net effect of live intervention: Without live costing, actual overrun was ₹4,280. With live costing and mid-job corrections, the overrun could have been reduced to approximately ₹2,500-2,800 — saving ₹1,500 on a single job. Across 60 jobs per month, mid-job corrections driven by live costing typically save 3-5% of total production cost.
Variance analysis — learning from every job
Every completed job generates variance data — the difference between estimated and actual cost for each element. This data is gold if you use it, and noise if you ignore it.
The three variances to track
Material rate variance. You estimated SS304 at ₹220/kg; the actual rate was ₹245/kg. This variance is a signal to update your rate card. If rate variances are consistently positive (actual higher than estimated), your rate card is stale.
Material quantity variance. You estimated 85 kg of MS sheet; the actual consumption was 92 kg. This variance is a signal to review your wastage factor. If your BOM assumes 5% wastage but actual wastage is 12%, every quote underestimates material cost.
Labour efficiency variance. You estimated 20 hours of welding; the actual was 26 hours. This variance is a signal to review your time estimates. Are they based on an ideal operator on a good day? Real estimates should reflect average performance, not best-case.
Building a feedback loop
The variance data from completed jobs should feed directly back into the quoting system. If your last 10 shaft machining jobs averaged 18 minutes per piece instead of the 14 minutes in your standard time estimate, update the estimate to 18 minutes.
This is where the connection between BOM-driven quoting and job costing becomes powerful:
- The BOM drives the quote — estimated material, estimated labour, estimated overhead.
- The job tracking system captures actuals — actual material, actual labour, actual overhead.
- Variance analysis compares the two — highlighting where estimates are wrong.
- Updated estimates feed back into the BOM — making the next quote more accurate.
This is a continuous improvement loop for pricing. Every job you complete makes your next quote more accurate. Over 6-12 months, the variance between estimated and actual costs shrinks from ±15-20% to ±3-5%. Your margins become predictable. Your pricing becomes competitive — not because you are cheaper, but because you are precise.
How real-time costing changes decision-making mid-job
When you can see the cost accumulating on a job in real time, several decisions become possible that are impossible with month-end costing:
Decision 1: Stop-loss on a runaway job
If a job has consumed 90% of its estimated cost with only 60% of the work complete, you have a decision to make. With month-end costing, you discover this after the job ships. With live costing, you discover it mid-job and can:
- Renegotiate with the customer (especially if scope changes caused the overrun)
- Simplify remaining operations (if quality standards allow)
- Allocate your best operator to finish the job faster
- At minimum, flag the customer and product for margin review before accepting repeat orders
Decision 2: Overtime authorisation with data
When the shift supervisor asks for overtime, the standard response is either "yes" (costs money) or "no" (risks delivery). With live costing, you can check: does this job have enough margin to absorb 4 hours of overtime at 1.5x rate? If the job is quoting at 22% margin and is currently tracking at 18%, the overtime is absorbable. If the job is already at 8% margin, the overtime pushes it to breakeven — maybe the answer is to reschedule rather than pay overtime.
Decision 3: Subcontracting versus in-house
Mid-job, you discover that the machining operation is taking 40% longer than estimated because the material is harder than expected. You can continue in-house (at a known cost) or subcontract the remaining pieces (at a quoted cost from the vendor). Live costing lets you compare: remaining in-house cost (X hours × labour rate × machine rate) versus subcontract cost (vendor quote + transport + quality risk). You pick the cheaper option — with data, not guesswork.
Decision 4: Quote adjustment for repeat orders
A customer wants to repeat an order. With month-end costing, you re-quote at the same price (since you do not know the actual cost yet). With live costing, you see that the previous batch cost 12% more than estimated. You adjust the repeat quote upward by 12% — and you have the data to justify it to the customer.
The Tally integration question
Most Indian SMEs use Tally for accounting. Tally is excellent for financial accounting, statutory compliance, GST, and bank reconciliation. It is not designed for real-time job costing with machine-hour rates and operation-level tracking.
The practical approach is a two-system model:
- Production system (ERP/MES) handles real-time job costing — material issues, labour tracking, operation logging, machine-hour allocation, variance reports.
- Tally handles financial accounting — purchase invoices, sales invoices, GST returns, bank entries, statutory compliance.
The two systems sync on key data points: material purchases (Tally → Production system for rate updates), sales invoices (Production system → Tally for billing), and monthly cost summaries (Production system → Tally for P&L allocation).
This is not ideal — two systems means some reconciliation work. But trying to force Tally into a real-time job costing role creates more problems than it solves. Tally tells you where the money went. The production system tells you why it went there and what to do about it.
Getting started — this month
You do not need to implement all three cost buckets simultaneously. Here is a practical sequence:
Month 1: Material tracking per job. Ensure every material issue from the store references a job number. If you already do this in Tally, you are done. If not, add the job number to the issue slip and the Tally voucher.
Month 2: Labour tracking per job. Implement a basic time tracking method — phone-based scanning or manual time sheets. Start with one shift or one section. Track hours per job per operation.
Month 3: Overhead allocation. Calculate machine-hour rates for your top 10 machines. Allocate overhead based on machine hours consumed per job.
Month 4: Build the job cost sheet. Combine all three buckets into a per-job cost report. Compare estimated versus actual for each completed job. Identify the top 3 cost variances. Fix them.
By month 4, you have live job costing. Not perfect, not automated, but functional. You know the cost of every active job within 5-10% accuracy, updated daily. That is infinitely better than knowing the cost 6 weeks late with 20% uncertainty.
The factories that track job costs in real time do not just have better margins. They have predictable margins. They quote with confidence. They make mid-job corrections that save thousands of rupees per job. And they never again discover a ₹1.4 lakh loss 47 days too late.
QuoteERP connects your BOM-driven quotes directly to live job costing — tracking material, labour, and overhead per job in real time. See the variance between estimated and actual as the job progresses, not after the invoice. Start tracking your true job costs →