Bulk Verification API
Send a whole list of PANs or GSTINs in one request and read back each row’s result, in the same shape as the single check.
The documentation opens in the VerifyAll dashboard after sign-in, for accounts with approved API access. New to the API? Start with the developer guide.
Overview
What the Bulk Verification API does
The Bulk Verification API runs one kind of check on a list of identifiers in a single request. Choose the service in the path, pan for PAN verification, pan-to-udyam for PAN to Udyam, pan-to-cin for PAN to CIN or gst for GST verification, then send a batch name and 5 to 10,000 distinct values. Repeats and blanks are dropped for you before the count is taken.
The batch is accepted straight away with a batch_id and runs in the background in chunks. You follow its progress from the batch list (status, counts per outcome and progress_percent) and read the rows as they finish. With include_result=true each successful row carries the full result in the same data schema as the stand-alone check, so the code that reads a single PAN or GSTIN answer also reads a bulk row.
Use it to check a whole vendor master, dealer network or borrower book at once, instead of a loop of single calls with your own retries and bookkeeping.
How it works
- 1
Your server sends POST /bulk-verification-v2/{serviceType}/create with serviceType pan, pan-to-udyam, pan-to-cin or gst, a batch name and the values. Outside 5 to 10,000 distinct values the batch is refused with 400 invalid_request before any charge.
- 2
The batch is charged upfront from your prepaid wallet, per unique value, and the answer carries data.batch_id with outcome pending.
- 3
Rows are checked against live records in the background. A row that could not be answered is retried, then followed up by our team, and refunded if it cannot be checked. Watch progress_percent on GET /bulk-verification-v2/{serviceType}, or receive bulk_batch.completed on your webhook endpoint.
- 4
Read the rows with GET /bulk-verification-v2/{serviceType}/{batchId}/records (add include_result=true for full results) or one row with GET /bulk-verification-v2/record/{recordId}; every row has its own PDF report.
Request and response
Bulk verification API endpoints and fields
The main fields; the full reference with every field, error code and a cURL sample is in the dashboard docs.
| Endpoint | What it does |
|---|---|
| POST/bulk-verification-v2/{serviceType}/create | Create a batch for pan, pan-to-udyam, pan-to-cin or gst |
| GET/bulk-verification-v2/{serviceType} | List batches of one service with status, counts, progress and limits |
| GET/bulk-verification-v2/{serviceType}/{batchId}/records | List the rows of a batch, with filters and optional full results |
| GET/bulk-verification-v2/record/{recordId} | Read one row with its full result |
| GET/bulk-verification-v2/record/{recordId}/certificate | Download the Udyam certificate PDF of a PAN to Udyam row, when one was found |
Request fields
| Field | What it is |
|---|---|
| serviceTypeRequired | In the path: pan, pan-to-udyam, pan-to-cin or gst. |
| nameRequired | A batch name or reference, 1 to 200 characters. |
| valuesRequired | The PANs or GSTINs: 5 to 10,000 distinct values. For pan-to-cin, company or LLP PANs (fourth letter C or F). |
| client_refOptional | Your own reference, stored with the batch (up to 100 characters). |
| include_resultOptional | Query option of the records list: true to return each successful row’s full result. |
What the answer returns
| Field | What it is |
|---|---|
| batch_id | The id of the new batch, returned by the create call with status pending. |
| status | Batch status: pending, processing, completed, completed_with_errors or failed. |
| counts / processed / progress_percent | Rows by outcome (success, no_record, invalid_input, failed), rows finished so far and how far the batch is, 0 to 100. |
| total_records / amount_charged | Distinct values in the batch and what the batch was charged (0.00 for a sandbox batch). |
| limits | min_batch_size and max_batch_size (5 and 10,000), and large_batch_size, above which a batch takes a while. |
| value / name | For each row, the identifier as you sent it and the name the check found. |
| error | Why a row has no result: reason (no_record, invalid_input, source_busy, source_unavailable, system_error), a plain message and whether it was refunded. |
| result | A successful row’s full result in the same schema as the single PAN, PAN to Udyam, PAN to CIN or GST check. |
Base URL https://api.verifyall.ai. Authenticate with the X-API-Key header (a va_sandbox_ or va_live_ key). Every answer carries data, status_code, success, message and message_code; checks add outcome, checkResultId, charged and charged_amount.
Key features
Bulk Verification API features and capabilities
Up to 10,000 values a batch
Every service takes 5 to 10,000 distinct values in one request. Duplicates and blanks are removed before the batch is counted and charged.
Same result shape as the single check
With include_result=true a row carries exactly the data of the stand-alone check, so one parser serves both single and bulk answers.
Rows that cannot be checked are refunded
A row that could not be checked after retries and follow-up is refunded, and its error says so with refunded true.
bulk_batch.completed webhook
Get a signed call on your endpoint when the batch reaches its final status, with the counts and the records URL, instead of polling.
Use cases
Where businesses use the Bulk Verification API
Vendor master clean-up
Re-check every supplier PAN or GSTIN in your ERP in one batch and fix the rows that come back invalid or with no record.
MSME status of suppliers
Run PAN to Udyam across your supplier list to see which suppliers hold a Udyam registration, and keep each certificate PDF.
Dealer and seller onboarding drives
Verify a large intake of dealers, distributors or marketplace sellers by GSTIN in one request.
Loan book and portfolio reviews
Re-verify borrower PANs or business PANs across a portfolio during an audit or a periodic review.
Industries
Coverage
Indian PANs (pan, pan-to-udyam), company and LLP PANs (pan-to-cin) and GSTINs (gst), 5 to 10,000 distinct values per batch. Each row is checked exactly as the single check would check it.
Limitations to plan for
- Business accounts only. The whole batch is charged upfront for every unique value; a row with no record is charged because the lookup ran, and a row that could not be checked is refunded.
- One batch holds one kind of identifier. To run GST and PAN checks on the same list, send two batches.
- The batch list, records and record endpoints take the Production key only. Sandbox results are read with GET /check-results.
- A large batch is processed in chunks and takes a while; progress_percent shows how far it is.
Integration
How to integrate the Bulk Verification API
From a business account to your first live call.
Step 1
Create a business account on VerifyAll and get it approved, as for running checks in the dashboard.
Step 2
Request Developer API access under Developers in the dashboard: the APIs you need, your expected monthly volume and your use case. The VerifyAll team reviews it and shares the API Services Agreement.
Step 3
Once the agreement is signed and access is approved, create your Sandbox key and build against sample data. Sandbox calls are never charged.
Step 4
Create your Production key, recharge your wallet and switch the key in your code: the endpoint and fields stay the same.
Get started
Request access to the Bulk Verification API
Tell us what you want to verify. We reply within one business day with access steps, Sandbox details and your API pricing.
View API documentation
The full reference for Bulk Verification API (endpoints, fields, errors, cURL) opens in the dashboard once your access is approved.
Open the docs (sign-in)Create a business account
API keys are issued to an approved business account. Sign up, then request access under Developers.
Create account
Pricing
Production calls are charged per check from your prepaid VerifyAll wallet, at your account’s API price; GST is added separately when you recharge. Sandbox calls are never charged. Your API prices are shown in the dashboard once access is approved. How pricing works
Already have a business account? Sign in to request access
Bulk Verification API: frequently asked questions
Answers for teams planning an integration.
Still have questions? Our team is happy to help.
Contact SupportRelated APIs
PAN Verification API
LiveInstant answerConfirm a PAN exists, see who holds it and match the name and date of birth your customer typed, in one call.
View API detailsGST Verification API
LiveInstant answerSend a GSTIN and get the business behind it: names, status, place of business and the returns it has filed, in one call.
View API detailsPAN to Udyam API
LiveInstant answerSend a PAN and find out whether the business is MSME-registered, with its Udyam number, class and certificate.
View API detailsPAN to CIN API
LiveInstant answerTurn a company’s or LLP’s PAN into its CIN, and get the company’s details in the same answer.
View API details
All bulk verification APIsRun Bulk verification in the dashboard, without codeBrowse the API Marketplace
Start with the Bulk Verification API
Request access, build against the Sandbox, then go live with your Production key.
