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

# Entitlement Notifications

> Entitlement notification reasons, payload examples, and recommended reseller actions for Bango DVM.

# Entitlement notifications

Bango DVM™ sends Entitlement notifications to keep resellers informed about changes to a consumer's Product access and related account information. Use these events to synchronize your records and guide consumers through activation, changes, suspension, and termination.

An Entitlement represents an individual consumer's right to access a content provider Product, often provided as part of a Consumer Offer. Notifications describe what happened to that Entitlement; not every notification means its access status has changed.

## Notification reasons

| Notification reason | When it is sent | Entitlement state or field |
| - | - | - |
| `ACTIVATION_SUCCESS` | The Entitlement has been activated and Product access is available. | `status: Active` |
| `ACCOUNT_LINKED` | The Entitlement has been linked or relinked to the consumer's content provider account. | Account association changes; the Entitlement can remain `Active`. |
| `ACCOUNT_UNLINKED` | The Entitlement has been unlinked from the content provider account. | Account association changes; the Entitlement can remain `Active`. |
| `SUSPENSION_SUCCESS` | The Entitlement has been suspended and access is paused. | `status: Suspended`; `dateSuspended` records the suspension time. |
| `RESUMPTION_SUCCESS` | A suspended Entitlement has resumed. | Returns to its prior state, which can be `Active` or `Pending`; the example includes `DateResumed`. |
| `TERMINATION_PENDING` | The Entitlement is scheduled to terminate in the future. | `status: Active-Ending`; Product access continues until termination. |
| `TERMINATION_SUCCESS` | Termination has completed and access has ended. | `status: Cancelled` or `Revoked`, depending on the termination path. |
| `PRODUCT_UPDATE` | The associated Product changes, such as an upgrade, downgrade, or catalog change. | `productKey` identifies the updated Product. |
| `METADATA_UPDATE` | Entitlement metadata has been updated. | Metadata changes without necessarily changing the Product or access status. |

## How to interpret notifications

### Account linking and unlinking

`ACCOUNT_LINKED` confirms the link between an Entitlement and the consumer's content provider account. `ACCOUNT_UNLINKED` confirms that the relationship was removed; it does **not** by itself mean the Entitlement or Product access was terminated. An unlink payload can include `extraInformation.source.channelType` and `extraInformation.source.country` to identify where the action originated. For account-management tasks, see [Account Management](/account-management/overview).

### Suspension and resumption

`SUSPENSION_SUCCESS` indicates that the Entitlement was suspended. `RESUMPTION_SUCCESS` indicates that suspension ended. A resumed Entitlement can return to `Pending` if it had not been activated before suspension, rather than always becoming `Active`. Use the returned `status` as the source of truth. These notifications describe **Entitlement API behavior** and do not imply that Consumer Offer-level suspend/resume orchestration is supported.

### Termination

`TERMINATION_PENDING` means termination has been scheduled, but access has not yet ended. `TERMINATION_SUCCESS` confirms the completed outcome. Do not remove access solely on receipt of a pending event.

### Product and metadata changes

`PRODUCT_UPDATE` identifies a change to the associated Product, including a Product Tier change. Use its `productKey` to synchronize your catalog mapping. `METADATA_UPDATE` identifies changes to Entitlement metadata, such as custom or extension fields, and does not by itself indicate a Product or access-state change.

## Notification payload

Entitlement notifications use a common set of fields, although the exact fields depend on the notification reason. Preserve the exact `notificationReason`, identifiers, `productKey`, and `status` returned by Bango DVM™. Additional properties such as `consumerOffer`, `extensionData`, `extraInformation`, and event timestamps can be present.

The following payload illustrates `ACTIVATION_SUCCESS`:

