Landing your first high-paying freelance client is an incredible feeling. You finally get to write code, solve problems, and actually get paid for your skills. But the moment the client's accounting department emails you asking for a "formal GST invoice," the panic sets in. If you are a freelance web developer, UI/UX designer, or IT consultant in India, navigating the Goods and Services Tax (GST) can feel like learning a completely undocumented, highly punitive programming language.
In this comprehensive, no-nonsense guide, I am going to break down exactly when you actually need a GST number, how to invoice local and international clients legally, how to leverage tax credits to buy gear, and the exact JavaScript logic I used to build my free GST Calculator Tool.
Do You Actually Need a GST Number? (The ₹20 Lakh Rule)
There is a massive, fear-driven misconception spread by online forums that you need a GST number the very moment you write your first line of freelance code. This is completely false.
Under Indian tax law, service providers (which strictly includes software developers, graphic designers, and IT consultants) are only legally required to register for GST if their aggregate annual turnover exceeds ₹20 Lakhs in a single financial year.
Note: If your business is registered in specific "Special Category States" (like Assam, Nagaland, Manipur, Mizoram, etc.), that mandatory threshold is reduced to ₹10 Lakhs.
If you are a student, a beginner, or a part-time freelancer making less than ₹20 Lakhs a year, you can legally and safely operate as an "Unregistered Dealer". You do not need a GSTIN to do business in India.
How to Invoice Clients Without a GSTIN
Many large corporate clients and funded startups will ask for a "GST Invoice" by default. Why? Because they want to claim Input Tax Credit (ITC) to reduce their own tax liabilities. If you are unregistered, you simply cannot provide this. More importantly, you cannot charge them for it.
Golden Legal Rule: Never add an 18% GST charge to your invoice if you do not possess a valid GSTIN. Collecting tax from a client without being registered with the government is illegal and constitutes tax fraud.
So, how do you get paid? You create a standard professional invoice using a tool like my Vanilla JS Invoice Generator. List your web development services, your total fee, and at the bottom of the PDF, clearly add this footnote in bold: "Unregistered dealer under GST. No tax applied." The client's finance team will simply process your payment as a standard business expense without requiring ITC.
Understanding CGST, SGST, and IGST (The Logic)
Once you cross the ₹20 Lakh threshold (or if you voluntarily register because massive enterprises refuse to work with unregistered vendors), you must charge 18% GST on IT and software development services. In the GST system, this falls under SAC Code 9983 (Other professional, technical and business services).
The math you apply to your invoice depends entirely on state borders:
- Intra-state (Same State): If your registered address is in Rajasthan and your client is also based in Rajasthan, you split the 18% tax evenly into 9% CGST (Central Goods and Services Tax) and 9% SGST (State Goods and Services Tax).
- Inter-state (Different State): If you are in Rajasthan and your client is in Maharashtra or Karnataka, you charge a flat 18% IGST (Integrated Goods and Services Tax).
When I built my GST Calculator, I had to write the JavaScript to handle this routing dynamically. Here is the exact, dependency-free snippet of how I format the currency and calculate the split:
// Format numbers to the Indian Rupee standard
const formatINR = (amount) => {
return new Intl.NumberFormat('en-IN', {
style: 'currency',
currency: 'INR'
}).format(amount);
};
// Calculate GST based on State Match
const calculateGST = (baseAmount, isSameState) => {
// Edge case validation
if (typeof baseAmount !== 'number' || baseAmount <= 0) return null;
const taxRate = 0.18; // 18% for IT & Software Services
const totalTax = baseAmount * taxRate;
// Return the correct tax split object
if (isSameState) {
return {
cgst: totalTax / 2,
sgst: totalTax / 2,
igst: 0,
total: baseAmount + totalTax
};
} else {
return {
cgst: 0,
sgst: 0,
igst: totalTax,
total: baseAmount + totalTax
};
}
};
// Example: Billing a client in the same state for ₹50,000
const taxDetails = calculateGST(50000, true);
console.log(`CGST: ${formatINR(taxDetails.cgst)}`); // ₹4,500.00
console.log(`SGST: ${formatINR(taxDetails.sgst)}`); // ₹4,500.00
Exporting Services: Invoicing US, UK, and Foreign Clients
What if you land a lucrative freelance client in the United States or Europe via Twitter, LinkedIn, or cold email? Do you charge them an extra 18% GST? No.
The Indian government wants to encourage the inflow of foreign currency. Therefore, exporting software services from India is considered a "Zero-Rated Supply" under the GST Act. This is a massive competitive advantage for Indian developers. You do not charge international clients any tax.
However, to do this legally without paying the 18% out of your own pocket, you must file a Letter of Undertaking (LUT) with the GST portal at the beginning of every financial year (before March 31st). This digital document basically tells the government: "I am exporting services and bringing in foreign currency, please authorize me to export without paying IGST upfront."
When generating an invoice for a foreign client, you must explicitly write: "Export of Services under LUT No. [Your LUT Number] without payment of IGST."
The Hidden Benefit: Input Tax Credit (ITC)
Why would anyone voluntarily register for GST if they make less than ₹20 Lakhs? The answer is Input Tax Credit.
If you are a registered developer, the 18% GST you pay on business expenses can be claimed back to offset your tax liability. If you buy a MacBook Pro for ₹2,000,000, the invoice includes roughly ₹30,500 in GST. If you have a GSTIN, you can claim that ₹30,500 back as ITC. The same applies to AWS server costs, domain names, Figma subscriptions, and internet bills. For high-earning freelancers, ITC is a superpower.
Frequently Asked Questions (FAQ)
Can I voluntarily register for GST before hitting ₹20 Lakhs?
Yes. Many freelancers register early because top-tier corporate clients mandate GSTINs for their vendor onboarding process. Having a GSTIN can make your agency look much more established. But be warned: once registered, you MUST file monthly or quarterly returns (GSTR-1 and GSTR-3B), even if your income for that month is zero. Missing filings results in daily late fees.
Do I need a Current Bank Account if I get a GST number?
Yes. Once you register for GST as a sole proprietor, it is highly recommended (and often mandated by banks) that you open a business Current Account to route your professional income. You should no longer use your personal Savings account for commercial transactions.
What is the Composition Scheme? Can web developers use it?
No. The GST Composition Scheme—which allows for a lower flat tax rate with far less compliance—is generally designed for traders, restaurants, and manufacturers, not for service providers, freelancers, and IT consultants. You must register under the Regular Scheme.
Does Upwork or Fiverr charge GST?
If you use freelance marketplaces, they will charge 18% GST on their platform fees (e.g., the 10% cut they take from your earnings), not on the total amount you bill the client. If you provide them with your GSTIN, you can claim this back as Input Tax Credit.
Conclusion
Taxes and legal compliance do not have to be terrifying. Keep meticulous track of your income, understand your legal turnover thresholds, and use a reliable GST Calculator to ensure your invoices are mathematically flawless before you send them out.
As you scale past the ₹20 Lakh mark, your first business investment shouldn't be a new laptop or another frontend developer—it should be hiring a registered Chartered Accountant (CA) to handle your filings so you can focus entirely on writing great code.