> ## 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.

# sp3101 Merchant Access Result Notification

> Webhook POST delivered to your callbackUrl when Gcashier Pay completes the merchant access review, carrying the merchantNo and token.

Once Gcashier Pay's compliance team finishes reviewing a merchant access application submitted via sp1101, the platform posts a notification to the `callbackUrl` you registered in that request. This webhook delivers the definitive outcome of the review — including your assigned `merchantNo` and the `token` you will use to authenticate all subsequent API calls on behalf of that merchant. Your endpoint must accept an HTTP POST with a JSON body and respond with HTTP `200` to acknowledge receipt.

<Note>
  Store the `merchantNo` and `token` fields from this notification securely. Every subsequent Gcashier Pay API call for this merchant requires these credentials. Treat the `token` as a secret — do not log it or expose it in client-side code.
</Note>

## Invocation Details

| Attribute        | Value                                                                      |
| ---------------- | -------------------------------------------------------------------------- |
| Transaction Code | `sp3101`                                                                   |
| Direction        | Gcashier Pay → Your server (notification)                                  |
| Trigger          | Review completion (approval, rejection, or supplementary document request) |
| Endpoint         | Your `callbackUrl` registered in the sp1101 request                        |
| Method           | `POST`                                                                     |

***

## Webhook Payload Fields

<ResponseField name="bizFlow" type="string(32)" required>
  Gcashier Pay's internal business serial number for the application. Matches the `bizFlow` returned in the sp1101 synchronous response. Use this to correlate the notification with the original submission. **M**
</ResponseField>

<ResponseField name="merOrderNo" type="string(32)" optional>
  Your original merchant order number, echoed from the sp1101 request. Present only if you supplied it at submission time. **O**
</ResponseField>

<ResponseField name="code" type="string(6)" required>
  Review outcome code. **M**

  | Value    | Meaning                                                              |
  | -------- | -------------------------------------------------------------------- |
  | `S00000` | Application approved — merchant onboarding successful                |
  | `80000`  | Supplementary documents required — resubmit via sp1102               |
  | Other    | Application rejected or processing error — see `message` for details |
</ResponseField>

<ResponseField name="message" type="string(255)" required>
  Human-readable description of the outcome. On success, this is `"Success"`. On failure or when supplementary documents are needed, this contains a JSON-formatted detail string describing what is required or what went wrong. **M**
</ResponseField>

<ResponseField name="merchantNo" type="string(32)" required>
  Your Gcashier Pay-assigned merchant identifier. Present on successful approval (`code=S00000`). You must include this in all future API requests for this merchant. **M**
</ResponseField>

<ResponseField name="merNameEn" type="string(255)" required>
  The merchant's English legal name as recorded by Gcashier Pay, confirming the entity that was approved. **M**
</ResponseField>

<ResponseField name="token" type="string(32)" required>
  The authorisation token for this merchant. Present on successful approval (`code=S00000`). You must pass this token in the authentication header of all subsequent API calls made on behalf of this merchant. **M**
</ResponseField>

***

## Webhook Payload Example

### Successful Approval

```json theme={null}
{
  "bizFlow": "87200408378515100071",
  "merOrderNo": "001001001",
  "code": "S00000",
  "message": "Success",
  "merchantNo": "005703100153",
  "merNameEn": "Demo Company Limited",
  "token": "23432WRWDS3223452RDS3"
}
```

### Supplementary Documents Required

```json theme={null}
{
  "bizFlow": "87200408378515100071",
  "merOrderNo": "001001001",
  "code": "80000",
  "message": "{\"reason\":\"Passport image is unclear. Please resubmit a high-resolution scan.\",\"fields\":[\"customerId.certificates\"]}",
  "merchantNo": "",
  "merNameEn": "Demo Company Limited",
  "token": ""
}
```

***

## Handling the Notification

<Warning>
  If the `code` field is `80000`, Gcashier Pay is requesting supplementary or corrected documents. You must call **sp1102** with `addMaterial` set to `"1"` and provide the requested files in the `reMaterial` object. The `message` field will contain a JSON string describing exactly which documents are required. Do not treat `80000` as a final rejection — it is an actionable request that you can resolve.
</Warning>

<Note>
  Persist the `merchantNo` and `token` immediately upon receiving a successful (`S00000`) notification. These values are essential for all downstream operations — including payment initiation, refunds, and settlement queries — and are not re-sent automatically if lost.
</Note>

<Tip>
  Your `callbackUrl` endpoint should return HTTP `200` as quickly as possible. If you need to perform time-consuming operations (such as database writes or downstream notifications), acknowledge receipt first and process asynchronously. Gcashier Pay may retry delivery if your endpoint does not respond within the expected window.
</Tip>

***

## Callback Response

Your server must respond with HTTP status `200` and a plain acknowledgement body to confirm receipt. No specific response JSON schema is required — Gcashier Pay treats any `200` response as a successful delivery acknowledgement.

```
HTTP/1.1 200 OK
```
