ITR Verification API
Check the income tax return filing history of a PAN: the acknowledgement number for each recent assessment year.
What it verifies
Lists the income tax returns filed against a PAN: the acknowledgement number for each recent assessment year (the last three financial years, plus one more after April; a longer look-back can be set for your account). A PAN that is not registered with the Income Tax Department is reported as no data.
Who uses it
- Lenders checking an applicant's income tax compliance and filing history
- Underwriting teams assessing financial credibility during onboarding
- Platforms that need proof a person or business files returns
Request and response
https://verification.techinnoverz.com/api/v1/identity-kyc/itrList the income tax returns filed against a PAN. This call is billed when it returns a successful result.
Request body
panstringrequired10-character PAN.
consentstringrequiredMust be "Y". Records that the end customer consented to this check; logged against the transaction.
referenceIdstringoptionalYour own id, echoed back in the response for reconciliation.
Example requests
curl -X POST "https://verification.techinnoverz.com/api/v1/identity-kyc/itr" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"pan": "ABCPE1234F",
"consent": "Y",
"referenceId": "app_20915"
}'const res = await fetch("https://verification.techinnoverz.com/api/v1/identity-kyc/itr", {
method: "POST",
headers: {
"x-api-key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
"pan": "ABCPE1234F",
"consent": "Y",
"referenceId": "app_20915"
}),
});
const result = await res.json();import requests
res = requests.post(
"https://verification.techinnoverz.com/api/v1/identity-kyc/itr",
headers={"x-api-key": "YOUR_API_KEY"},
json={
"pan": "ABCPE1234F",
"consent": "Y",
"referenceId": "app_20915",
},
timeout=15,
)
result = res.json()200 response — status "found"
{
"status": "found",
"data": {
"pan": "ABCPE1234F",
"filings": [
{
"assessmentYear": "2024",
"acknowledgementNumber": "583864160040724",
"filedAt": null
},
{
"assessmentYear": "2023",
"acknowledgementNumber": "571096020200723",
"filedAt": null
}
]
},
"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
panstringoptionalThe PAN that was looked up.
filingsarrayoptionalOne entry per assessment year with a return on record: assessmentYear, acknowledgementNumber and filedAt (the filing date and time when the source gives one, otherwise null). Empty when the PAN is registered but has no return in the look-back period.
Error codes
Errors return a non-200 HTTP status and the same envelope, so your retry logic and your reconciliation agree.
400 INVALID_INPUTA field is missing or malformed. The details list each problem. Not charged.
401 INVALID_KEYThe key is missing, revoked, or not a key we issued.
402 WALLET_EMPTYYour available balance is below the price of this call. Top up and retry. Not charged.
403 PRODUCTION_NOT_ENABLEDA 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_ENABLEDA test key was used before test (UAT) access was enabled for your account. Ask us to enable it.
403 API_NOT_ENABLEDThis check is switched off for your account, or is not available for live use yet.
403 IP_NOT_ALLOWEDThe key is restricted to certain IP addresses and this call came from another.
403 ACCOUNT_SUSPENDEDThe account is suspended. Contact support.
404 NO_DATAA valid request, but no record was found. Not charged.
404 ROUTE_NOT_FOUNDThere is no endpoint at that path.
405 METHOD_NOT_ALLOWEDUse the method shown in the Allow header.
409 IDEMPOTENCY_IN_PROGRESSA call with the same Idempotency-Key is still being processed. Retry after the delay in Retry-After.
413 PAYLOAD_TOO_LARGEThe request body is too large. Not charged.
415 UNSUPPORTED_MEDIA_TYPESend the request with Content-Type: application/json.
422 IDEMPOTENCY_KEY_REUSEDThis Idempotency-Key was already used with a different request body. Use a new key for a new request.
429 RATE_LIMITEDToo many requests or too many at once. Wait for the Retry-After delay.
500 INTERNAL_ERRORSomething went wrong on our side. Not charged. Quote the txnId if you contact support.
502 SOURCE_ERRORThe data source returned an error. Not charged.
503 SOURCE_DOWNThe data source is unavailable right now. Not charged. Retry after the delay in Retry-After.
504 SOURCE_TIMEOUTThe data source did not answer in time. Not charged.
{
"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 Verification API — Verify PAN card details and status against Income Tax Department records.
- PAN Advanced Verification API — Verify a PAN and also get its holder type and whether it is linked to Aadhaar.
- PAN Plus Verification API — Everything in PAN Advanced plus the PAN status, allotment date, authorised signatory of a company PAN and whether the holder is a sole proprietor, director or salaried.
- Voter ID Verification API — Verify EPIC (Voter ID) details against Election Commission of India records.
- Driving Licence Verification API — Verify driving licence number, validity and vehicle class against Parivahan records.
- Driving Licence Advanced Verification API — Verify a driving licence and also get split addresses, vehicle category dates, blood group and endorsement details.
- Passport Verification API — Validate a passport file number and date of birth and get the holder's name, passport number and application dates.
- DigiLocker Verification API — Start a DigiLocker consent flow, then fetch the person's verified documents and demographics once they approve.
- Face Liveness Verification API — Check whether a selfie shows a live person, with quality signals such as blur, mask, alignment and occlusion.
- Face Match Verification API — Compare a live selfie with a face on an identity document and return whether they match, with confidence and quality signals.
All API documentation · OpenAPI specification · Docs as plain text
