> ## Documentation Index
> Fetch the complete documentation index at: https://docs.privue.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# PAN to CIN

> Search the corporate registry for the companies registered under a PAN.



## OpenAPI

````yaml /suite/api-reference/openapi.json post /pan/v1/to-cin.1
openapi: 3.1.0
info:
  title: Privue API Suite
  version: 1.0.0
  description: >-
    Business, tax, registry, employment and identity verification against
    official Indian sources, a person's own documents read through DigiLocker
    with their consent, and an EPF member's passbook read with the OTP they
    receive.


    **Authentication.** Every request takes your API key as a bearer token:
    `Authorization: Bearer <your-key>`.


    **One envelope.** Every check returns the reasons behind a refusal and the
    record the source held, and an empty `reasons` means the check passed.
    Branch on `reasons` rather than on the status code, because a call the
    source answered returns `200` whatever it concluded.


    **DigiLocker and EPFO passbook.** A DigiLocker endpoint returns `details`
    alone: what it read, as the source holds it. So do submitting an EPFO
    passbook OTP and reading the passbook; sending the OTP answers like a check.


    **Versioning.** Each endpoint is versioned on its own, directly in its path.
    A new version of one endpoint never moves another, so no release requires
    migrating every integration at once.
servers:
  - url: https://api.privue.ai
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Checks
    description: One check on one subject, answered in the envelope every check shares.
  - name: DigiLocker
    description: >-
      A person's own documents, read through the consent they give at
      DigiLocker.
  - name: EPFO passbook
    description: >-
      A member's EPF passbook, read with the OTP sent to the mobile number on
      their account.
  - name: Orchestrated flows
    description: Every check on one business, asked and answered together in a single call.
  - name: Usage
    description: What you have called, and when.
paths:
  /pan/v1/to-cin.1:
    post:
      tags:
        - Checks
      summary: PAN to CIN
      description: Search the corporate registry for the companies registered under a PAN.
      operationId: pan.to-cin.1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PanRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PanCompaniesResponse'
              examples:
                verified:
                  summary: Two companies matched under the PAN
                  value:
                    reasons: []
                    details:
                      pan: AAACE1234F
                      registered_name: EXAMPLE TECHNOLOGIES PRIVATE LIMITED
                      companies:
                        - name: EXAMPLE TECHNOLOGIES PRIVATE LIMITED
                          cin: U74999MH2015PTC123456
                        - name: EXAMPLE TECHNOLOGIES (INDIA) PRIVATE LIMITED
                          cin: U72200KA2011PTC058421
                no_match:
                  summary: A PAN whose name matches no company
                  value:
                    reasons:
                      - code: company-not-registered-for-pan
                        message: >-
                          No company in the corporate registry is registered
                          under this PAN.
                    details:
                      pan: AAACE1234F
                      registered_name: EXAMPLE TECHNOLOGIES PRIVATE LIMITED
                      companies: []
                not_registered:
                  summary: No company found under the PAN
                  value:
                    reasons:
                      - code: company-not-registered-for-pan
                        message: >-
                          No company in the corporate registry is registered
                          under this PAN.
                    details: null
        '401':
          description: The API key is missing, malformed or not valid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuiteError'
        '403':
          description: The key is valid but is not entitled to this feature.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuiteError'
        '422':
          description: >-
            The request failed validation, or the source would not accept the
            details in it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuiteError'
        '429':
          description: >-
            The key is not cleared for this feature, or is sending too many
            requests. Nothing was called.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuiteError'
        '503':
          description: >-
            The source could not be reached, or authentication is temporarily
            unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuiteError'
        default:
          description: The request failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuiteError'
components:
  schemas:
    PanRequest:
      properties:
        pan:
          type: string
          pattern: ^[A-Z]{3}[ABCFGHJLPT][A-Z][0-9]{4}[A-Z]$
          title: Pan
          description: Permanent Account Number to search under
      type: object
      required:
        - pan
      title: PanRequest
      description: The PAN to search the registries under.
    PanCompaniesResponse:
      properties:
        reasons:
          items:
            $ref: '#/components/schemas/Reason'
          type: array
          title: Reasons
          description: >-
            Why the check did not pass, worst first, each a stable code with the
            text for it. Empty when it passed
        details:
          anyOf:
            - $ref: '#/components/schemas/PanCompanies'
            - type: 'null'
          description: The companies matched under the PAN
      type: object
      title: PanCompaniesResponse
      description: >-
        Every company the corporate registry matched under a PAN.


        The search resolves the PAN to the name it is registered to and matches
        that name against the registry, so these are candidates rather than
        companies held against the PAN itself. Nothing ranks them, and one name
        matches several companies as readily as none.
    SuiteError:
      properties:
        code:
          type: integer
          title: Code
          description: HTTP status code of the response
        timestamp:
          type: integer
          title: Timestamp
          description: Unix millisecond timestamp of when the response was produced
        message:
          type: string
          title: Message
          description: What went wrong, in one sentence
      type: object
      required:
        - code
        - timestamp
        - message
      title: SuiteError
      description: Why a request failed.
    Reason:
      properties:
        code:
          $ref: '#/components/schemas/ReasonCode'
          description: Stable code to branch on
        message:
          type: string
          title: Message
          description: What the code means, in one sentence
      type: object
      required:
        - code
        - message
      title: Reason
      description: One machine-readable reason a check did not pass.
    PanCompanies:
      properties:
        pan:
          type: string
          pattern: ^[A-Z]{3}[ABCFGHJLPT][A-Z][0-9]{4}[A-Z]$
          title: Pan
        registered_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Registered Name
        companies:
          items:
            $ref: '#/components/schemas/PanCompany'
          type: array
          title: Companies
      type: object
      required:
        - pan
      title: PanCompanies
      description: >-
        Every company matched under one PAN, and the name the PAN is registered
        to.


        Nothing here marks one company as the PAN's own: the search states no
        ranking, so a caller that wants a single company decides which on
        evidence of its own.
    ReasonCode:
      type: string
      enum:
        - cin-not-registered
        - gstin-not-registered
        - gstin-inactive
        - pan-inactive
        - pan-name-mismatch
        - pan-date-of-birth-mismatch
        - udyam-not-registered
        - udyam-not-registered-for-pan
        - udyam-cancelled
        - gst-not-registered-for-pan
        - company-not-registered-for-pan
        - epfo-member-not-found
        - uan-not-registered-for-pan
        - driving-licence-not-registered
        - driving-licence-details-mismatch
        - driving-licence-expired
        - uan-not-registered-for-mobile
        - passport-not-registered
        - passport-name-mismatch
        - source-unavailable
        - details-refused
        - bank-account-unverified
        - bank-account-unsettled
      title: ReasonCode
      description: >-
        Why a check did not pass, as the stable code a client branches on.


        Declared rather than written as strings so that every code a check can
        answer with reaches the published schema, and a client reads the whole
        set from the API reference.
    PanCompany:
      properties:
        name:
          type: string
          title: Name
        cin:
          type: string
          pattern: ^[LU][0-9]{5}[A-Z]{2}[0-9]{4}[A-Z]{3}[0-9]{6}$
          title: Cin
      type: object
      required:
        - name
        - cin
      title: PanCompany
      description: One company matched to the name a PAN is registered to.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Your API key, sent as `Authorization: Bearer <your-key>`.'

````

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