How a company verification moves through the flow
The typical lifecycle looks like this:- You create a company verification with
POST /v1/company-verifications - The representative opens the hosted link
- The representative uploads documents, reviews extracted data, and submits the flow
- Helium ID reviews the submission
- Helium ID issues a final outcome
Company verification statuses
The company verification flow currently uses these statuses:
In practice:
submittedmeans the representative finished their partunder reviewmeans a reviewer is now handling the casesuccessfulandfailedare the conclusive outcomes you should treat as final
Company verification webhook events
Company verification uses dedicated webhook event names so they can be handled separately from individual verification events.Events webhook
The following events are sent to the API key’s events webhook URL:company_verification.submittedcompany_verification.liveness_completedcompany_verification.under_review
Decision webhook
The following events are sent to the API key’s decision webhook URL:company_verification.successfulcompany_verification.failed
Payload shape
Company-verification webhook payloads are sent in the standard Helium ID wrapper:companyProfile block and a review block. That shape is designed to help downstream systems, including bank-account or business-customer providers, consume the important company details in a stable shape.
The example above uses company_verification.submitted, but company_verification.successful uses the same normalized payload shape as well. In practice, the event, status, and review/readiness values change to reflect the successful outcome, while the top-level structure and the normalized companyProfile and review blocks remain the same.
Those fields may come from:
- data entered directly in the hosted flow
- document extraction and normalization
- future internal review enrichment
review block helps you interpret how ready the payload currently is, especially when some nested fields still depend on review or follow-up evidence.
Live vs test company verifications
There is an important difference between live and test company verifications:- Live company verifications: Helium ID controls terminal decisions.
- Test company verifications: customer admins can move the verification through review states in the dashboard to test integrations and webhook handling.
What to store on your side
For reliable correlation, store at least:- your own internal business or application ID in
vendorData - the returned
verificationIdfrom the create response - the webhook
data.companyProfileif you plan to provision downstream business accounts - the webhook
event - the webhook
data.status