> For the complete documentation index, see [llms.txt](https://docs.payshield.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.payshield.ai/txalerts-dispute-alerts/webhooks/notification-of-enrollment-status-update.md).

# Notification of Enrollment Status Update

When a merchant updates their **enrollment status**, the system sends the updated enrollment data to the configured **webhook endpoint** in **JSON format**.

This webhook allows downstream systems to stay in sync with enrollment progress across supported products (e.g., Ethoca, RDR).

### Payload Field Descriptions

#### Top-Level Fields

| Field                       | Type   | Description                                                       |
| --------------------------- | ------ | ----------------------------------------------------------------- |
| `action`                    | string | Event type. Always `enrollment_request_status_update`             |
| `request_id`                | number | Unique enrollment request identifier                              |
| `request_date`              | string | Original enrollment request creation timestamp                    |
| `merchant_name`             | string | Merchant name                                                     |
| `site_name`                 | string | Merchant site name                                                |
| `products`                  | string | Comma-separated list of enrolled products                         |
| `enrollment_request_status` | string | Overall enrollment status (e.g. `ENROLLED`, `PARTIALLY ENROLLED`) |
| `enrollment_request_items`  | object | Product-specific enrollment details                               |
| `updated_at`                | string | Timestamp of the latest update                                    |

***

#### Enrollment Request Items

The `enrollment_request_items` object is grouped by product name (e.g. `ethoca`, `rdr`). Each product contains an array of enrollment entries.

**Common Fields**

| Field           | Type   | Description                            |
| --------------- | ------ | -------------------------------------- |
| `descriptor`    | string | Descriptor submitted for enrollment    |
| `status`        | string | Current enrollment status for the item |
| `last_activity` | string | Last update timestamp for the item     |

**Ethoca-Specific Fields**

| Field        | Type   | Description                                            |
| ------------ | ------ | ------------------------------------------------------ |
| `match_type` | string | Descriptor matching rule (e.g. `Exact`, `Starts with`) |

**RDR-Specific Fields**

| Field         | Type           | Description            |
| ------------- | -------------- | ---------------------- |
| `mcc`         | string \| null | Merchant Category Code |
| `visa_bin`    | string \| null | Visa BIN               |
| `visa_caid`   | string \| null | Visa CAID              |
| `visa_arn`    | string \| null | Visa ARN               |
| `rdr_ruleset` | string \| null | Applied RDR ruleset    |

***

### Webhook Retry Behavior

If a webhook delivery attempt **fails**, the system will:

* Automatically retry posting the webhook
* Continue retrying until the webhook **expires after 72 hours**
* Stop retries once the expiration window is reached

This ensures reliable delivery even during temporary endpoint outages.\ <br>

### Headers

Accept: application/json \
Content-Type: application/json\
Authorization: Bearer {BEARER\_TOKEN\_VALUE\_GIVEN\_BY\_THE\_MERCHANT}

### Webhook Payload

Below is an example of the JSON payload sent to the webhook endpoint:

```json
{
  "action": "enrollment_request_status_update",
  "request_id": 2451,
  "request_date": "2026-01-15 10:42:11",
  "merchant_name": "Acme Online Retail Ltd",
  "site_name": "Acme Online Store",
  "products": "ethoca,rdr",
  "enrollment_request_status": "PARTIALLY ENROLLED",
  "enrollment_request_items": {
    "ethoca": [
      {
        "descriptor": "ACME*ONLINE",
        "status": "ENROLLED",
        "last_activity": "2026-01-15 11:05:32",
        "match_type": "Starts with"
      },
      {
        "descriptor": "ACME SUBSCRIPTION",
        "status": "WAITING FOR ACTION",
        "last_activity": "2026-01-16 02:18:09",
        "match_type": "Exact"
      }
    ],
    "rdr": [
      {
        "descriptor": "ACME*ONLINE",
        "status": "ENROLLED",
        "last_activity": "2026-01-15 11:05:32",
        "mcc": "5732",
        "visa_bin": "411111",
        "visa_caid": "ACME12345",
        "visa_arn": "745903821649201234",
        "rdr_ruleset": "STANDARD_ECOMMERCE"
      }
    ]
  },
  "updated_at": "2026-01-16 02:18:09"
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.payshield.ai/txalerts-dispute-alerts/webhooks/notification-of-enrollment-status-update.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
