Browse documentation
Business & GST Verification APIs

Udyam Verification API

Verify a Udyam registration number and return enterprise profile, address, industries and classification history.

What it verifies

Verifies an MSME Udyam registration number and returns the enterprise profile, official address, industries, branches and classification history when the registration is active.

Who uses it

  • Lenders and NBFCs verifying MSME status during business underwriting
  • Marketplaces and B2B platforms onboarding MSME sellers
  • Compliance teams confirming Udyam registration details

Request and response

POSThttps://verification.techinnoverz.com/api/v1/business-gst/udyam

Verify a Udyam registration number and return the enterprise profile. This call is billed when it returns a successful result.

Request body

udyamNumberstringrequired

Udyam registration number, for example UDYAM-TN-20-0120135. Udyam Assist numbers use the UDYAM-I-… form.

convertNativebooleanoptional

Optional. When true, Digitap converts native-script address and industry text to English where it can.

consentstringrequired

Must be "Y". Records that the end customer consented to this check; logged against the transaction.

referenceIdstringoptional

Your own id, echoed back in the response for reconciliation.

Example requests

curl -X POST "https://verification.techinnoverz.com/api/v1/business-gst/udyam" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "udyamNumber": "UDYAM-TN-20-0120135",
  "convertNative": true,
  "consent": "Y",
  "referenceId": "app_20915"
}'

200 response — status "found"

Response
{
  "status": "found",
  "data": {
    "udyamNumber": "UDYAM-TN-20-0120135",
    "registrationDate": "2023-12-15",
    "gender": "Male",
    "dateOfBirth": null,
    "districtIndustriesCenter": "SALEM",
    "msmeDfo": "CHENNAI",
    "enterpriseName": "Empeegee Services",
    "enterpriseType": "Micro",
    "majorActivity": "TRADING",
    "organizationType": "Proprietary",
    "socialCategory": "General",
    "dateOfIncorporation": "2023-08-22",
    "dateOfCommencement": null,
    "officialAddress": {
      "city": "Salem",
      "state": "TAMIL NADU",
      "pincode": "636001",
      "email": "a@b.com",
      "mobile": "98*****475"
    },
    "branches": [],
    "industries": [
      {
        "serialNumber": "1",
        "industry": "Computer programming",
        "nicCode": "62099",
        "activity": "Services",
        "date": "2023-12-15"
      }
    ],
    "enterpriseTypeHistory": [
      {
        "classificationYear": "2023-24",
        "enterpriseType": "Micro",
        "classificationDate": "2023-12-15"
      }
    ],
    "udyamCategory": "Udyam Registration Certificate"
  },
  "source": "provider",
  "dataAsOf": "2026-11-03T09:30:00.000Z",
  "referenceId": "app_20915",
  "billing": {
    "charged": true,
    "walletBalance": "12450.00"
  },
  "txnId": "txn_8c31ba90",
  "livemode": true
}

Fields returned in data

udyamNumberstringoptional

The Udyam registration number that was verified.

registrationDatestringoptional

Date of Udyam registration as YYYY-MM-DD. null when not held.

genderstringoptional

Gender of the proprietor when held. null otherwise.

dateOfBirthstringoptional

Date of birth as YYYY-MM-DD when held. null otherwise.

districtIndustriesCenterstringoptional

District Industries Center for the registration.

msmeDfostringoptional

MSME Development and Facilitation Office.

enterpriseNamestringoptional

Registered enterprise name.

enterpriseTypestringoptional

MSME classification: Micro, Small or Medium.

majorActivitystringoptional

Major activity, for example Manufacturing, Services or Trading.

organizationTypestringoptional

Organisation form, for example Proprietary or Private Limited Company.

socialCategorystringoptional

Social category of the proprietor when held.

dateOfIncorporationstringoptional

Date of incorporation as YYYY-MM-DD when held.

dateOfCommencementstringoptional

Date of commencement as YYYY-MM-DD when held. null otherwise.

officialAddressobjectoptional

Official address with flat, premises, village, block, road, city, district, state, pincode, email and mobile when held.

branchesarrayoptional

Branch locations when held. Empty when none.

industriesarrayoptional

Industry rows with serialNumber, industry, nicCode, activity and date when held.

enterpriseTypeHistoryarrayoptional

Past MSME classifications with classificationYear, enterpriseType and classificationDate.

udyamCategorystringoptional

Certificate category label when held.

Error codes

Errors return a non-200 HTTP status and the same envelope, so your retry logic and your reconciliation agree.

400 INVALID_INPUT

A field is missing or malformed. The details list each problem. Not charged.

401 INVALID_KEY

The key is missing, revoked, or not a key we issued.

402 WALLET_EMPTY

Your available balance is below the price of this call. Top up and retry. Not charged.

403 PRODUCTION_NOT_ENABLED

A live key was used before live access was enabled for your account. Use a test key, or ask us to enable live access.

403 TEST_NOT_ENABLED

A test key was used before test (UAT) access was enabled for your account. Ask us to enable it.

403 API_NOT_ENABLED

This check is switched off for your account, or is not available for live use yet.

403 IP_NOT_ALLOWED

The key is restricted to certain IP addresses and this call came from another.

403 ACCOUNT_SUSPENDED

The account is suspended. Contact support.

404 NO_DATA

A valid request, but no record was found. Not charged.

404 ROUTE_NOT_FOUND

There is no endpoint at that path.

405 METHOD_NOT_ALLOWED

Use the method shown in the Allow header.

409 IDEMPOTENCY_IN_PROGRESS

A call with the same Idempotency-Key is still being processed. Retry after the delay in Retry-After.

413 PAYLOAD_TOO_LARGE

The request body is too large. Not charged.

415 UNSUPPORTED_MEDIA_TYPE

Send the request with Content-Type: application/json.

422 IDEMPOTENCY_KEY_REUSED

This Idempotency-Key was already used with a different request body. Use a new key for a new request.

429 RATE_LIMITED

Too many requests or too many at once. Wait for the Retry-After delay.

500 INTERNAL_ERROR

Something went wrong on our side. Not charged. Quote the txnId if you contact support.

502 SOURCE_ERROR

The data source returned an error. Not charged.

503 SOURCE_DOWN

The data source is unavailable right now. Not charged. Retry after the delay in Retry-After.

504 SOURCE_TIMEOUT

The data source did not answer in time. Not charged.

Error response
{
  "status": "error",
  "error": {
    "code": "NO_DATA",
    "message": "No record found for the given input. Not charged."
  },
  "billing": {
    "charged": false
  },
  "txnId": "txn_8c31ba91",
  "livemode": true
}

Billing

You are charged only on successful hits. Failed, no-data and error calls are free.

Every response carries billing.charged and your remaining billing.walletBalance. Per-hit pricing is set on your rate card; book a demo to get yours.

Related checks

  • PAN to Udyam API — Look up the Udyam registration linked to a business PAN, with enterprise details and certificate PDF when held.
  • Mobile to Udyam API — List Udyam registration numbers linked to a mobile number, without an OTP step.

All API documentation · OpenAPI specification · Docs as plain text