Workflow Overview
The GSTR-9 filing process follows this sequence:- Authenticate - Create a taxpayer session (valid for 6 hours)
- Get Auto-Calculated Details - Fetch pre-calculated data from GST Department
- Pull HSN Summary - Get GSTR-1 HSN data for Table 17
- Save GSTR-9 - Upload your annual return data for validation
- Check Status - Verify the save operation completed successfully
- Get GSTR-9 Details - Retrieve saved data required for filing
- Proceed to File - Mark the return ready for filing
- Check Status - Verify proceed operation completed
- Generate EVC OTP - Get Electronic Verification Code OTP
- File GSTR-9 - Submit the annual return with OTP verification
Before you begin:
- GSTR-1 and GSTR-3B for all months of the financial year must be filed
- Ensure your Taxpayer access token is valid (6-hour validity) throughout the filing process
- The financial year format is
FY YYYY-YY(e.g.,FY 2023-24)
Authenticate and Get Taxpayer Session
Before filing GSTR-9, you must authenticate and create a taxpayer session. Follow the steps in the Generate Taxpayer Session recipe to obtain a Taxpayer access token.This access token is required for all GST Taxpayer API calls and is valid for 6 hours.
Get GSTR-9 Auto-Calculated Details
Fetch the auto-calculated table details in GSTR-9 as computed by the GST Department using the GSTR-9 Auto Calculated Details endpoint.This data is pre-populated based on your GSTR-1 and GSTR-3B filings and serves as the baseline for your annual return.
When successful, you’ll receive:
cURL Request
cURL Request
- table4 - Details of outward supplies (B2B, B2C, exports, etc.)
- table5 - Details of exempt, nil-rated, and non-GST supplies
- table6 - Input Tax Credit (ITC) details
- table8 - ITC reconciliation details
- table9 - Tax paid details
- chksum - Checksums for each table
Get GSTR-1 HSN Summary
Pull the HSN summary for outward supplies from your GSTR-1 filings using the GSTR-1 HSN Summary endpoint. This data is used to populate Table 17 in GSTR-9.Call this endpoint for each month of the financial year to compile the complete HSN summary.
When successful, you’ll receive:
cURL Request
cURL Request
- hsn.data - Array of HSN codes with taxable value, quantity, and tax amounts
- hsn_sc - HSN/SAC code
- txval - Taxable value
- iamt, camt, samt, csamt - Tax amounts (IGST, CGST, SGST, Cess)
Save GSTR-9
Save your GSTR-9 data using the Save GSTR-9 endpoint. This includes outward supplies, input tax credits (ITC), and tax payments for the financial year.
When successful, you’ll receive:
cURL Request
cURL Request
- reference_id - Use this to check the save status
reference_id for the next step.Check Save Status
Check the status of the save operation using the GST Return Status endpoint with the
Poll this endpoint every 10-15 seconds until
reference_id from the previous step.cURL Request
cURL Request
status_cd is P (Processed).When successful, the response includes:- status_cd -
Pindicates processing complete - action - The action that was processed (SAVE)
Get GSTR-9 Details
Fetch the saved GSTR-9 details using the GSTR-9 Details endpoint. This data is required for the File GSTR-9 API to complete the filing.
When successful, you’ll receive the complete GSTR-9 data with checksums for all tables. Save this entire response as it needs to be passed in the File GSTR-9 request.
cURL Request
cURL Request
Proceed to File
Mark the return as ready for filing using the Proceed to File endpoint. After this step, EVC OTP can be generated for filing.
When successful, you’ll receive:
cURL Request
cURL Request
- reference_id - Use this to check the proceed status
reference_id for the next step.Check Proceed Status
Verify the proceed operation completed successfully using the GST Return Status endpoint.
Poll until
cURL Request
cURL Request
status_cd is P (Processed). Once complete, the return is ready for filing.Generate EVC OTP
Generate an EVC (Electronic Verification Code) OTP using the Generate EVC OTP endpoint.Provide the PAN of the authorized signatory associated with the taxpayer’s GST registration.
The OTP will be sent to the registered mobile number or email of the authorized signatory. You’ll need this OTP in the next step.
cURL Request
cURL Request
File GSTR-9
File your GSTR-9 using the File GSTR-9 endpoint.Include the financial year, PAN, and EVC OTP as query parameters. Pass the complete GSTR-9 details (obtained in Step 6) in the request body.
When successful, you’ll receive:
cURL Request
cURL Request
Pass the complete GSTR-9 data from the Get GSTR-9 Details response (Step 6) in the request body. This includes all tables with their checksums.
- ack_num - Acknowledgment number confirming successful filing