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 required
  • submissionStatus: "in_progress" means the submission is waiting for more data
  • The trace field 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 ID
  • stakeholder - 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

ParameterTypeRequiredDescription
sourcestringYesUpload method: url, base64, or preupload
datastringYesThe URL or base64-encoded content
kindstringYesDocument type (should match what's in remainingActions)
mimeTypestringYesMIME type: application/pdf, image/jpeg, image/png
fileNamestringNoOriginal filename
descriptionstringNoDescription of the document
reasonstringNoReason for uploading
stakeholderIdstringNoReference 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

  1. The stakeholder receives the eKYC link (you can send an email/SMS or redirect them to the link via redirect)
  2. They access the eKYC portal and complete identity verification
  3. Upon successful verification, the system automatically removes them from remainingActions
  4. When all stakeholders (and documents) are complete, the verification transitions to pending

Status transition to pending

When all remainingActions are completed:

  1. Each completed action (document upload or stakeholder verification) is automatically removed from remainingActions
  2. When all actions are complete, the status automatically transitions from info to pending
  3. 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
}

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:

  1. Fetch the updated remainingActions via GET /v5/verifications/:trace
  2. Submit the newly requested documents or stakeholder verifications
  3. 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

StepActionEndpoint
1Receive info webhookN/A (webhook)
2Fetch remaining actionsGET /v5/verifications/:trace
3Upload missing documentsPUT /v5/verifications/:trace/documents/:documentId
4Redirect stakeholders to eKYCUse formUrl from remaining actions
5Wait for pending webhookN/A (webhook)
6Receive final statusverified, rejected, or info (webhook)

What's next?

Now that you know how to provide missing information, learn how to list documents from a verification.

Was this page helpful?