> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gate.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Sub-account Verification Result Notification

> When sub-account KYB verification completes (passed or rejected), GatePay sends an asynchronous POST notification to the callback URL configured by the merchant.

The callback payload includes `bizType`, `bizId`, `bizStatus`, `clientId`, and `data`, where `data` is a JSON string of the verification result object. The merchant must accept and parse the notification at that URL and return HTTP 200 to acknowledge receipt.

## Overview

This page documents `webhook institutionVerifyResultWebhook`. Parameters, response schema, and examples are rendered from the linked OpenAPI definition above.

When sub-account KYB verification completes (passed or rejected), GatePay sends a POST request to the callback URL configured by the merchant. The merchant should receive and parse the notification at that URL and return HTTP 200 to acknowledge receipt.

## Notes

* Use `bizId` for idempotency.
* Signature verification, retries, parsing `data`, and the success response are covered in [Notifications Overview](/global/api-reference/version/100/en/common/asyncNotification); see [Security and Signature](/global/api-reference/version/100/en/common/securityAndSignature) for signing rules.

## Trigger scenarios

* Triggered when KYB verification completes after a sub-account submits verification and the status becomes passed or rejected
* GatePay sends the notification to the merchant's configured **callback URL**
* If delivery fails, see retry rules in [Notifications Overview](/global/api-reference/version/100/en/common/asyncNotification)

## Message Structure

| Field | Type | Description |
| - | - | - |
| `bizType` | string | Notification type; INSTITUTION = institution notification |
| `bizId` | string | Notification business ID |
| `bizStatus` | string | Business status: PASSED = verification passed, FAILED = verification rejected |
| `clientId` | string | Institution merchant client\_id |
| `data` | string | Message content as a JSON string |

## Parsed `data` Content

| Field | Type | Description |
| - | - | - |
| `subAccountId` | string | Sub-account ID |
| `authStatus` | string | Verification result: PASSED = passed, FAILED = rejected |
| `accountType` | string | Verification type; always `KYB` |
| `auditTime` | int64 | Audit completion time (milliseconds) |
| `rejectReason` | string | Rejection reason; empty when passed |

## Callback examples

**Verification passed:**

```json theme={null}
{
  "bizType": "INSTITUTION",
  "bizId": "2060249001916727298",
  "bizStatus": "PASSED",
  "clientId": "caoLHPyfvjtnJPJe",
  "data": "{\"subAccountId\":\"53695180\",\"authStatus\":\"PASSED\",\"accountType\":\"KYB\",\"auditTime\":1780036714339,\"rejectReason\":null}"
}
```

**Parsed content of `data`:**

```json theme={null}
{
  "subAccountId": "53695180",
  "authStatus": "PASSED",
  "accountType": "KYB",
  "auditTime": 1780036714339,
  "rejectReason": null
}
```

### Verification rejected

```json theme={null}
{
  "bizType": "INSTITUTION",
  "bizId": "2060249001916727299",
  "bizStatus": "FAILED",
  "clientId": "caoLHPyfvjtnJPJe",
  "data": "{\"subAccountId\":\"53695180\",\"authStatus\":\"FAILED\",\"accountType\":\"KYB\",\"auditTime\":1780036714339,\"rejectReason\":\"ID photo is unclear\"}"
}
```


## OpenAPI

````yaml global/api-reference/version/100/en/openapi/institutional-openapi.json webhook institutionVerifyResultWebhook
openapi: 3.1.0
info:
  title: GatePay Institutional API
  description: >-
    Gate Pay Institution API documentation. Create and manage sub-accounts,
    finance, orders, payout, transfer, and more.
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://openplatform.gateapi.io
security: []
paths: {}

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.