> ## Documentation Index
> Fetch the complete documentation index at: https://rain-sandbox-trial.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# card.notification

<Update label="v1.0.0" description="initial release">
  ### card.notification webhook

  Added the `card.notification` webhook. Rain sends this webhook when a card tokenization event occurs that requires tenant notification, such as when a digital wallet provisioning request is declined.

  #### Payload Fields

  | Field                             | Type                | Description                                                               |
  | --------------------------------- | ------------------- | ------------------------------------------------------------------------- |
  | `id`                              | `string`            | Webhook ID                                                                |
  | `resource`                        | `string`            | Always `"card"`                                                           |
  | `action`                          | `string`            | Always `"notification"`                                                   |
  | `version`                         | `string`            | The webhook version                                                       |
  | `body.id`                         | `string`            | Notification ID                                                           |
  | `body.card.id`                    | `string`            | Rain card ID                                                              |
  | `body.card.userId`                | `string` (optional) | ID of the cardholder user                                                 |
  | `body.tokenWallet`                | `string`            | The digital wallet associated with the event: `"Apple"` or `"Google Pay"` |
  | `body.reasonCode`                 | `string`            | The reason for the notification                                           |
  | `body.decisionReason`             | `object` (optional) | Additional details about the decision                                     |
  | `body.decisionReason.code`        | `string`            | The decision reason code                                                  |
  | `body.decisionReason.description` | `string` (optional) | Human-readable description of the decision reason                         |

  #### Possible Values for `reasonCode`

  | Value                   | Description                                          |
  | ----------------------- | ---------------------------------------------------- |
  | `PROVISIONING_DECLINED` | The digital wallet provisioning request was declined |

  #### Possible Values for `decisionReason.code`

  | Value                                             | Description                                                                        |
  | ------------------------------------------------- | ---------------------------------------------------------------------------------- |
  | `WALLET_PROVIDER_RISK_THRESHOLD_EXCEEDED`         | Declined by the wallet provider due to their risk assessment                       |
  | `DEVICE_SCORE_TOO_LOW`                            | Declined because the device score is below the wallet provider's minimum threshold |
  | `CVC_NOT_VALID`                                   | Declined because the CVC/CVV entered does not match the card                       |
  | `EXCESSIVE_PROVISIONING_ATTEMPTS_ACROSS_ACCOUNTS` | Declined due to excessive digitization attempts across accounts                    |
  | `EXCESSIVE_CARDS_AND_PROVISIONING_ATTEMPTS`       | Declined due to too many different cards being added in a short period             |
  | `EXPIRY_DATE_INVALID`                             | Declined because the expiry date entered does not match the card                   |
  | `UNKNOWN`                                         | Declined for an unknown reason                                                     |

  #### Example Payload

  ```json theme={null}
  {
      "id": "c3d4e5f6-a1b2-4890-9c8d-7e6f5a4b3c2d",
      "resource": "card",
      "action": "notification",
      "version": "1.0.0",
      "body": {
          "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
          "card": {
              "id": "94534236-927b-44f3-9429-27994c7ebc49",
              "userId": "6d73762a-c401-4898-8f00-d85707e310c0"
          },
          "tokenWallet": "Apple",
          "reasonCode": "PROVISIONING_DECLINED",
          "decisionReason": {
              "code": "WALLET_PROVIDER_RISK_THRESHOLD_EXCEEDED",
              "description": "This tokenization request was declined by the wallet provider due to their proprietary risk assessment system."
          }
      }
  }
  ```
</Update>
