- Checking for potential notices using TDS Analytics
- Uploading non-salary data in Sheet JSON format
- Generating the Form 26Q TXT file via TDS Reports
- Getting ready to move into the FVU + e-filing flow
Before you begin, make sure you’ve:
- Generated a Sandbox
authorizationtoken using the Authenticate endpoint. - Identified the correct
tan,financial_year(for example,FY 2024-25),quarter(Q1-Q4), andform(26Qfor non-salary TDS).
Check for potential notice
Start by checking whether your Form 26Q return is likely to trigger any notices. Use the TDS Analytics - Potential Notices API to create a job for the given TAN, financial year, quarter, and form.This returns a
A successful response returns:
job_id and a json_url where you’ll later upload non-salary data in Sheet JSON format.cURL Request - Create Potential Notice Job
cURL Request - Create Potential Notice Job
job_id- the Potential Notice job identifierstatus- typicallycreatedorqueuedjson_url- a pre-signed S3 URL for uploading non-salary data in Sheet JSON format
job_id and json_url in the next steps.Provide data (upload Sheet JSON for potential notices)
Next, upload the data required to detect potential notices.The
After a successful upload, Sandbox will process the workbook asynchronously and update the Potential Notice job with the analysis results.
json_url returned in Step 1 expects a Sheet JSON payload that represents the Form 26Q workbook (Deductor details, Deductee master, payment details, challans, and mappings).You generate this Sheet JSON in your backend and then upload it with a PUT request.The Sheet JSON structure for Form 26Q is documented in the non-salary payments schema and the Sheet JSON guide. Make sure your workbook name, sheet names, and columns match the specification for non-salary TDS.
cURL Request - Upload Sheet JSON to json_url
cURL Request - Upload Sheet JSON to json_url
Fetch potential notice details
Once the data is uploaded, poll the Potential Notice job to see whether any potential issues were identified.Use the Potential Notices GET endpoint with the
When processing is complete, you’ll see:
job_id from Step 1.cURL Request - Fetch Potential Notice Job
cURL Request - Fetch Potential Notice Job
status- for example,succeededorfailed- A link to a Potential Notice report (for example, an Excel or JSON report) summarizing possible issues like missing challans, mismatches, or under-deductions
Generate TDS report (create TXT job for Form 26Q)
After you’ve identified and understood potential issues, you can move on to preparing the TXT file using the TDS Reports - TXT API.This step creates a TXT generation job and returns a new
Notes:
job_id and json_url for uploading the final, corrected Form 26Q Sheet JSON workbook.cURL Request - Create TXT Generation Job
cURL Request - Create TXT Generation Job
- Omit
previous_receipt_numberfor an original (regular) return. - For a correction return, set
previous_receipt_numberto the earlier Form 26Q acknowledgement number.
job_id- the TXT generation job idjson_url- pre-signed S3 URL where you’ll upload the final quarter-wise Form 26Q Sheet JSON
Repeat the above steps after fixing issues
If the Potential Notice report (or later validation) indicates data problems, you should:
- Correct your source data (deductees, payments, challans, etc.) in your system.
- Regenerate the Sheet JSON workbook for Form 26Q.
- Re-upload the updated Sheet JSON to the appropriate
json_url. - If required, rerun the Potential Notice flow (Steps 1-3) until the report is clean.
Provide quarterly details (upload Sheet JSON for TXT)
Now upload the final, quarter-specific Form 26Q Sheet JSON workbook to the
Once the upload succeeds, Sandbox processes this workbook to generate the Form 26Q TXT file in the background.
json_url returned from the TXT job in Step 4.This workbook should contain all the data required for the Form 26Q return for the selected quarter:- Deductor details
- Deductee master and PAN details
- Vendor/contractor payments and TDS information
- Challan or book-entry details and mappings
cURL Request - Upload Sheet JSON for TXT
cURL Request - Upload Sheet JSON for TXT
Fetch TXT file
After uploading the final Sheet JSON, poll the TXT job to track TXT generation status.
When the job
cURL Request - Fetch TXT Job Status
cURL Request - Fetch TXT Job Status
status is succeeded, the response will include:- A URL to download the generated Form 26Q TXT file
File Form 26Q TDS return (next steps)
With a clean Form 26Q TXT in hand, you’re ready to move to the actual filing workflow:
- Generate FVU using the TXT and CSI files with the TDS Compliance - FVU Generation APIs.
- E-file the TDS return via the TDS Compliance - E-File APIs.
- Download the filing receipts and, later, Form 16A certificates for deductees.