Freelance Invoicing Best Practices for Indian Freelancers
Invoice numbering that survives an audit, payment terms that actually get paid, what to keep and for how long, and when timesheets earn their keep. The habits that make the difference three years later.
Freelancer for 10+ years with clients in the USA, Australia, Europe, South Africa and India. Built InvoiceRocket to keep his own invoicing, GST and Section 44ADA tracking in order, and to give his CA everything in one place.
Setting up invoicing takes fifteen minutes. Getting it right takes a few decisions you only make once, and which you will either thank or curse yourself for about three years later — usually on the day someone official asks you a question about a financial year you had stopped thinking about.
This is the set of habits I would give my past self. None of it is exotic. All of it is the difference between answering a query in an afternoon and losing a fortnight to it.
TL;DR. Pick a numbering scheme with the financial year in it and never change it mid-year. Set payment terms per customer, not per invoice, and make the due date do the remembering. Keep the contract, the invoice, the proof of payment and the bank realisation document as a set — a lone invoice proves very little on its own. Log expenses weekly, not annually, and handle reverse charge on foreign software at entry time. Use timesheets only if you bill by time.
I am not a chartered accountant and this is not legal advice. Retention periods and thresholds change; check the current position for your own situation.
Invoice numbering that survives an audit
The rule is short: sequential, unbroken, financial-year aware, and never changed partway through a year.
Two things go wrong in practice.
The first is gaps. If invoice 007 exists and 008 does not, the obvious question is what happened to 008 — and "I deleted a draft" is a worse answer than it sounds when you are saying it two years after the fact. Cancel invoices rather than deleting them. A cancelled invoice is a complete story; a missing number is a question.
The second is mid-year format changes. Switching from INV-001 to INV/2026-27/001 in October means your records for that year read as two different businesses. If you are going to change the scheme, change it on 1 April.
InvoiceRocket's default is INV-2026-09-001 — prefix, year, month, three-digit sequence. You can set the prefix, the year format, the separator and the digit count under Settings, with a live preview. If you invoice under ten clients a month, the monthly variant is fine. If you want a running series per financial year instead, pick one of the FY formats. Either works. Picking one and leaving it alone is what matters.
A note on the sequence: it is derived from the highest existing number for that prefix, not from a stored counter. In practice that means it heals rather than drifting — but it also means that if you manually type an out-of-sequence number, the next auto-generated one follows that. Type carefully, or do not type at all.
Set payment terms once, per customer
Payment terms belong on the customer record, not in your head and not on each individual invoice.
The reason is that a due date you have to think about is a due date you will sometimes get wrong, and a wrong due date quietly destroys your ability to know what is actually overdue. Set Payment Terms (days) on the customer — 15 or 30 for most engagements, longer only if you have priced for it — and every invoice for them arrives with the right due date already on it.
This is what makes an Overdue status mean something. A list where the overdue flag is trustworthy is a list you act on; a list where it is roughly right is a list you ignore.
For the follow-up cadence itself — when to nudge, when to escalate, when to stop work — I have written that up separately in how to get paid on time as a freelance developer. The short version is that every step should be pre-decided, so you are never making a judgement call about whether it is too early to send a reminder.

Keep documents as sets, not as files
This is the one that matters most and gets the least attention.
An invoice on its own proves you asked to be paid. It does not prove you did the work, that the client is who you say they are, that the money arrived, or that it arrived from abroad. When a query lands, the department is not looking for a document — it is looking for a chain.
For a domestic engagement, the set is:
- the contract or SOW, showing scope and parties
- the invoice
- proof of payment — bank advice or statement line
- the TDS certificate (Form 16A) if the client withheld tax
For an export of services, add the piece everyone forgets:
- the FIRC or bank realisation advice, showing the money came in as foreign currency
That last one is the difference between a zero-rated export and, in the department's view, a plain domestic supply that you failed to charge 18% GST on. I have written about receiving exactly that notice, for ₹15.77 lakh. The invoices existed. Assembling everything else around them, three years later, is where the work was.
File documents against the customer they belong to rather than in one org-wide heap, use the document type field properly — Contract / SOW, FIRC / eFIRC, TDS Certificate (16A), Payment Proof — and set the document date to the date on the document, because that is what decides the financial year it counts for. New organizations get a folder per financial year set up automatically; use them.

