GST Taxes API
curl --request GET \
--url https://api.pazy.io/v1.0/taxes/gstimport requests
url = "https://api.pazy.io/v1.0/taxes/gst"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.pazy.io/v1.0/taxes/gst', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.pazy.io/v1.0/taxes/gst",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.pazy.io/v1.0/taxes/gst"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.pazy.io/v1.0/taxes/gst")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pazy.io/v1.0/taxes/gst")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyTax APIs
GST Taxes API
List the GST tax rates configured for your organization
GST Taxes API
curl --request GET \
--url https://api.pazy.io/v1.0/taxes/gstimport requests
url = "https://api.pazy.io/v1.0/taxes/gst"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.pazy.io/v1.0/taxes/gst', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.pazy.io/v1.0/taxes/gst",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.pazy.io/v1.0/taxes/gst"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.pazy.io/v1.0/taxes/gst")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pazy.io/v1.0/taxes/gst")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyTo create a new GST rate, use the GST Tax Creation API.
The permission required on your API key is Tax with the Read action enabled.
Authentication
All requests require an API key in the request headers. Headers:Authorization: Api-Key YOUR_API_KEY
Request
This endpoint takes no path parameters, query parameters, or body. Every GST tax configured for the organization is returned in a single response — there is no pagination.GST taxes are configured per GSTIN entity, so an organization with multiple registered entities returns one entry per rate per entity. Use
entityGstin to pick the rows belonging to the entity you’re raising the transaction for.Code Examples
curl -X GET https://api.pazy.io/v1.0/taxes/gst \
-H "Authorization: Api-Key YOUR_API_KEY"
const response = await fetch('https://api.pazy.io/v1.0/taxes/gst', {
method: 'GET',
headers: {
Authorization: 'Api-Key YOUR_API_KEY'
}
});
const result = await response.json();
import requests
url = "https://api.pazy.io/v1.0/taxes/gst"
headers = {
"Authorization": "Api-Key YOUR_API_KEY"
}
response = requests.get(url, headers=headers)
result = response.json()
Success Response
HTTP Status:200 OK
Response Fields:
| Field | Type | Description |
|---|---|---|
ok | boolean | Indicates whether the request was successful |
data.gstList | array | GST taxes configured for the organization |
data.gstList[].id | string | Tax id. Pass this as gstId to the Vendor Advance Creation API |
data.gstList[].label | string | Display name given to the tax in Pazy |
data.gstList[].description | string | The GST component this tax represents — same value as section |
data.gstList[].section | string | GST component e.g. IGST, CGST, SGST |
data.gstList[].rate | number | Tax value — a percentage when rateType is PERCENTAGE, an absolute amount when ABSOLUTE |
data.gstList[].rateType | string | How rate is applied: PERCENTAGE or ABSOLUTE |
data.gstList[].dateCreated | string | ISO 8601 timestamp of when the tax was created |
data.gstList[].entityGstin | string | GSTIN of the organization entity this tax belongs to |
data.gstList[].entityGstinName | string | Name of that organization entity |
Response Example
{
"ok": true,
"data": {
"gstList": [
{
"id": "4170",
"label": "New GST Rate",
"description": "IGST",
"section": "IGST",
"rate": 18,
"rateType": "PERCENTAGE",
"dateCreated": "2026-04-08T03:12:44.446Z",
"entityGstin": "29AAJCM3528P1ZR",
"entityGstinName": "MDP Coffee House"
},
{
"id": "4171",
"label": "GST 5%",
"description": "IGST",
"section": "IGST",
"rate": 5,
"rateType": "PERCENTAGE",
"dateCreated": "2026-04-08T03:14:10.902Z",
"entityGstin": "29AAJCM3528P1ZR",
"entityGstinName": "MDP Coffee House"
}
]
}
}
Empty Result
An organization with no GST taxes configured returns200 with an empty array, not an error:
{
"ok": true,
"data": {
"gstList": []
}
}
Error Responses
Authentication Errors
HTTP Status:401 Unauthorized
{
"ok": false,
"error": {
"code": "MISSING_CREDENTIALS",
"message": "Missing Credentials"
}
}
{
"ok": false,
"error": {
"code": "INVALID_API_KEY",
"message": "Invalid API Key"
}
}
Permission Errors
HTTP Status:403 Forbidden
Returned when the API key doesn’t have the Tax resource with the Read action enabled.
{
"ok": false,
"error": {
"code": "INSUFFICIENT_PERMISSIONS",
"message": "Permission check failed - PERMISSION_CHECK_FAILED"
}
}
Server Errors
HTTP Status:500 Internal Server Error
{
"ok": false,
"error": {
"code": "INTERNAL_ERROR",
"message": "An unexpected error occurred"
}
}
Best Practices
- Use
idas thegstIdwhen creating a vendor advance, and compute the expectedgstAmountfromrateandrateType— the create API validates your figure against its own calculation and rejects a mismatch - Filter by
entityGstinwhen your organization has multiple GSTIN entities, and keep it consistent with theorgEntityyou send on the transaction - Refresh this list at the start of each integration run rather than hardcoding ids; taxes are added and retired over time
- Match on
sectionandrate(notlabel) when mapping to your own tax master — labels are free text set by the organization
Was this page helpful?