```json theme={null}
{
  "notificationReason": "ACTIVATION_SUCCESS",
  "entitlementId": "772ed60d-4a28-4a51-adfd-309e5949b6cf",
  "customerIdentifier": "123456789",
  "sharedCustomerId": "db2001b5-fde5-4654-9ecd-b3b04ba8f025",
  "bangoUserId": "6817257108240469082",
  "merchantAccountKey": "BANGO_US",
  "productKey": "MUSIC",
  "status": "Active",
  "dateCreated": {},
  "dateActivated": {},
  "responseCode": "OK",
  "responseMessage": "Success",
  "parameters": null
}
```

<Note>
  The JSON examples below preserve event-specific fields and casing from the source examples. Some placeholder date values are illustrative rather than populated timestamps. Check the actual response when integrating.
</Note>

## Payload examples

<AccordionGroup>
  <Accordion title="Activation Success">
    Sent when the consumer's entitlement has been successfully activated. The entitlement `status` is `Active`. Use this notification to confirm to the consumer that their product is ready to use.

    ```json theme={null}
    {
      "notificationReason": "ACTIVATION_SUCCESS",
      "entitlementId": "772ed60d-4a28-4a51-adfd-309e5949b6cf",
      "customerIdentifier": "123456789",
      "sharedCustomerId": "db2001b5-fde5-4654-9ecd-b3b04ba8f025",
      "bangoUserId": "6817257108240469082",
      "merchantAccountKey": "BANGO_US",
      "productKey": "MUSIC",
      "status": "Active",
      "dateCreated": {},
      "dateActivated": {},
      "responseCode": "OK",
      "responseMessage": "Success",
      "parameters": null
    }
    ```
  </Accordion>

  <Accordion title="Termination Pending">
    Sent when the consumer's entitlement is scheduled for termination at a future date. The entitlement `status` is `Active-Ending` — the consumer still has access until the termination date. A `TERMINATION_SUCCESS` notification will follow when termination completes.

    ```json theme={null}
    {
      "notificationReason": "TERMINATION_PENDING",
      "entitlementId": "772ed60d-4a28-4a51-adfd-309e5949b6cf",
      "customerIdentifier": "123456789",
      "sharedCustomerId": "db2001b5-fde5-4654-9ecd-b3b04ba8f025",
      "bangoUserId": "6817257108240469082",
      "merchantAccountKey": "BANGO_US",
      "productKey": "MUSIC",
      "status": "Active-Ending",
      "dateCreated": {},
      "dateActivated": {},
      "responseCode": "OK",
      "responseMessage": "Success",
      "parameters": null
    }
    ```
  </Accordion>

  <Accordion title="Termination Success">
    Sent when the consumer's entitlement has been successfully terminated. The entitlement `status` is `Cancelled` or `Revoked`. The consumer no longer has access to the product.

    ```json theme={null}
    {
      "notificationReason": "TERMINATION_SUCCESS",
      "entitlementId": "772ed60d-4a28-4a51-adfd-309e5949b6cf",
      "customerIdentifier": "123456789",
      "sharedCustomerId": "db2001b5-fde5-4654-9ecd-b3b04ba8f025",
      "bangoUserId": "6817257108240469082",
      "merchantAccountKey": "BANGO_US",
      "productKey": "MUSIC",
      "status": "Cancelled",
      "dateCreated": {},
      "dateActivated": {},
      "responseCode": "OK",
      "responseMessage": "Success",
      "parameters": null
    }
    ```
  </Accordion>

  <Accordion title="Product Update">
    Sent when the product associated with the entitlement has changed — for example following an upgrade or downgrade. The `productKey` is updated to reflect the consumer's new product tier. Use this notification to update your records and surface the change to the consumer.

    ```json theme={null}
    {
      "notificationReason": "PRODUCT_UPDATE",
      "entitlementId": "772ed60d-4a28-4a51-adfd-309e5949b6cf",
      "customerIdentifier": "123456789",
      "sharedCustomerId": "db2001b5-fde5-4654-9ecd-b3b04ba8f025",
      "bangoUserId": "6817257108240469082",
      "merchantAccountKey": "BANGO_US",
      "productKey": "MUSIC_PREMIUM",
      "status": "Active",
      "dateCreated": {},
      "dateActivated": {},
      "responseCode": "OK",
      "responseMessage": "Success",
      "parameters": null
    }
    ```
  </Accordion>

  <Accordion title="Account Linked">
    ```json theme={null}
    {
      "notificationReason": "ACCOUNT_LINKED",
      "entitlementId": "f879518a-0544-4f0b-9428-a47f99669ff5",
      "externalEntitlementId": "902ac400-02c5-5d64-8bd4-39eb35d8aabe",
      "customerIdentifier": "bob@reseller.com",
      "bangoUserId": "a1b2c3d4e5f6a7b8c9d0e1f2a3be6e7e",
      "merchantAccountKey": "MUSIC_CP",
      "productKey": "bango-music-premium",
      "status": "Active",
      "responseCode": "OK",
      "responseMessage": "Success",
      "dateCreated": "2025-06-20T05:20:10.735Z",
      "dateActivated": "2025-06-20T05:20:10.735Z",
      "dateFailed": "0001-01-01T00:00:00.000Z",
      "extensionData": {
        "contentProviderSubscriptionId": "SUB-000000000908"
      }
    }

    ```
  </Accordion>

  <Accordion title="Account Unlinked">
    ```json theme={null}
    {
      "notificationReason": "ACCOUNT_UNLINKED",
      "entitlementId": "0dcee27a-ca37-4d73-8e48-5e0725c73328",
      "entitlementDisplayName": "BANGO_MUSIC_PREMIUM",
      "customerIdentifier": "bob@reseller.com",
      "bangoUserId": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c862",
      "merchantAccountKey": "MUSIC_CP",
      "productKey": "bango-music-premium",
      "status": "Active",
      "responseCode": "OK",
      "responseMessage": "Success",
      "dateCreated": "2025-11-21T15:38:45.639Z",
      "dateActivated": "2025-11-21T16:12:33.000Z",
      "dateFailed": "0001-01-01T00:00:00.000Z",
      "extraInformation": {
        "source": {
          "channelType": "WEBSITE",
          "country": "SE"
        }
      }
    }
    ```
  </Accordion>

  <Accordion title="Suspension Success">
    ```json theme={null}
    {
      "notificationReason": "SUSPENSION_SUCCESS",
      "entitlementId": "534e0480-3cbc-459e-adf1-81860587645c",
      "externalEntitlementId": "9173974564513763379",
      "customerIdentifier": "bob@reseller.com",
      "bangoUserId": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c588",
      "merchantAccountKey": "MUSIC_CP",
      "productKey": "bango-music-premium",
      "status": "Suspended",
      "responseCode": "OK",
      "responseMessage": "Success",
      "dateCreated": "2025-09-02T14:28:20.435Z",
      "dateActivated": "2025-09-02T14:42:26.000Z",
      "dateSuspended": "2026-10-05T07:14:32.949Z",
      "dateExpiry": "2100-01-01T00:00:00.000Z",
      "dateFailed": "0001-01-01T00:00:00.000Z"
    }
    ```
  </Accordion>

  <Accordion title="Resumption Success">
    ```json theme={null}
    {
      "notificationReason": "RESUMPTION_SUCCESS",
      "entitlementId": "d983447d-489c-4450-a2a2-0739eeb83f1d",
      "consumerOffer": {
        "consumerOfferId": "00b16690-9937-4ae6-9470-5bb4fda331be"
      },
      "customerIdentifier": "bob@reseller.com",
      "bangoUserId": "a1b2c3d4e5f6a7b8c9d0e1f2a3be7d43",
      "merchantAccountKey": "MUSIC_CP",
      "productKey": "14eb0bf8-f4bd-4a85-aa1d-f5c2c4984ec7",
      "status": "Pending",
      "responseCode": "OK",
      "responseMessage": "Success",
      "dateCreated": "2026-09-04T07:53:46.664Z",
      "dateSuspended": "2026-10-01T21:37:53.508Z",
      "DateResumed": "2026-10-05T08:56:06.217Z",
      "dateFailed": "0001-01-01T00:00:00.000Z"
    }
    ```
  </Accordion>

  <Accordion title="Metadata Update">
    Sent when metadata on the entitlement has been successfully updated. This notification signals that non-product, non-status attributes on the entitlement have changed — for example custom data, source information, or extension fields. Use this notification to keep your records in sync with the latest entitlement metadata.

    ```json theme={null}
    {
      "notificationReason": "METADATA_UPDATE",
      "entitlementId": "772ed60d-4a28-4a51-adfd-309e5949b6cf",
      "customerIdentifier": "123456789",
      "sharedCustomerId": "db2001b5-fde5-4654-9ecd-b3b04ba8f025",
      "bangoUserId": "6817257108240469082",
      "merchantAccountKey": "BANGO_US",
      "productKey": "MUSIC",
      "status": "Active",
      "dateCreated": {},
      "dateActivated": {},
      "dateLastUpdated": "2026-06-09T10:00:00.000Z",
      "responseCode": "OK",
      "responseMessage": "Success",
      "parameters": null
    }
    ```
  </Accordion>
