GST Tax Rates API
The GST Accelerator API is a condition-aware compliance engine that returns the exact applicable GST rate for any Indian good or service — including CGST, SGST, IGST, and Compensation Cess breakdowns — with a full CBIC notification audit trail.
Unlike legacy APIs that require you to call separate endpoints for HSN search, SAC search, and rate lookup, our engine does it all in a single POST request.
https://gstaccelerator.in
"api_version": "v1"
"data_source": "CBIC 09/2025-CT(Rate)"
"effective_from": "2025-09-22"
Quickstart
Get your first GST rate in under 60 seconds.
- Create an account — Sign up with Google, GitHub, or email magic link on the Developer Dashboard.
- Generate an API key — From your dashboard, click "Generate New Key". Copy it immediately — it will not be shown again.
- Make your first request — Pass your key in the
X-API-Keyheader. Try the cURL example on the right. - Parse the response — Use
tax_rates.cgst,tax_rates.sgst, andapplicable_ratein your invoice logic.
curl -X POST https://gstaccelerator.in/api/v1/lookup \
-H "X-API-Key: gsta_live_*******************" \
-H "Content-Type: application/json" \
-d '{
"description": "laptop"
}'
[{
"hsn_code": "8471",
"description": "Portable automatic data processing machines",
"tax_rates": {
"igst": 18.0,
"cgst": 9.0,
"sgst": 9.0,
"cess": 0.0
},
"applicable_rate": {
"intrastate": "CGST 9.0% + SGST 9.0% = 18.0%",
"interstate": "IGST 18.0%"
},
"notification_ref": "09/2025-CT(Rate)",
"confidence": 0.95,
"needs_review": false
}]
Authentication
All API requests require an API key passed in the X-API-Key HTTP request header. There are no session cookies or OAuth flows required for API access.
Generating a Key
Visit the Developer Dashboard, sign in with your preferred method, and click "Generate New Key". The full key is only shown once — store it in your environment variables immediately.
X-API-Key: gsta_live_*******************
{
"detail": "Invalid or revoked API key."
}
Health Check
Check the uptime and version of the API.
{
"status": "ok",
"version": "1.0.0",
"uptime": 3600.5
}
Database Meta
Returns the total number of indexed HSN and SAC codes, and the CBIC notification source version.
{
"total_hsn": 12054,
"total_sac": 845,
"last_updated": "2025-06-01",
"source": "GST Council Notification 09/2025-CT(Rate)"
}
Lookup GST Rate
The primary endpoint. Searches the CBIC Master Database for HSN/SAC codes matching your description, evaluates applicable conditions, and returns the exact GST rate for your transaction context.
Request Body
| Field | Type | Description |
|---|---|---|
| description* | string | Natural language name of the good or service. e.g. "cotton shirt", "AC repair service" |
| sale_value_inr | float | Transaction value in INR. Required to resolve price-threshold conditions (e.g. footwear < ₹1,000 = 5%, ≥ ₹1,000 = 12%). |
| branded | boolean | true if the product is pre-packaged and labelled (branded). Affects cereal, flour, pulses etc. Defaults to false. |
| b2b | boolean | true if buyer is a GST-registered business. Affects supply to SEZ, specific goods-transport services, etc. |
| supply_type | enum | "intrastate" or "interstate". Controls the formatting of the applicable_rate string in the response. Defaults to "intrastate". |
curl -X POST https://gstaccelerator.in/api/v1/lookup \
-H "X-API-Key: gsta_live_******************" \
-H "Content-Type: application/json" \
-d '{
"description": "split AC unit",
"supply_type": "intrastate",
"branded": true
}'
import requests
session = requests.Session()
session.headers["X-API-Key"] = "gsta_live_******************"
r = session.post(
"https://gstaccelerator.in/api/v1/lookup",
json={
"description": "split AC unit",
"supply_type": "intrastate",
"branded": True,
}
)
result = r.json()[0]
print(result["tax_rates"]["igst"]) # → 18.0
print(result["applicable_rate"]["intrastate"]) # → "CGST 9.0% + SGST 9.0%"
const res = await fetch("https://gstaccelerator.in/api/v1/lookup", {
method: "POST",
headers: {
"X-API-Key": "gsta_live_******************",
"Content-Type": "application/json",
},
body: JSON.stringify({
description: "split AC unit",
supply_type: "intrastate",
branded: true,
}),
});
const [result] = await res.json();
console.log(result.tax_rates.igst); // 18.0
[
{
"hsn_code": "84151010",
"description": "Air conditioning machines, split system",
"tax_rates": {
"igst": 18.0, "cgst": 9.0,
"sgst": 9.0, "cess": 0.0,
"total_intrastate": 18.0
},
"applicable_rate": {
"intrastate": "CGST 9.0% + SGST 9.0% = 18.0%",
"interstate": "IGST 18.0%"
},
"condition_applied": null,
"condition_warning": null,
"confidence": 0.9,
"notification_ref": "09/2025-CT(Rate)",
"needs_review": false
}
]
Lookup GST Rate (GET)
Search for GST rates via query parameters. Identical behavior to the POST version, but useful for caching and simple integrations.
Query Parameters
| Field | Type | Description |
|---|---|---|
| q* | string | The description keyword (e.g. ?q=cotton+shirt) |
curl -X GET "https://gstaccelerator.in/api/v1/lookup?q=cotton%20shirt" -H "X-API-Key: gsta_live_***"
Autocomplete
Get fast typeahead suggestions for HSN descriptions based on a partial query. Returns up to 10 lightweight results.
Query Parameters
| Field | Type | Description |
|---|---|---|
| q* | string | Partial query (e.g. ?q=batt) |
[
{
"hsn_code": "8506",
"hsn_description": "Primary cells and primary batteries"
}
]
Lookup exact HSN code
Fetch the exact GST rate object for a specific 4-digit, 6-digit, or 8-digit HSN code.
curl -X GET "https://gstaccelerator.in/api/v1/hsn/8415" -H "X-API-Key: gsta_live_***"
Lookup exact SAC code
Fetch the exact GST rate object for a specific SAC code (services).
curl -X GET "https://gstaccelerator.in/api/v1/sac/9983" -H "X-API-Key: gsta_live_***"
Get GST Rate by HSN
A convenient query-parameter based endpoint to get the GST rate for a given HSN code.
Query Parameters
| Field | Type | Description |
|---|---|---|
| hsn* | string | The exact HSN code |
curl -X GET "https://gstaccelerator.in/api/v1/gst-rate?hsn=8517" -H "X-API-Key: gsta_live_***"
Bulk Lookup
Look up multiple HSN or SAC codes in a single request. Max 100 codes per request.
[
"8415",
"85171300",
"9983"
]
Condition Resolver
This is the defining feature of GST Accelerator. The CBIC notification database contains hundreds of conditional rate rules that most APIs ignore entirely.
Our engine parses these rules and evaluates them against the context you provide in your request. Examples of conditions we resolve:
- Footwear below ₹1,000 → 5%, at or above → 12%
- Garments below ₹1,000 → 5%, at or above → 12%
- Cereals/flour pre-packaged & labelled → 5%, loose → 0%
- Construction services (B2C affordable housing) → 1%
sale_value_inr) was missing.true when the engine cannot confidently resolve the applicable rate and human verification is advised.// Request
{
"description": "cotton shirt",
"sale_value_inr": 1500.00,
"supply_type": "intrastate"
}
// Condition resolved → 12%
{
"tax_rates": { "igst": 12.0, "cgst": 6.0, "sgst": 6.0 },
"condition_applied": "Price ≥ ₹1,000 threshold: PASSED — ₹1,500 > ₹1,000",
"condition_warning": null,
"needs_review": false
}
// Request — no sale_value_inr
{ "description": "cotton shirt" }
// Cannot resolve — warning added
{
"condition_applied": null,
"condition_warning": "Price threshold condition exists. Provide sale_value_inr to resolve.",
"needs_review": true
}
Supply Types
Pass supply_type to get the correct rate formatted for your transaction type. This does not change the underlying IGST/CGST/SGST values — it only formats the applicable_rate string in the response.
| Value | Meaning |
|---|---|
| intrastate | Supplier and buyer in the same state. Rate = CGST + SGST. Default. |
| interstate | Supplier and buyer in different states. Rate = IGST only. |
// applicable_rate when intrastate
"applicable_rate": {
"intrastate": "CGST 9.0% + SGST 9.0% = 18.0%",
"interstate": "IGST 18.0%"
}
// Invoice GST calculation — intrastate
invoice_value = 25000
cgst = (invoice_value × 9) / 100 # ₹2,250
sgst = (invoice_value × 9) / 100 # ₹2,250
// Invoice GST calculation — interstate
igst = (invoice_value × 18) / 100 # ₹4,500
Response Fields
All successful responses return a JSON array, sorted by confidence score (highest first). Up to 50 results are returned.
true when human verification is recommended before using the rate.{
"hsn_code": "6205",
"description": "Men's or boys' shirts",
"tax_rates": {
"igst": 12.0,
"cgst": 6.0,
"sgst": 6.0,
"utgst": 6.0,
"cess": 0.0,
"total_intrastate": 12.0,
"total_interstate": 12.0
},
"applicable_rate": {
"intrastate": "CGST 6.0% + SGST 6.0% = 12.0%",
"interstate": "IGST 12.0%",
"recommended": null
},
"condition_applied": "Price ≥ ₹1,000: PASSED — ₹1,500 > ₹1,000",
"condition_warning": null,
"confidence": 0.9,
"notification_ref": "09/2025-CT(Rate)",
"needs_review": false
}
Error Codes
The API uses standard HTTP status codes. All error responses include a detail field with a human-readable message.
detail field for specifics.X-API-Key header is missing, the key is invalid, or it has been revoked.{
"detail": "Invalid or revoked API key."
}
{
"detail": [
{
"loc": ["body", "description"],
"msg": "field required",
"type": "value_error.missing"
}
]
}
Rate Limits
Limits apply per API key per calendar month. Requests that exceed your plan's quota receive a 429 response.
| Plan | Monthly Quota | Overage |
|---|---|---|
| Free | 100 calls | Blocked |
| Developer | 5,000 calls | ₹0.10 / call |
| Pro | 50,000 calls | ₹0.08 / call |
| Business | Unlimited | — |