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

# Beneficiary Status Query and Notification

> Query beneficiary registration status synchronously via sp2402, and receive asynchronous review results through the sp3401 webhook notification after add or modify operations.

After submitting a payee registration via sp1401, you have two complementary ways to track the outcome. **sp2402** is a synchronous polling endpoint — you can call it at any time to check the current status of a registration using either your merchant order number or Gcashier Pay's internal flow reference. **sp3401** is the asynchronous webhook: Gcashier Pay will POST the final review result — including the `payeeId` required for all future payment requests — directly to the `callbackUrl` you specified in sp1401. For most integrations, we recommend relying on sp3401 for automation and using sp2402 only for manual checks or reconciliation.

***

## sp2402 — Payee Status Query

### Endpoint

```
POST https://{baseUrl}/api/sp2402
```

### Request Parameters

<ParamField body="merOrderNo" type="string">
  Your original merchant order number submitted in the sp1401 registration request. At least one of `merOrderNo` or `bizFlowNo` is required.
</ParamField>

<ParamField body="bizFlowNo" type="string">
  Gcashier Pay's internal flow reference number returned in the sp1401 synchronous response. At least one of `merOrderNo` or `bizFlowNo` is required.
</ParamField>

### Request Example

```json theme={null}
{
  "merOrderNo": "318216608947200"
}
```

### Response Body

<ResponseField name="mchOrderNo" type="string" required>
  Your original merchant order number for this payee registration.
</ResponseField>

<ResponseField name="bizFlowNo" type="string" required>
  Gcashier Pay's internal flow reference number for this registration.
</ResponseField>

<ResponseField name="status" type="string" required>
  Current status of the payee registration. Possible values:

  | Value | Description       |
  | ----- | ----------------- |
  | `01`  | Under Review      |
  | `03`  | Rejected          |
  | `04`  | Normal (Approved) |
  | `05`  | Deleted           |
</ResponseField>

<ResponseField name="payeeId" type="string">
  **Conditionally returned** when `status` is `04` (Approved). The unique payee identifier you will include in payment requests. Store this value securely.
</ResponseField>

### Response Example

```json theme={null}
{
  "mchOrderNo": "318216608947200",
  "bizFlowNo": "64695022219410100019",
  "status": "04",
  "payeeId": "832b1bbaa5c04e5190342669438be566"
}
```

***

## sp3401 — Payee Review Result Webhook

Gcashier Pay delivers an HTTP POST to your `callbackUrl` after every registration or modification review is completed. You do not need to initiate this call — the platform triggers it automatically.

### Webhook Payload Fields

<ResponseField name="mchOrderNo" type="string" required>
  Your original merchant order number from the sp1401 submission, for correlation with your internal records.
</ResponseField>

<ResponseField name="bizFlowNo" type="string" required>
  Gcashier Pay's internal flow reference number for the registration request.
</ResponseField>

<ResponseField name="status" type="string" required>
  The final review outcome. Possible values:

  | Value | Description                                           |
  | ----- | ----------------------------------------------------- |
  | `04`  | Approved — payee is active and ready to receive funds |
  | `03`  | Rejected — see `remark` for the reason                |
</ResponseField>

<ResponseField name="remark" type="string">
  **Conditionally included** when `status` is `03` (Rejected). Contains the reviewer's explanation of why the registration was declined. Use this information to correct and resubmit the payee via sp1401.
</ResponseField>

<ResponseField name="payeeId" type="string">
  **Conditionally included** when `status` is `04` (Approved). The unique identifier assigned to this beneficiary. You must supply this value in all subsequent payment orders targeting this payee.
</ResponseField>

### Webhook Example

```json theme={null}
{
  "mchOrderNo": "318216608947200",
  "bizFlowNo": "323222444432",
  "status": "04",
  "remark": "",
  "payeeId": "832b1bbaa5c04e5190342669438be566"
}
```

<Note>
  Your webhook endpoint must return an HTTP `200` status code to acknowledge receipt. If Gcashier Pay does not receive a `200` response, it will retry delivery with exponential back-off. Implement idempotency on your end using the `bizFlowNo` to avoid processing the same notification more than once.
</Note>
