Skip to main content
This guide covers filing a regular non-salary TDS return for payments to residents using a prepared Form 140 text file. Form 140 replaces Form 26Q. See the Income Tax Department’s Form 140 FAQs for the form’s requirements.

Before you start

  • Get a Sandbox API key and access token using the Quickstart guide.
  • Prepare the Form 140 TXT file for your TAN, tax year, and quarter. You can use the TDS Reports API to generate it.
  • Keep the TAN and a mobile number for CSI OTP verification ready. Obtain the user’s consent before requesting the OTP.
The examples use Q1 of TY 2026-27. Replace the sample TAN and placeholders with your own values. Use the same TAN and return period throughout. Already have the CSI file? Start at Create an FVU job. If you have a validated ZIP containing the FVU file and Form 27A, start at Create an e-filing job.

File the return

1

Request the CSI OTP

Call Generate CSI OTP with the TAN, mobile number, and challan date range.The example covers 1 April to 31 July 2026 in IST. The timestamps are in milliseconds. Adjust the range to include all challans needed for the return.
Save data.reference_id for OTP verification. If the response has no reference ID, check its message before continuing.
2

Verify the OTP and download CSI

Call Verify CSI OTP with the reference ID and the OTP received.
Use data.csi_url to download the file. If verification fails, resolve the error before continuing.
3

Create an FVU job

Call Generate FVU with the return details. This guide uses "regular" as the filing type.
Save data.job_id as your FVU job ID. The response also provides data.txt_file_upload_url and data.csi_file_upload_url for the next step.
4

Upload the TXT and CSI files

Upload both files to the URLs returned by the FVU job. Use the signed upload URLs directly.
Confirm that both uploads succeed before checking the job.
5

Check validation and download the FVU ZIP

Call Get FVU job status with the FVU job ID.
Check data.status; an HTTP 200 response alone does not mean validation succeeded. Poll until the job reaches succeeded or failed.If it fails, review the validation report at data.validation_report_file_url when provided. Correct the return and create a new FVU job.When it succeeds, download data.fvu_zip_file_url. Check that the ZIP contains the FVU file and Form 27A.
6

Create an e-filing job

Call E-file TDS return using the same TAN, tax year, quarter, and form as the validated return.
Save the new data.job_id as your e-filing job ID. It is separate from the FVU job ID. Use data.fvu_upload_file_url for the upload.
7

Upload the FVU ZIP

Upload the ZIP containing the validated FVU file and Form 27A.
Creating a job does not complete the filing. After the upload succeeds, check the e-filing status.
8

Check filing status and download the receipt

Call Get TDS e-filing status with the e-filing job ID.
Poll until data.status is succeeded or failed. If the job fails, read data.message and resolve the error.When it succeeds, save data.receipt_number and download the receipt from data.receipt_file_url.

After filing

After TRACES processes the Form 140 statement and makes the certificates available, follow the Form 131 certificate guide.