Provide missing information
Sometimes customers don't provide enough information to complete the verification of an entity. When this happens, you will receive a webhook with verificationStatus: "info" to let you know that additional information is required. The missing information can be regarding documents or stakeholders (individuals) related to the entity.
Sample info webhook
When a verification transitions to info status, you will receive a webhook with the following structure:
Info webhook payload
{
"userId": "user-123",
"onBehalfUid": null,
"trace": "abc123-verification-trace",
"submissionId": "abc123-submission-id",
"submissionStatus": "in_progress",
"verificationStatus": "info",
"inputRisk": "medium",
"country": "AUS",
"type": "company",
"subType": "none",
"name": "My Company Pty Ltd",
"timestamp": 1767004789403
}
Key points about the info webhook:
verificationStatus: "info"indicates that additional information is requiredsubmissionStatus: "in_progress"means the submission is waiting for more data- The
tracefield is used to fetch the remaining actions and submit missing information - The webhook does not include the
remainingActions- you must fetch them separately via the API
Fetching remaining actions
To see what information is missing, make a GET request to fetch the verification details:
Fetch verification details
GET /v5/verifications/:trace
When the status is info, the response will include a remainingActions object:
Response with remainingActions
{
"verificationStatus": "info",
"submissionStatus": "in_progress",
"remainingActions": {
"document": {
"doc-id-123": {
"id": "doc-id-123",
"type": "document",
"name": "Trust Deed",
"description": "The trust deed document for the entity",
"reason": "Required to verify trust structure",
"uploadUrl": "https://api.bronid.com/v5/verifications/abc123/documents",
"help": null
}
},
"stakeholder": {
"stakeholder-id-456": {
"id": "stakeholder-id-456",
"type": "individual",
"name": "Jane Citizen",
"description": "Director verification required",
"reason": "ID verification for director",
"help": null,
"roles": ["directors"],
"formUrl": "https://ekyc.bronid.com/ekyc-start/xyz789",
"email": "jane@example.com",
"phone": "+61400000000"
}
}
}
}
The remainingActions object contains:
document- A record of documents that need to be uploaded, keyed by document IDstakeholder- A record of individuals that need to complete eKYC verification, keyed by stakeholder ID
Uploading missing documents
To upload a missing document, make a PUT request to the documents endpoint with the specific document ID from remainingActions.
The document ID is the key in the remainingActions.document object. In the example above, the document ID is doc-id-123:
"remainingActions": {
"document": {
"doc-id-123": { // <-- This is the document ID
"id": "doc-id-123",
"type": "document",
"name": "Trust Deed",
...
}
}
}
Use this ID in the PUT request URL: PUT /v5/verifications/:trace/documents/doc-id-123
There are two ways to upload a document:
- Upload via URL
- Upload via Base64
Upload via URL
If the document is hosted at a publicly accessible URL (i.e. on your own server and provided via signed URL):
/v5/verifications/:trace/documents/:documentId
curl -X PUT https://dev.bronid.com/v5/verifications/abc123-verification-trace/documents/doc-id-123 \
--user "XL7ULiU6B4QE9Y2iWFZnhtMDKFN2:api_sec_NJAtNcRtUrPlf7xYDrMNP9URI-ZfN314" \
--header "Content-Type: application/json" \
--data '{
"source": "url",
"data": "https://example.com/documents/trust-deed.pdf",
"kind": "trustDeed",
"mimeType": "application/pdf",
"fileName": "trust-deed.pdf",
"description": "Trust deed for My Company"
}'
Upload via Base64
If you have the document as a base64-encoded string:
/v5/verifications/:trace/documents/:documentId
curl -X PUT https://dev.bronid.com/v5/verifications/abc123-verification-trace/documents/doc-id-123 \
--user "XL7ULiU6B4QE9Y2iWFZnhtMDKFN2:api_sec_NJAtNcRtUrPlf7xYDrMNP9URI-ZfN314" \
--header "Content-Type: application/json" \
--data '{
"source": "base64",
"data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==",
"kind": "trustDeed",
"mimeType": "image/png",
"fileName": "trust-deed.png",
"description": "Trust deed for My Company"
}'
Document upload parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
source | string | Yes | Upload method: url, base64, or preupload |
data | string | Yes | The URL or base64-encoded content |
kind | string | Yes | Document type (should match what's in remainingActions) |
mimeType | string | Yes | MIME type: application/pdf, image/jpeg, image/png |
fileName | string | No | Original filename |
description | string | No | Description of the document |
reason | string | No | Reason for uploading |
stakeholderId | string | No | Reference to a stakeholder if this is a stakeholder-specific document |
Redirecting users to eKYC for missing stakeholders
When remainingActions.stakeholder contains entries, each stakeholder must complete their own identity verification through the eKYC portal.
The stakeholder ID is the key in the remainingActions.stakeholder object. In the example above, the stakeholder ID is stakeholder-id-456:
"remainingActions": {
"stakeholder": {
"stakeholder-id-456": { // <-- This is the stakeholder ID
"id": "stakeholder-id-456",
"type": "individual",
"name": "Jane Citizen",
"formUrl": "https://ekyc.bronid.com/ekyc-start/xyz789", // <-- Redirect URL for eKYC
...
}
}
}
Using the form URL directly
Each stakeholder entry includes a formUrl field. Redirect the user to this URL to complete their eKYC verification.
The stakeholder will complete their verification independently through the eKYC portal.
Stakeholder verification flow
- The stakeholder receives the eKYC link (you can send an email/SMS or redirect them to the link via redirect)
- They access the eKYC portal and complete identity verification
- Upon successful verification, the system automatically removes them from
remainingActions - When all stakeholders (and documents) are complete, the verification transitions to
pending
Status transition to pending
When all remainingActions are completed:
- Each completed action (document upload or stakeholder verification) is automatically removed from
remainingActions - When all actions are complete, the status automatically transitions from
infotopending - A new webhook is sent with
verificationStatus: "pending"
Pending webhook payload
{
"userId": "user-123",
"onBehalfUid": null,
"trace": "abc123-verification-trace",
"submissionId": "abc123-submission-id",
"submissionStatus": "submitted",
"verificationStatus": "pending",
"inputRisk": "medium",
"country": "AUS",
"type": "company",
"subType": "none",
"name": "My Company Pty Ltd",
"timestamp": 1767004800000
}
Note that submissionStatus changes from in_progress to submitted when all information has been provided.
Verification flow after pending
After the verification transitions to pending, it will be processed and can result in one of the following outcomes:
Verified
All checks passed successfully. You will receive a webhook:
Verified webhook payload
{
"verificationStatus": "verified",
"submissionStatus": "submitted",
"trace": "abc123-verification-trace",
"submissionId": "abc123-submission-id",
"inputRisk": "medium",
"idvRisk": "low",
"screening": {
"watchlist": {
"status": "clear",
"totalHits": 0,
"lastScreenedAt": 1767004900000,
"lastScreenedTime": "29/12/2025 21:41:40"
}
},
"country": "AUS",
"type": "company",
"subType": "none",
"name": "My Company Pty Ltd",
"timestamp": 1767004900000
}
Rejected
Verification requirements were not met. You will receive a webhook:
Rejected webhook payload
{
"verificationStatus": "rejected",
"submissionStatus": "submitted",
"trace": "abc123-verification-trace",
"submissionId": "abc123-submission-id",
"inputRisk": "medium",
"idvRisk": "high",
"country": "AUS",
"type": "company",
"subType": "none",
"name": "My Company Pty Ltd",
"timestamp": 1767004900000
}
The rejection reasons can be retrieved via GET /v5/verifications/:trace which includes a rejectionReasons array with details about why the
verification was rejected.
Info (again)
In some cases, the verification may transition back to info status if additional information is still required:
Info webhook (again)
{
"verificationStatus": "info",
"submissionStatus": "in_progress",
"trace": "abc123-verification-trace",
"submissionId": "abc123-submission-id",
"inputRisk": "medium",
"idvRisk": "high",
"country": "AUS",
"type": "company",
"subType": "none",
"name": "My Company Pty Ltd",
"timestamp": 1767005000000
}
This can happen when:
- Submitted documents were incomplete, unclear, or invalid
- Additional stakeholders need to be verified that weren't initially identified
- Document verification revealed the need for supplementary documentation
- A stakeholder's verification was rejected and needs to be re-submitted
When receiving another info webhook, repeat the process:
- Fetch the updated
remainingActionsviaGET /v5/verifications/:trace - Submit the newly requested documents or stakeholder verifications
- Wait for the status to transition back to
pending
This cycle can repeat until the verification reaches a final state (verified or rejected).
Complete verification flow
The following diagram shows the complete verification lifecycle:
┌─────────────────────────────────────────────────────────────────┐
│ │
│ ┌──────────────────┐ │
│ │ Verification │ │
│ │ Submitted │ │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ pending │◄─────────────────────────────────┐ │
│ └────────┬─────────┘ │ │
│ │ │ │
│ ▼ │ │
│ ┌──────────────────┐ │ │
│ │ Processing │ │ │
│ └────────┬─────────┘ │ │
│ │ │ │
│ ┌─────┼─────┐ │ │
│ │ │ │ │ │
│ ▼ ▼ ▼ │ │
│ ┌─────┐ ┌────────┐ ┌──────┐ │ │
│ │ ✓ │ │ ✗ │ │ ℹ │ │ │
│ │ ver │ │ rej │ │ info │ │ │
│ │ ifi │ │ ect │ │ │ │ │
│ │ ed │ │ ed │ └───┬──┘ │ │
│ └─────┘ └────────┘ │ │ │
│ ▼ │ │
│ ┌──────────────────┐ │ │
│ │ Submit Missing │ │ │
│ │ Information │────────────────────┘ │
│ └──────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
Summary
| Step | Action | Endpoint |
|---|---|---|
| 1 | Receive info webhook | N/A (webhook) |
| 2 | Fetch remaining actions | GET /v5/verifications/:trace |
| 3 | Upload missing documents | PUT /v5/verifications/:trace/documents/:documentId |
| 4 | Redirect stakeholders to eKYC | Use formUrl from remaining actions |
| 5 | Wait for pending webhook | N/A (webhook) |
| 6 | Receive final status | verified, rejected, or info (webhook) |
What's next?
Now that you know how to provide missing information, learn how to list documents from a verification.