> For the complete documentation index, see [llms.txt](https://docs.neox.vn/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.neox.vn/docs/global/global-collections/integration/beneficiaries/webhook.md).

# Webhook

For webhook delivery mechanics, security verification, and retry behaviour, see [Event Notification](/docs/global/global-collections/integration/event-notification.md).

## BENEFICIARY\_REGISTRATION

Sent when a beneficiary registered via [Register Beneficiary](/docs/global/global-collections/integration/beneficiaries/api-register-beneficiary.md) is reviewed, including intermediate supplement requests.

### Event data

| Field Name    | Type   | Description                                                                                                                    |
| ------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------ |
| type          | string | Event type. Fixed value: `BENEFICIARY_REGISTRATION`.                                                                           |
| requestId     | string | The `requestId` supplied in the original Register Beneficiary request.                                                         |
| beneficiaryId | string | NeoX identifier assigned to the beneficiary.                                                                                   |
| subMerchantId | string | NeoX identifier of the sub-merchant this beneficiary was registered under, if applicable.                                      |
| status        | string | Registration outcome (already remapped to NeoX's vocabulary). Enum: `APPROVED`, `REJECTED`, `WAIT_SUPPLEMENT`.                 |
| errMsg        | string | Human-readable error or supplement-required description. Empty string when `status` is `APPROVED`.                             |
| extData       | string | Reserved for future use. Currently always the literal string `"{}"`.                                                           |
| secureHash    | string | Base64-encoded SHA-256 signature. See [Event Notification](/docs/global/global-collections/integration/event-notification.md). |

{% hint style="info" %}
When `status` is `WAIT_SUPPLEMENT`, submit the requested material through the Beneficiary Supplement Material flow referenced from `errMsg` / [Get Detail Beneficiary](/docs/global/global-collections/integration/beneficiaries/get-detail-beneficiary.md), then wait for a follow-up `BENEFICIARY_REGISTRATION` event.
{% endhint %}

### Sample data

Two real captured samples, showing the lifecycle from supplement request through approval:

```json
{
  "type": "BENEFICIARY_REGISTRATION",
  "requestId": "2d73290ba53d40bca3d917236232894a",
  "beneficiaryId": "785561080533000005",
  "subMerchantId": "10000002",
  "status": "WAIT_SUPPLEMENT",
  "errMsg": "",
  "extData": "{}",
  "secureHash": "7YTh1geZtL9SwpR1PBGWWMvxZgeogyf8wvYy+RPMXAM="
}
```

```json
{
  "type": "BENEFICIARY_REGISTRATION",
  "requestId": "2d73290ba53d40bca3d917236232894a",
  "beneficiaryId": "785561080533000005",
  "subMerchantId": "10000002",
  "status": "APPROVED",
  "errMsg": "",
  "extData": "{}",
  "secureHash": "Op/u/s2/38NWbKS2OrifoiZD3J73rHXgn//DyklxIdM="
}
```
