Job Costing for Indian Agencies and Freelancers: Know Your Real Project Profit

Learn job costing for Indian agencies and freelancers with a ₹2 lakh project example, labour rates, overhead allocation, spreadsheet formulas and a 30-day plan.

By InkRiver Admin

A marketing agency can win a ₹2 lakh project and still lose money on it. A web developer can finish a fixed-price website on time but discover that client meetings, revisions and subcontractor bills consumed the margin. Revenue does not show whether an individual job was worth doing. Job costing does. Job costing means assigning the labour, direct purchases and a sensible share of overhead to a specific client project. It helps Indian agencies, consultants, event businesses, design studios, installers and other service firms answer a practical question: After we delivered this job, what did it actually cost us? What is job costing for a service business? Each client project receives a unique job code. Staff record time against that code, purchases and subcontractors are tagged to it, and the owner compares estimated cost with actual cost. Job costing is not the same as a company-wide profit-and-loss statement. A company may report a healthy month while several fixed-price projects are quietly unprofitable. The underlying approach is consistent with QuickBooks' job-costing guidance, which separates labour, materials and allocated overhead. You can start in a spreadsheet; specialist software is optional. The four numbers to track on every project MeasureSimple formulaWhy it matters Direct project costDirect labour + subcontractors + project purchasesShows the cost directly caused by the work Project contributionNet project revenue − direct project costShows what remains to cover overhead and profit Fully loaded job costDirect project cost + allocated overheadShows a broader cost view for pricing decisions Job profit after allocationNet project revenue − fully loaded job costEstimates project-level operating profit Important: decide whether your labour rate already includes overhead. If it does, do not add the same rent, admin or software cost again. Also distinguish accounting profit from cash collected. An unpaid invoice can be profitable on paper and still create a cash shortage. Worked example: a ₹2,00,000 marketing project Imagine a Pune agency sells a one-month campaign package for ₹2,00,000 excluding applicable GST. The work includes strategy, copy, design, reporting and paid-media setup. The figures below are illustrative, not market benchmarks. Cost itemCalculationAmount Strategist time25 hours × ₹900 loaded direct-labour rate₹22,500 Designer time55 hours × ₹650₹35,750 Writer time40 hours × ₹500₹20,000 Project manager time20 hours × ₹800₹16,000 Freelance video editorAgreed project fee₹18,000 Project-specific stock assetsActual licence costs₹3,750 Total direct costSum of the above₹1,16,000 Project contribution = ₹2,00,000 − ₹1,16,000 = ₹84,000. Contribution margin = ₹84,000 ÷ ₹2,00,000 × 100 = 42%. Suppose a consistent allocation method assigns ₹28,000 of shared overhead to the project. Fully loaded job cost becomes ₹1,44,000, leaving an estimated ₹56,000 job profit, or 28% of net revenue. Now suppose the client requests two extra revision rounds. The team spends another 30 hours at an average direct labour cost of ₹700 per hour. Extra cost = ₹21,000. If the agency absorbs the work without additional billing, fully loaded job profit falls from ₹56,000 to ₹35,000. The project still looks like a ₹2 lakh win in the sales report, but its economics have changed sharply. Step 1: create a job code before work starts Use a short, consistent identifier such as AG-2026-041. The same code should appear on the proposal, timesheet, purchase request, subcontractor bill and project summary. A job code prevents the common problem of knowing total agency expenses but not which client caused them. At minimum, maintain these columns: job code, client, service type, agreed net fee, approved changes, project owner, start date, target delivery date, budgeted hours, budgeted direct cost, actual hours, actual direct cost, allocated overhead, invoiced amount and collection status. Step 2: calculate a usable hourly labour cost Using salary divided by 160 hours without adjustment can understate costs. Start with the employee's monthly employer cost, including relevant employer contributions and benefits, then divide by realistically available productive hours. Do not use the employee's hourly billing rate as the cost rate. Example: an employee costs the business ₹72,000 per month. If 120 hours are realistically available for client work after leave, meetings and internal tasks, the direct labour cost is ₹600 per productive hour. If you include shared office overhead in that ₹600, label the rate accordingly and avoid allocating it twice. For founders, include a reasonable cost for hands-on delivery time. Otherwise, a business can appear profitable only because the owner works for free. You can keep a separate line for owner sales and management time if that work is not attributable to one project. Step 3: capture time by task, not by memory Ask team members to log time daily against a job code and a simple task category: discovery, research, production, revision, client communication, QA or handoff. Record both billable and non-billable work. A client call may not appear on the invoice, but it still consumes delivery capacity. Start with a shared sheet if your team is small. If you later adopt a project platform, choose one that can compare estimates with actual time and costs. Asana's timesheet and budget documentation describes this estimate-versus-actual approach. Tool choice matters less than consistent entries. Step 4: tag purchases and subcontractor invoices Separate expenses directly caused by a project from general overhead. A stock-photo licence bought only for one campaign is a direct project cost. General design software used across 20 clients is normally shared overhead. A freelancer hired for one website belongs to that website's job code. Keep tax treatment consistent. If you are entitled to claim input tax credit on a purchase, your internal costing policy may use the recoverable amount net of GST. If GST is not recoverable, it may be a cost. Confirm the correct accounting treatment with your accountant and apply the same policy across projects. Step 5: allocate overhead with a clear rule Overhead includes shared rent, administration, general software, utilities and management support. You need a repeatable allocation method rather than assigning arbitrary amounts to jobs you dislike. A simple labour-hour allocation can work for a people-intensive agency. Suppose expected monthly overhead is ₹2,40,000 and planned productive client hours across the team are 600. The overhead rate is ₹400 per productive hour. A project consuming 70 hours would receive ₹28,000 of overhead. This is a planning estimate, not a universal accounting rule. Review it when utilisation or overhead changes. For jobs driven by machine time, travel or third-party purchases, a different driver may be more appropriate. QuickBooks' job-cost allocation explanation describes why overhead drivers should reflect the activity that causes costs. Step 6: compare estimated and actual costs every week IndicatorFormulaWhat to investigate Labour hours varianceActual hours − budgeted hoursRevisions, unclear briefs, rework Cost varianceActual job cost − budgeted job costUnexpected subcontractors, rate changes Contribution margin(Revenue − direct costs) ÷ revenueDelivery efficiency and pricing Overhead absorptionAllocated overhead ÷ expected overheadUnderused capacity or poor cost allocation Collection delayDays from invoice to receiptPayment terms and cash exposure A negative cost variance is favourable only when actual cost is below budget. State your sign convention in the spreadsheet. If you quote a ₹1.5 lakh project but actual direct cost is ₹1.4 lakh, investigate before celebrating revenue growth. How to build the spreadsheet Create three tabs. Jobs stores one row per contract. Time stores date, employee, job code, task, hours and cost rate. Expenses stores date, supplier, job code, amount, tax treatment and approval. A summary tab can use SUMIFS to aggregate hours and expenses by job code. For example, if column B in Time contains job codes and column E contains hours, =SUMIFS(Time!E:E,Time!B:B,A2) returns hours for the job code in A2. Multiply each time row by the appropriate cost rate before summing monetary labour costs. Do not multiply total hours by one blended rate if staff costs differ significantly. Keep the estimate frozen when a project begins. Record approved change orders separately rather than overwriting the original quote. This preserves the evidence you need to improve future estimates. Use job costing to improve your next proposal Review the last five projects of the same type. Compare quoted hours with actual hours, median revision effort and direct subcontractor spend. If websites routinely take 25% more hours than quoted, either improve scoping or increase the planned effort. If a certain client segment has consistently poor margins, examine service design and payment terms before accepting similar work. For the wider pricing logic, read Nitross's gross margin guide and its guide to customer profitability analysis. Job costing supplies the project-level evidence those decisions need. A 30-day implementation plan PeriodActionDeliverable Days 1-3Select five recent projects and assign job codes.Job register Days 4-7Set labour cost rates and overhead policy.Cost-rate sheet Days 8-12Start daily time and expense logging.Live project records Days 13-17Compare estimates with actual costs.First variance report Days 18-23Investigate two low-margin projects.Root-cause findings Days 24-27Update quote templates and change rules.Revised proposal calculator Days 28-30Review team adoption and assign ownership.Monthly job-costing routine Five mistakes that distort project profit Ignoring founder time. The project looks cheap only because the owner worked without recording a cost.Mixing direct and shared costs. A company-wide subscription is not automatically a direct expense of one job.Double-counting overhead. Loaded hourly rates and separate overhead allocation must use a consistent definition.Tracking invoices but not effort. Unbilled meetings and revisions can consume most of the margin.Confusing margin with markup. A 30% markup on cost is not a 30% margin on revenue. Frequently asked questions Can a freelancer use job costing without employees?Yes. Record your own hours at a reasonable internal cost rate, direct tools and subcontractor fees. This helps compare projects and avoid underpricing. Should GST be included in project revenue?For an internal profitability view, use revenue net of output GST collected on behalf of the government. Apply a consistent policy to recoverable and non-recoverable input GST. What is the difference between job costing and time tracking?Time tracking measures effort. Job costing converts effort and other inputs into project costs, then compares them with revenue and budget. Do I need expensive software?No. A disciplined spreadsheet is enough to test the method. Move to software when project volume, approvals or reporting needs justify it. How often should I review job profitability?Weekly during delivery and once after completion. A monthly portfolio review helps update pricing and capacity decisions. Start with your next three projects Give each job a code, agree on cost rates and log time daily. After two weeks, compare estimated and actual cost. You may discover that your highest-revenue project is not your best project. That is exactly the decision job costing is designed to improve. Sources: QuickBooks job-costing documentation; QuickBooks cost allocation guide; Asana timesheets and budgets documentation.