Submitting 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",
"idvRisk": "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:
Upload document endpoint
PUT /v5/verifications/:trace/documents/:documentId
Upload via URL
If the document is hosted at a publicly accessible URL:
Upload via URL
{
"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",
"reason": "Uploaded as requested"
}
Upload via Base64
If you have the document as a base64-encoded string:
Upload via base64
{
"source": "base64",
"data": "JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC9UeXBlL...",
"kind": "trustDeed",
"mimeType": "application/pdf",
"fileName": "trust-deed.pdf",
"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.
Using the form URL directly
Each stakeholder entry includes a formUrl field. You can redirect the user directly to this URL:
https://ekyc.bronid.com/ekyc-start/:stakeholderId
The stakeholder will complete their verification independently through the eKYC portal.
Sending an invite email
Optionally, you can send an invitation email to the stakeholder using the invite endpoint:
Send invite email
POST /v5/verifications/:trace/stakeholders/:stakeholderId/invites
This will send an email to the stakeholder's registered email address with a link to complete their verification.
Stakeholder verification flow
- The stakeholder receives the eKYC link (via redirect or email)
- 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",
"idvRisk": "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",
"idvRisk": "low",
"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",
"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",
"idvRisk": "medium",
"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 | POST /v5/verifications/:trace/documents |
| 4 | Redirect stakeholders to eKYC | Use formUrl from remaining actions |
| 5 | (Optional) Send invite email | POST /v5/verifications/:trace/stakeholders/:stakeholderId/invites |
| 6 | Wait for pending webhook | N/A (webhook) |
| 7 | Receive final status | verified, rejected, or info (webhook) |