</AccordionGroup>

## Recommended reseller actions

<table>
  <colgroup>
    <col width="221" />

    <col width="539" />
  </colgroup>

  <thead>
    <tr>
      <th>Notification</th>
      <th>Suggested Reseller action</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>`ACTIVATION_SUCCESS`</td>
      <td>Confirm to the consumer that their product is active and ready to use</td>
    </tr>

    <tr>
      <td>`TERMINATION_PENDING`</td>
      <td>Notify the consumer their access will end on the scheduled date</td>
    </tr>

    <tr>
      <td>`TERMINATION_SUCCESS`</td>
      <td>Confirm to the consumer that their product access has been removed</td>
    </tr>

    <tr>
      <td>`PRODUCT_UPDATE`</td>
      <td>Update your records to reflect the new product tier and notify the consumer of the change</td>
    </tr>

    <tr>
      <td>`ACCOUNT_LINKED`</td>
      <td>Record that the consumer’s entitlement is linked to their Content Provider account, stop any outstanding activation reminders, and confirm to the consumer that their service is ready to use</td>
    </tr>

    <tr>
      <td>`ACCOUNT_UNLINKED`</td>
      <td>Record that the entitlement is no longer linked to a Content Provider account, and prompt the consumer to sign in to or create an account in the Content Provider’s app to restore access</td>
    </tr>

    <tr>
      <td>`SUSPENSION_SUCCESS`</td>
      <td>Update the entitlement status in your system to suspended, and let the consumer know their access to the service is paused and how to restore it</td>
    </tr>

    <tr>
      <td>`RESUMPTION_SUCCESS`</td>
      <td>Update the entitlement status in your system to match the returned `status`. If `Active`, confirm to the consumer that their access is restored; if `Pending`, prompt the consumer to complete activation</td>
    </tr>

    <tr>
      <td>`METADATA_UPDATE`</td>
      <td>Update your records to reflect the latest entitlement metadata</td>
    </tr>
  </tbody>
</table>

## Key fields explained

<ResponseField name="notificationReason" type="string" required>
  Identifies the notification type. Identifies the Entitlement event. See the notification reasons table above.
</ResponseField>

<ResponseField name="entitlementId" type="string">
  Present on Entitlement notifications. The unique identifier of the entitlement that changed state.
</ResponseField>

<ResponseField name="productKey" type="string">
  Present on Entitlement notifications. The product key associated with the entitlement. Updated to the new value on `PRODUCT_UPDATE` notifications.
</ResponseField>

<ResponseField name="status" type="string">
  Present on Entitlement notifications. The current status of the entitlement. Examples include `Active`, `Pending`, `Suspended`, `Active-Ending`, `Cancelled`, and `Revoked`. Match the returned value rather than assuming every event changes the status.
</ResponseField>


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