freelancinggetting paidinvoicing

How to Get Paid On Time as a Freelance Developer in India

A practical playbook for Indian freelancers: the clauses, invoice details, and follow-up cadence that actually get clients to pay — without awkward conversations.

Krishna Kammaje5 min read

Late payments are the single biggest drag on freelance income. You did the work, the client is happy, and yet the money sits. Most of the advice online is either too generic ("send polite reminders") or too legalistic ("file a commercial suit"). Neither helps on a Tuesday afternoon when rent is due.

This is the playbook I use and recommend to other freelance developers working with Indian and international clients. Nothing exotic — just the parts that actually move the needle.

Set payment expectations before you write a single line of code

The single biggest reason freelancers get paid late is that payment was never really discussed — just assumed. Before you start, get written confirmation on four things:

  1. The amount, in a specific currency. "₹80,000" is clear. "Around 1K USD equivalent" is not.
  2. The milestone that triggers invoicing. Delivery? Signoff? 15th of the month? Be explicit.
  3. The payment terms. Net 15 and Net 30 are the common defaults. Anything longer than Net 45 should cost more.
  4. The late-payment consequence. 1.5% per month on overdue amounts is a reasonable industry norm. Put it in the email if you don't have a formal contract.

Email confirmation is enough for small engagements. If the invoice exceeds ₹1 lakh, insist on a short written contract — even a one-page Statement of Work is enough to make the rest of this playbook work.

Make your invoice impossible to ignore or misfile

A surprising number of late payments come down to invoice friction: missing GSTIN, wrong PO number, unclear bank details. The client's accounts team sets it aside, and you get ghosted. Your invoice should include:

  • Your full legal name and address (match your PAN)
  • Your GSTIN if registered, or a note stating you're not registered
  • Client's full legal name, address, and GSTIN — not the brand name, the registered entity
  • Place of supply (determines IGST vs CGST+SGST)
  • HSN/SAC code for your services (998314 for IT services is the common one)
  • Invoice number in a consistent, sequential format (e.g. INV/2026-27/001)
  • Invoice date and due date — both, every time
  • A clear description of services with quantities and rates
  • Tax breakdown — IGST for inter-state, CGST+SGST for intra-state
  • Bank details — account name, number, IFSC, and UPI if you accept it
  • Payment terms — "Payable within 15 days of invoice date. Overdue amounts attract interest at 1.5% per month."

If you're exporting services, add an LUT declaration so you can invoice without IGST. Most freelancers miss this and end up locking up cash in GST refunds.

Invoice the day you deliver — not at month-end

Month-end batching feels efficient but it's actually expensive. An invoice raised on the 28th gets paid two weeks later than one raised on the 5th. Clients process invoices in the order they receive them, not in the order of the work dates.

The rule: the moment a milestone is hit, the invoice goes out the same day. If you finish work on a Friday, the invoice is in the client's inbox before you log off.

Send invoices through the client's preferred channel

Indian corporate clients often have a specific AP email (accounts@, finance@) that processes invoices. Sending to your project contact means they have to forward it, which adds days and risks it being missed.

Ask your project contact, once, at the start: "What's the best email to send invoices to so they get into your system quickly?" This is the single highest-leverage question you can ask — and nobody asks it.

Follow up on a schedule, not on vibes

You don't need to be pushy. You do need to be consistent. My cadence:

WhenAction
Invoice dateSend invoice with due date clearly marked
Due date − 3 daysFriendly reminder referencing invoice number
Due date"Just a heads up this is due today" note
Due date + 3 daysFormal overdue notice, mention interest clause
Due date + 10 daysEscalate to the client's finance team directly
Due date + 30 daysPause all work in progress, written notice

The key is that each step is pre-decided. You don't have to think "is it too early to send a reminder?" — you already answered that question when you set the cadence.

Use milestone billing for anything longer than a month

Never work more than four weeks without an invoice going out. For a three-month project, that means three milestones at minimum — typically 30% upfront, 40% at midpoint, 30% on delivery.

The upfront payment is not a trust issue — it's a cash flow hygiene issue. Clients who refuse any upfront are telling you they'll also be slow on the back end. Adjust your expectations accordingly.

Know when to use the MSME Samadhaan route

If you're registered as an MSME (Udyam registration), the MSMED Act 2006 gives you a legal recourse for delayed payments from registered buyers. The buyer is liable for compound interest at three times the RBI bank rate on amounts delayed beyond 45 days.

You file a case via the MSME Samadhaan portal. It's free, online, and surprisingly effective — most buyers settle before the case is heard because the interest accrual is painful.

Udyam registration itself is free and takes ten minutes. Every Indian freelancer should have it.

The tools don't matter as much as the habits

Good invoicing software helps — it removes friction, keeps your numbering consistent, auto-calculates GST, and sends reminders for you. But the habits above work with a Google Doc and Gmail too. Pick the habit first, pick the tool second.

If you want the tool, InvoiceRocket is built specifically for Indian freelancers: GST-ready, multi-currency, LUT-aware, with built-in reminders and MSME-friendly invoice numbering. It's free for most freelancers.

Either way: your future self will thank you for getting this right now, while you have the bandwidth. It's always harder to fix cash flow when you're already in a crunch.