I am not receiving webhooks
Check these first:- Confirm the API key has the correct events and decision webhook URLs configured.
- Confirm your endpoint is publicly reachable.
- Confirm your server returns a
2xxresponse quickly after receiving the webhook. - Confirm you are listening for the right event names.
- Confirm you are testing with the expected API key environment.
- open Events to see whether the event was created
- open Webhooks to inspect delivery attempts and failures
The webhook signature does not validate
Common causes:- using the wrong API key as the HMAC secret
- hashing a parsed JSON object instead of the raw request body
- missing the exact
Webhook-Timestampheader value - modifying whitespace or key order before hashing
- read the raw request body
- build the signature payload as
{timestamp}.{rawBody} - hash it with HMAC-SHA256 using the API key as the secret
- compare it to
Webhook-Signatureusing a timing-safe comparison
My company verification is stuck in started
This usually means the representative began the hosted flow but has not completed and submitted it yet.
Check:
- whether all required company documents were uploaded
- whether all required flow sections were completed
- whether the authorising-person liveness step is still pending
submitted and emit company_verification.submitted.
My company verification is submitted but there is no final decision yet
That is expected until review completes.
Typical reasons:
- the case is waiting for review
- the case has not yet been moved to
under review - you are testing a flow and have not advanced the decision in the test dashboard flow
- test company verifications can be moved through review states by the customer admin dashboard
- live company verifications are decided by Helium ID internally
The hosted link does not open
For individual verifications:- confirm you are using the exact
data.linkreturned by the create endpoint
- confirm the URL still contains both
processIdandhostedToken - confirm the hosted link has not expired
- confirm you did not rebuild the URL manually
GET /v1/verifications/{id} returns not found
Check:
- that you are using the individual verification ID, not a company verification public ID
- that the verification belongs to the same API key
- that the verification has not been deleted
I can update a test company verification, but not a live one
That is expected behavior. Customer-admin review and terminal status updates are limited to company verifications created with a test API key. Live company verification terminal decisions are reserved for Helium ID internal review.I am seeing the wrong ID in webhooks
This is usually an ID-mapping issue:- individual verification webhooks use
verificationId - company verification webhooks use
companyVerificationIdfor the internal record - company verification webhooks also include
externalId, which is the public company verification ID
I do not know whether I should listen to the events webhook or the decision webhook
Use:- events webhook for progress updates
- decision webhook for terminal approval or rejection handling
Quick support checklist
When debugging an integration issue, collect:- API key environment used
- verification type: individual or company
- your
vendorData - Helium ID verification ID
- event name
- raw webhook payload
- webhook response status from your server