> ## Documentation Index
> Fetch the complete documentation index at: https://developer.sandbox.co.in/llms.txt
> Use this file to discover all available pages before exploring further.

# Form 131 API: generate certificates, formerly Form 16A

> Generate Form 131 certificates, formerly Form 16A, with saved TRACES credentials. Use enriched API examples to create a job and download PDF ZIP files.

Use Sandbox's API to generate Form 131 certificates from TRACES and download ZIP files containing certificate PDFs. Form 131 is the non-salary TDS certificate that replaces Form 16A under the Income-tax Act, 2025. See the [Income Tax Department's Form 131 FAQs](https://www.incometaxindia.gov.in/documents/d/guest/form-131-faqs) for the statutory requirements.

This recipe uses the enriched APIs with saved TRACES credentials. Sandbox manages the TRACES session. To manage authentication and token refresh yourself, follow [Generate certificates with a deductor token](https://developer.sandbox.co.in/recipes/tds/certificates/generate-with-deductor-token.md).

## Before you start

* Obtain a Sandbox access token using the [Quickstart guide](https://developer.sandbox.co.in/guides/get-started/quickstart.md).
* Confirm that TRACES has processed the relevant Form 140 or Form 144 statement and made the certificates available. This applies whether you filed through Sandbox or elsewhere.
* Keep the TAN and its TRACES password ready.

Replace the sample TAN and period with your own values. Use the same TAN as the saved credentials.

## Generate the certificates

### 1. Add the TRACES credentials

Add the TAN and its password with the [Add TRACES credentials](https://developer.sandbox.co.in/api-reference/tds/compliance/traces-credentials/endpoints/save_credential.md) endpoint.

```bash theme={null}
curl --request POST \
  --url https://api.sandbox.co.in/tds/traces/deductors/credential \
  --header 'Authorization: {sandbox-access-token}' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: {sandbox-api-key}' \
  --data '{
    "@entity": "in.co.sandbox.tds.traces.deductor.credential.request",
    "tan": "AHMS45586C",
    "password": "{traces-password}"
  }'
```

Skip this step if valid credentials are already saved for the TAN. To replace saved credentials, follow the [credential endpoint instructions](https://developer.sandbox.co.in/api-reference/tds/compliance/traces-credentials/endpoints/save_credential.md).

### 2. Create a Form 131 certificate job

Call the [Create TDS or TCS certificate job](https://developer.sandbox.co.in/api-reference/tds/compliance/certificates/endpoints/submit_job.md) endpoint with `131` in the path.

```bash theme={null}
curl --request POST \
  --url https://api.sandbox.co.in/tds/compliance/enriched/traces/deductor/certificates/131 \
  --header 'Authorization: {sandbox-access-token}' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: {sandbox-api-key}' \
  --data '{
    "@entity": "in.co.sandbox.tds.compliance.certificate.job.request",
    "quarter": "Q1",
    "tax_year": "TY 2026-27",
    "tan": "AHMS45586C"
  }'
```

Save `data.job_id` from the response. You need this value to check the job status.

### 3. Check the certificate job status

Call the [Get TDS certificate job status](https://developer.sandbox.co.in/api-reference/tds/compliance/certificates/endpoints/poll_job.md) endpoint with the `job_id` from the submit response.

```bash theme={null}
curl --request GET \
  --url 'https://api.sandbox.co.in/tds/compliance/enriched/traces/deductor/certificates/131/status?job_id={job_id}' \
  --header 'Authorization: {sandbox-access-token}' \
  --header 'x-api-key: {sandbox-api-key}' \
  --header 'x-api-version: 1.0.0'
```

Continue polling while the status is `created`, `queued`, or `in_progress`. When the status is `failed`, read `data.message` for the reason. Stop and resolve the error before submitting another job.

### 4. Download the certificate ZIP files

When the status is `succeeded`, the response contains one or more download URLs in `data.certificate_pdf_zip_urls`.

Response excerpt:

```json theme={null}
{
  "data": {
    "job_id": "518bf6d5-be9d-4723-8fee-2382919fb605",
    "status": "succeeded",
    "certificate_pdf_zip_urls": [
      "{certificate-pdf-zip-url}"
    ]
  }
}
```

Download each ZIP file and store it in your system.

```bash theme={null}
curl --request GET \
  --url '{certificate-pdf-zip-url}' \
  --output form-131-certificates.zip
```

## Related API operations

* [Search certificate jobs](https://developer.sandbox.co.in/api-reference/tds/compliance/certificates/endpoints/fetch_job.md) to find previous requests for a TAN and period.
* [Certificate webhooks](https://developer.sandbox.co.in/api-reference/tds/compliance/certificates/endpoints/webhook.md) to receive job completion updates instead of polling.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.