Fast GST Refund Generators API
The Generators API from Fast GST Refund — 2 operation(s) for generators.
The Generators API from Fast GST Refund — 2 operation(s) for generators.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/fastgstrefund-com:fastgstrefund-com-generators-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Fast GST Refund preparation Generators API
version: 1.3.1
description: Public preparation guidance, and creation of the Statement 3 and Annexure B JSON files for a GST export refund application. Checking records is open to everyone. A file needs a signed-in account that has paid for the claim. No source-system retrieval, eligibility decision or government submission.
contact:
email: support@fastgstrefund.com
url: https://fastgstrefund.com/for-agents/
servers:
- url: https://fastgstrefund.com
tags:
- name: Generators
paths:
/api/generators/statement3:
get:
operationId: statement3Requirements
summary: Statement 3 fields and where each value comes from
security: []
responses:
'200':
description: Field schema, sources, limits and utility version
tags:
- Generators
post:
operationId: statement3CheckOrCreate
summary: Check records or create the Statement 3 JSON file
security:
- {}
- account:
- refund:generate
description: 'action=validate needs no account and returns every error with its path and a plain-language fix. action=generate needs an account that has paid for the claim (one GSTIN and From/To period; one payment covers both files and all corrections) and returns the file. Amounts may be strings or numbers; dates DD-MM-YYYY; periods MMYYYY. A JSON file made by the official offline utility is accepted as data unchanged. Limits: 8 MB and 10000 rows per file. HTTP 402 means the claim has not been paid for; payment is made on the website.'
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: false
required:
- action
- data
properties:
action:
type: string
enum:
- validate
- generate
data:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
gstin:
type: string
pattern: ^\d{2}[A-Z]{5}\d{4}[A-Z][1-9A-Z][Z1-9A-J][0-9A-Z]$
description: Applicant GSTIN, 15 characters.
fromFp:
type: string
pattern: ^(0[1-9]|1[0-2])\d{4}$
description: First return period of the claim, MMYYYY.
toFp:
type: string
pattern: ^(0[1-9]|1[0-2])\d{4}$
description: Last return period of the claim, MMYYYY.
documents:
minItems: 1
maxItems: 10000
type: array
items:
type: object
properties:
docType:
type: string
enum:
- Invoice
- Debit Note
- Credit Note
inum:
type: string
pattern: ^[A-Za-z0-9/-]{1,16}$
description: 'Document number: up to 16 letters, digits, / or -.'
idt:
type: string
pattern: ^\d{2}-\d{2}-\d{4}$
description: Document date, DD-MM-YYYY.
val:
type: string
pattern: ^(?:0|[1-9]\d{0,14})(?:\.\d{1,2})?$
description: Document value in INR, e.g. 1180.50.
type:
type: string
enum:
- S
- G
description: S for a service export, G for a goods export.
sbpcode:
description: 'Goods only: six-character port code.'
type: string
pattern: ^[A-Za-z0-9]{6}$
sbnum:
description: 'Goods only: shipping bill number, 3 to 7 digits.'
type: string
pattern: ^\d{3,7}$
sbdt:
description: 'Goods only: shipping bill date, DD-MM-YYYY.'
type: string
pattern: ^\d{2}-\d{2}-\d{4}$
fobValue:
description: 'Goods only: FOB value in INR, up to 4 decimals.'
type: string
pattern: ^(?:0|[1-9]\d{0,14})(?:\.\d{1,4})?$
egmref:
description: 'Goods only: EGM reference, 1 to 20 letters or digits.'
type: string
pattern: ^[A-Za-z0-9]{1,20}$
egmrefdt:
description: 'Goods only: EGM date, DD-MM-YYYY.'
type: string
pattern: ^\d{2}-\d{2}-\d{4}$
required:
- docType
- inum
- idt
- val
- type
additionalProperties: false
description: Export invoices, debit notes and credit notes.
receipts:
maxItems: 10000
type: array
items:
type: object
properties:
num:
type: string
pattern: ^[A-Za-z0-9]{2,30}$
description: BRC/FIRC number, letters or digits. The GST portal's instructions give 3 to 30 characters; the offline utility also takes 2, which is accepted here with a note.
dt:
type: string
pattern: ^\d{2}-\d{2}-\d{4}$
description: BRC/FIRC date, DD-MM-YYYY.
val:
type: string
pattern: ^(?:0|[1-9]\d{0,14})(?:\.\d{1,2})?$
description: INR value realised under this BRC/FIRC for the listed documents.
required:
- num
- dt
- val
additionalProperties: false
description: Bank realisation rows for service exports. A separate list, not tied to individual invoices; the same BRC/FIRC number may appear more than once. Use [] for goods-only statements.
required:
- gstin
- fromFp
- toFp
- documents
- receipts
additionalProperties: false
responses:
'200':
description: 'For validate: valid, errors, warnings and totals. For generate: the JSON file as an attachment; Content-Disposition gives its name.'
'401':
description: generate without an account; WWW-Authenticate gives the OAuth resource metadata
'402':
description: The account has not paid for this GSTIN and period. The body includes the claim.
'413':
description: Request exceeds 8 MB
'422':
description: Entries need correcting; see errors[].path and errors[].message
'429':
description: Rate limit reached; wait before retrying
'503':
description: Temporarily unavailable
tags:
- Generators
/api/generators/annexureb:
get:
operationId: annexurebRequirements
summary: Annexure B fields and where each value comes from
security: []
responses:
'200':
description: Field schema, sources, limits and utility version
tags:
- Generators
post:
operationId: annexurebCheckOrCreate
summary: Check records or create the Annexure B JSON file
security:
- {}
- account:
- refund:generate
description: 'action=validate needs no account and returns every error with its path and a plain-language fix. action=generate needs an account that has paid for the claim (one GSTIN and From/To period; one payment covers both files and all corrections) and returns the file. Amounts may be strings or numbers; dates DD-MM-YYYY; periods MMYYYY. A JSON file made by the official offline utility is accepted as data unchanged. Limits: 8 MB and 10000 rows per file. HTTP 402 means the claim has not been paid for; payment is made on the website.'
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: false
required:
- action
- data
properties:
action:
type: string
enum:
- validate
- generate
data:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
gstin:
type: string
pattern: ^\d{2}[A-Z]{5}\d{4}[A-Z][1-9A-Z][Z1-9A-J][0-9A-Z]$
description: Applicant GSTIN, 15 characters.
fromFp:
type: string
pattern: ^(0[1-9]|1[0-2])\d{4}$
description: First return period of the claim, MMYYYY.
toFp:
type: string
pattern: ^(0[1-9]|1[0-2])\d{4}$
description: Last return period of the claim, MMYYYY.
filename:
type: string
pattern: ^[A-Za-z0-9](?:[A-Za-z0-9 ._()-]{0,98}[A-Za-z0-9_()-])?$
description: Name of the downloaded file without .json. It is also written inside the file. Use a different name for each part of a split upload.
reversals:
type: object
properties:
revCGST:
type: string
pattern: ^(?:0|[1-9]\d{0,14})(?:\.\d{1,2})?$
revSGST:
type: string
pattern: ^(?:0|[1-9]\d{0,14})(?:\.\d{1,2})?$
revIGST:
type: string
pattern: ^(?:0|[1-9]\d{0,14})(?:\.\d{1,2})?$
revCess:
type: string
pattern: ^(?:0|[1-9]\d{0,14})(?:\.\d{1,2})?$
revOthCGST:
type: string
pattern: ^(?:0|[1-9]\d{0,14})(?:\.\d{1,2})?$
revOthSGST:
type: string
pattern: ^(?:0|[1-9]\d{0,14})(?:\.\d{1,2})?$
revOthIGST:
type: string
pattern: ^(?:0|[1-9]\d{0,14})(?:\.\d{1,2})?$
revOthCess:
type: string
pattern: ^(?:0|[1-9]\d{0,14})(?:\.\d{1,2})?$
required:
- revCGST
- revSGST
- revIGST
- revCess
- revOthCGST
- revOthSGST
- revOthIGST
- revOthCess
additionalProperties: false
description: 'ITC reversals from GSTR-3B. rev*: rules 38, 42 and 43 and section 17(5). revOth*: other reversals, Table 4(B)(2). Enter 0 where there is none. For a split upload, enter reversals only in the last file.'
invoices:
minItems: 1
maxItems: 10000
type: array
items:
type: object
properties:
typeOfInwardSupply:
type: string
enum:
- Import of Goods
- Import of Services
- Import of Goods(Supplies from SEZ to DTA)
- Import of Services(Supplies from SEZ to DTA)
- Inward Supplies from Registered Persons
- Inward Supplies liable to Reverse Charge (Registered Persons)
- Inward Supplies liable to Reverse Charge (Unregistered Persons)
- Inward Supplies from ISD
istype:
type: string
enum:
- Invoice/Bill of Entry
- Credit Note
- Debit Note
stin:
anyOf:
- type: string
pattern: ^\d{2}[A-Z]{5}\d{4}[A-Z][1-9A-Z][Z1-9A-J][0-9A-Z]$
- type: string
const: ''
description: Supplier GSTIN. Empty for imports of goods or services and for reverse charge from unregistered persons.
snm:
type: string
minLength: 1
maxLength: 100
description: Supplier name.
inum:
type: string
pattern: ^[A-Za-z0-9/-]{1,16}$
description: Document number. For goods imports, the bill of entry number (3 to 7 digits).
idt:
type: string
pattern: ^\d{2}-\d{2}-\d{4}$
description: Document date, DD-MM-YYYY.
portCode:
anyOf:
- type: string
pattern: ^[A-Za-z0-9]{6}$
- type: string
const: ''
description: Six-character port code for goods imports; else empty.
val:
type: string
pattern: ^(?:0|[1-9]\d{0,14})(?:\.\d{1,2})?$
description: Document value in INR. Use 0 for ISD documents.
catOfInv:
type: string
enum:
- Inputs
- Input Services
- Capital Goods
hsnSac:
type: string
pattern: ^(?:\d{4}|\d{6}|\d{8})$
description: HSN or SAC with 4, 6 or 8 digits.
camt:
type: string
pattern: ^(?:0|[1-9]\d{0,14})(?:\.\d{1,2})?$
description: Central tax. 0 for imports.
samt:
type: string
pattern: ^(?:0|[1-9]\d{0,14})(?:\.\d{1,2})?$
description: State/UT tax. 0 for imports.
iamt:
type: string
pattern: ^(?:0|[1-9]\d{0,14})(?:\.\d{1,2})?$
description: Integrated tax.
cessamt:
type: string
pattern: ^(?:0|[1-9]\d{0,14})(?:\.\d{1,2})?$
description: Cess.
isItcBlocked:
type: string
enum:
- 'Yes'
- 'No'
- Partially
description: Whether ITC is blocked under section 17(5).
elgItc:
type: string
enum:
- 'Yes'
- 'No'
- Partially
description: Eligible for ITC.
elgItcAmt:
type: string
pattern: ^(?:0|[1-9]\d{0,14})(?:\.\d{1,2})?$
description: Amount of eligible ITC.
inelgItcAmt:
type: string
pattern: ^(?:0|[1-9]\d{0,14})(?:\.\d{1,2})?$
description: Amount of ineligible ITC.
returnPeriod2B:
type: string
pattern: ^(?:(?:0[1-9]|1[0-2])-\d{4})?$
description: GSTR-2B period that contains the document, MM-YYYY. Empty for imports of services (including SEZ to DTA) and reverse charge from unregistered persons.
required:
- typeOfInwardSupply
- istype
- stin
- snm
- inum
- idt
- portCode
- val
- catOfInv
- hsnSac
- camt
- samt
- iamt
- cessamt
- isItcBlocked
- elgItc
- elgItcAmt
- inelgItcAmt
- returnPeriod2B
additionalProperties: false
description: One row per input category and HSN/SAC. Split an invoice that has more than one.
required:
- gstin
- fromFp
- toFp
- filename
- reversals
- invoices
additionalProperties: false
responses:
'200':
description: 'For validate: valid, errors, warnings and totals. For generate: the JSON file as an attachment; Content-Disposition gives its name.'
'401':
description: generate without an account; WWW-Authenticate gives the OAuth resource metadata
'402':
description: The account has not paid for this GSTIN and period. The body includes the claim.
'413':
description: Request exceeds 8 MB
'422':
description: Entries need correcting; see errors[].path and errors[].message
'429':
description: Rate limit reached; wait before retrying
'503':
description: Temporarily unavailable
tags:
- Generators
components:
securitySchemes:
account:
type: oauth2
description: OAuth 2.1 authorization code with S256 PKCE. Clients register at /oauth/register. The person signs in with an emailed code. See /.well-known/oauth-authorization-server.
flows:
authorizationCode:
authorizationUrl: https://fastgstrefund.com/oauth/authorize
tokenUrl: https://fastgstrefund.com/oauth/token
refreshUrl: https://fastgstrefund.com/oauth/token
scopes:
refund:generate: Check records, and create and download files for claims the account has paid for.