How long to keep it
Under Section 36 of the CGST Act, GST records must be retained for 72 months — six years — from the due date of furnishing the annual return for that year. For income tax, six years from the end of the relevant assessment year is the working minimum, and reassessment can reach back further in high-value cases.
The practical answer: keep everything for seven years, and since these are PDFs rather than filing cabinets, there is no real reason ever to delete them.
Log expenses weekly, not annually
Every hour spent reconstructing a year of receipts in March is an hour you are paid nothing for, and the deductions you cannot substantiate are a straight cash loss.
Weekly is the right cadence — small enough that you still remember what the ₹4,200 to a vendor you have never heard of was for. Receipt upload with extraction makes this genuinely quick: hand it the PDF or photo, check what it read, save.
Two things to get right at entry time rather than later:
Reverse charge on imported services. Your Vercel, AWS, Figma, GitHub and OpenAI bills are imports of service. GST on them is your liability to pay and then claim back, not the vendor's. Setting the document type to Import of service at entry flags this. Missing it across a year is one of the more common and more expensive freelance bookkeeping errors, and it compounds quietly because nobody sends you a reminder.
Whether you can claim the GST back. Decide it when you enter the expense, while you still know what the thing was for. Deciding it in bulk at filing time is how personal expenses end up in a business ITC claim.
Use timesheets only if you bill by time
If you work fixed-price, logging hours is overhead with no payoff. Skip it.
If you bill hourly, timesheets earn their keep in one specific way: the invoice writes itself. Log entries against the customer as you work, then select the unbilled ones and generate an invoice from them. Hours are grouped into one line per distinct rate, so a month of scattered entries becomes two or three clean lines rather than forty. Those entries then lock as billed, which means you cannot accidentally bill the same work twice — a mistake that is embarrassing in one direction and expensive in the other.
The discipline that makes this work is logging the same day. Hours reconstructed on Friday for a Tuesday are a guess, and guesses are how you end up quietly under-billing yourself by fifteen percent.
The rhythm that ties it together
None of the above requires you to be organised by temperament. It requires a rhythm:
| When | What |
|---|---|
| Same day | Log hours, if you bill by time |
| On delivery | Raise and send the invoice |
| Weekly | Log expenses and receipts |
| Monthly | Check overdue invoices, file GSTR-1 and GSTR-3B |
| On receipt | File the FIRC or bank advice against the invoice |
| Annually, in April | Review your numbering scheme, renew your LUT |
The LUT renewal is worth a specific alarm. It is annual, it is free, it takes minutes, and not having one for a year you exported in is the single most expensive administrative omission available to an Indian freelancer.
Frequently asked questions
What invoice numbering format should a freelancer use?
Sequential, unbroken, and containing the financial year — for example INV-2026-27-001 or INV-2026-09-001. The specific format matters far less than consistency. Never change the scheme partway through a financial year; change it on 1 April if you must, so a year's records do not read as two different businesses.
Can I delete an invoice I raised by mistake?
Cancel it rather than deleting it. A gap in the sequence invites the question of what happened to the missing number, and answering that two years later is harder than it sounds. A cancelled invoice is a complete record; a missing one is an open question.
How long should I keep invoices and supporting documents?
GST records must be kept for 72 months from the due date of the annual return under Section 36 of the CGST Act. For income tax, six years from the end of the relevant assessment year is the working minimum, with reassessment reaching further in high-value cases. Keep everything for seven years — they are PDFs, not filing cabinets.
What documents do I need besides the invoice?
Think in sets, not files. Domestically: the contract or SOW, the invoice, proof of payment, and the TDS certificate if tax was withheld. For exports, add the FIRC or bank realisation advice showing the payment arrived in foreign currency — without it, a zero-rated export can be treated as a domestic supply you failed to charge GST on.
Do I need to worry about reverse charge on software subscriptions?
Yes. Vercel, AWS, Figma, GitHub, OpenAI and similar foreign services are imports of service, and GST on them is your liability to pay and then claim back rather than the vendor's. Flag them as imports of service when you log the expense. Missing this across a year is a common and expensive error, and nothing prompts you about it.
Should payment terms be set per customer or per invoice?
Per customer. A due date you have to decide each time is one you will occasionally get wrong, and wrong due dates make your overdue list untrustworthy — at which point you stop acting on it. Set the terms once on the customer record and every invoice inherits the correct due date.
When are timesheets worth the effort?
Only when you bill by the hour. On fixed-price work they add nothing. If you do bill hourly, log entries the same day and generate invoices from the unbilled ones, which groups hours by rate and locks the entries so the same work cannot be billed twice.
If you are setting this up from scratch, start with the getting started walkthrough — customer, contract, invoice, expenses — and come back to this once the basics are running.
InvoiceRocket handles the parts above that should not need your attention: financial-year-aware numbering, per-customer payment terms and due dates, documents filed by customer and financial year, reverse charge prompts on imported services, and LUT and filing reminders. Built for Indian freelancers, free for most of them.