> ## 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.

# Submit PANs for TRACES verification

> Submit a JSON payee workbook with a deductor access token and receive the TRACES token number for bulk PAN verification.

[Authenticate a TRACES deductor](https://developer.sandbox.co.in/api-reference/tds/compliance/traces/endpoints/authenticate.md) and pass the returned `data.access_token` as the value of the `Authorization` header. The token identifies the TAN.

Send the [payee workbook](https://developer.sandbox.co.in/api-reference/tds/compliance/pan-verification/vanilla_payee_workbook.md) directly in the request body. Save the returned `data.token_number` to [retrieve verification status](https://developer.sandbox.co.in/api-reference/tds/compliance/pan-verification/endpoints/poll_verification.md).

For authentication, submission, and result download examples, see [Verify PANs with a deductor token](https://developer.sandbox.co.in/recipes/tds/pan-verification/verify-pans-with-deductor-token.md).


## OpenAPI

````yaml api-reference/tds/compliance/openapi.json POST /tds/compliance/traces/deductors/pan/verify
openapi: 3.1.0
info:
  title: compliance
  description: >-
    Tax Deducted at Source (TDS) is an indirect method of collecting Income Tax.
    TDS is based on the principle of “Pay as you earn” which is beneficial for
    both the Government and the taxpayer. It is where a person making a payment
    of specified nature is liable to deduct tax at a prescribed rate. This
    ensures continuous revenue for the Government by way of Tax Deducted at the
    Source.


    The Payer making a payment is also responsible to deposit TDS with the
    Income Tax Department within a specified date and file a TDS Return. Once
    filed, the deposited amount will be shown in the Payee's Form 26AS which
    they can then use to claim tax credits when filing ITR.


    However, staying TDS compliant can be a hassle for businesses, as they are
    required to :


    1. Deduct TDS from payments that are liable for TDS Deduction at an
    appropriate rate.
        
    2. Deposit TDS to Government before the due date.
        
    3. File TDS Returns on a Quarterly basis.
        
    4. Issue a TDS Certificate by the deductor to the deductee.
        

    Organizations deducting TDS have to remain compliant with each of the steps.
    Failure to do so results in TDS Penalties by Authorities. Sandbox provides
    TDS Compliance APIs to help you automate end-to-end TDS compliance.
  version: 1.0.0
servers:
  - url: https://test-api.sandbox.co.in
    description: test
  - url: https://api.sandbox.co.in
    description: prod
security: []
tags:
  - name: TDS Compliance Check
  - name: Download CSI
  - name: FVU Generation
  - name: E-File TDS Return
  - name: TRACES
  - name: TRACES/TDS Certificate
  - name: TRACES/Credentials
  - name: TRACES/Challans
  - name: TDS
  - name: TDS Certificate
  - name: TRACES Credentials
  - name: Challans
paths:
  /tds/compliance/traces/deductors/pan/verify:
    post:
      tags:
        - TRACES
        - PAN verification
      summary: Submit bulk PAN verification
      description: >-
        Submit PANs in a payee workbook and receive the TRACES token number.
        Repeated PAN values are submitted once. PAN text is sent unchanged to
        TRACES. Use the token number to check processing status and retrieve the
        completed workbook. Authenticate or refresh separately when the deductor
        access token expires.
      operationId: submitTracesPanVerification
      parameters:
        - name: Authorization
          in: header
          description: >-
            Deductor access token returned by [Authenticate a TRACES
            deductor](https://developer.sandbox.co.in/api-reference/tds/compliance/traces/endpoints/authenticate).
            The token identifies the deductor TAN.
          required: true
          schema:
            type: string
          examples:
            Submit three PANs:
              summary: Submit three PANs
              value: '{{deductor_access_token}}'
            Missing workbook sheets:
              summary: Missing workbook sheets
              value: '{{deductor_access_token}}'
            Missing API key:
              summary: Missing API key
              value: '{{deductor_access_token}}'
        - name: x-api-key
          in: header
          description: Sandbox API key.
          required: true
          schema:
            type: string
          examples:
            Submit three PANs:
              summary: Submit three PANs
              value: '{{api_key}}'
            Missing workbook sheets:
              summary: Missing workbook sheets
              value: '{{api_key}}'
            Missing deductor access token:
              summary: Missing deductor access token
              value: '{{api_key}}'
        - name: Content-Type
          in: header
          description: Request body format.
          required: true
          schema:
            type: string
          examples:
            Submit three PANs:
              summary: Submit three PANs
              value: application/json
            Missing workbook sheets:
              summary: Missing workbook sheets
              value: application/json
            Missing API key:
              summary: Missing API key
              value: application/json
            Missing deductor access token:
              summary: Missing deductor access token
              value: application/json
      requestBody:
        content:
          application/json:
            schema:
              type: object
              description: TRACES bulk PAN verification input workbook.
              properties:
                '@entity':
                  type: string
                  enum:
                    - workbook
                name:
                  type: string
                  enum:
                    - payee_workbook
                sheets:
                  type: array
                  minItems: 1
                  maxItems: 1
                  items:
                    oneOf:
                      - type: object
                        properties:
                          '@entity':
                            type: string
                            enum:
                              - sheet
                          name:
                            type: string
                            enum:
                              - payee_sheet
                          blocks:
                            type: array
                            minItems: 1
                            maxItems: 1
                            items:
                              oneOf:
                                - type: object
                                  properties:
                                    '@entity':
                                      type: string
                                      enum:
                                        - table
                                    name:
                                      type: string
                                      enum:
                                        - payee_table
                                    header:
                                      type: array
                                      minItems: 2
                                      maxItems: 2
                                      prefixItems:
                                        - type: string
                                          enum:
                                            - sr_no
                                        - type: string
                                          enum:
                                            - pan
                                      items: false
                                    rows:
                                      type: array
                                      items:
                                        type: array
                                        minItems: 2
                                        maxItems: 2
                                        prefixItems:
                                          - type: integer
                                            minimum: 1
                                            description: >-
                                              Serial number of the payee in the
                                              uploaded workbook.
                                          - type: string
                                            description: >-
                                              PAN text supplied by the caller and
                                              submitted unchanged to TRACES.
                                        items: false
                                  required:
                                    - '@entity'
                                    - name
                                    - header
                                    - rows
                        required:
                          - '@entity'
                          - name
                          - blocks
              required:
                - '@entity'
                - name
                - sheets
            examples:
              Submit three PANs:
                summary: Submit three PANs
                value:
                  '@entity': workbook
                  name: payee_workbook
                  sheets:
                    - '@entity': sheet
                      name: payee_sheet
                      blocks:
                        - '@entity': table
                          name: payee_table
                          header:
                            - sr_no
                            - pan
                          rows:
                            - - 1
                              - AAAPW9785C
                            - - 2
                              - AAAPW9795C
                            - - 3
                              - AAAPW9805C
              Missing workbook sheets:
                summary: Missing workbook sheets
                value:
                  '@entity': workbook
                  name: payee_workbook
              Missing API key:
                summary: Missing API key
                value:
                  '@entity': workbook
                  name: payee_workbook
                  sheets:
                    - '@entity': sheet
                      name: payee_sheet
                      blocks:
                        - '@entity': table
                          name: payee_table
                          header:
                            - sr_no
                            - pan
                          rows:
                            - - 1
                              - AAAPW9785C
                            - - 2
                              - AAAPW9795C
                            - - 3
                              - AAAPW9805C
              Missing deductor access token:
                summary: Missing deductor access token
                value:
                  '@entity': workbook
                  name: payee_workbook
                  sheets:
                    - '@entity': sheet
                      name: payee_sheet
                      blocks:
                        - '@entity': table
                          name: payee_table
                          header:
                            - sr_no
                            - pan
                          rows:
                            - - 1
                              - AAAPW9785C
                            - - 2
                              - AAAPW9795C
                            - - 3
                              - AAAPW9805C
        required: true
      responses:
        '200':
          description: The PAN verification request was submitted to TRACES.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    enum:
                      - 200
                  timestamp:
                    type: integer
                    description: Unix timestamp in milliseconds.
                  transaction_id:
                    type: string
                  data:
                    type: object
                    properties:
                      token_number:
                        type: string
                        description: >-
                          Token number assigned by TRACES to this PAN
                          verification request.
                    required:
                      - token_number
                    additionalProperties: false
                required:
                  - code
                  - timestamp
                  - transaction_id
                  - data
                additionalProperties: false
              examples:
                Submit three PANs:
                  summary: Submit three PANs
                  value:
                    code: 200
                    timestamp: 1792265451650
                    data:
                      token_number: '26102348059'
                    transaction_id: 2faa2970-c4dc-4cad-9aa0-af8767aad856
        '400':
          description: Required request data is missing or invalid.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    enum:
                      - 400
                  timestamp:
                    type: integer
                    description: Unix timestamp in milliseconds.
                  transaction_id:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - timestamp
                  - transaction_id
                  - message
                additionalProperties: false
              examples:
                Missing workbook sheets:
                  summary: Missing workbook sheets
                  value:
                    code: 400
                    timestamp: 1792265461716
                    message: Invalid request body
                    transaction_id: 466092af-2865-43c2-a257-942e42bb7b63
        '401':
          description: The deductor access token is not valid for this request.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    enum:
                      - 401
                  timestamp:
                    type: integer
                    description: Unix timestamp in milliseconds.
                  transaction_id:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - timestamp
                  - transaction_id
                  - message
                additionalProperties: false
              examples:
                Missing deductor access token:
                  summary: Missing deductor access token
                  value:
                    code: 401
                    message: Unauthorized
                    timestamp: 1792265461644
                    transaction_id: 61438e84-db3c-41ea-8694-8091b7cfe000
        '403':
          description: Access to this API is denied.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    enum:
                      - 403
                  timestamp:
                    type: integer
                    description: Unix timestamp in milliseconds.
                  transaction_id:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - timestamp
                  - transaction_id
                  - message
                additionalProperties: false
              examples:
                Missing API key:
                  summary: Missing API key
                  value:
                    code: 403
                    message: Forbidden
                    timestamp: 1792265461907
                    transaction_id: 4201145a-9834-480b-adff-a5d8d8a07791
        '500':
          description: The request could not be completed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    enum:
                      - 500
                  timestamp:
                    type: integer
                    description: Unix timestamp in milliseconds.
                  transaction_id:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - timestamp
                  - transaction_id
                  - message
                additionalProperties: false
        '503':
          description: TRACES could not complete the request.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    enum:
                      - 503
                  timestamp:
                    type: integer
                    description: Unix timestamp in milliseconds.
                  transaction_id:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - timestamp
                  - transaction_id
                  - message
                additionalProperties: false
      deprecated: false
      security: []

````

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