---
title: "Webhooks for network tokens"
description: "Learn which webhooks Adyen sends when your cardholders add Adyen-issued cards to digital wallets."
url: "https://docs.adyen.com/issuing/webhook-types/network-tokens-events"
source_url: "https://docs.adyen.com/issuing/webhook-types/network-tokens-events.md"
canonical: "https://docs.adyen.com/issuing/webhook-types/network-tokens-events"
last_modified: "2026-03-16T11:09:00+01:00"
language: "en"
---

# Webhooks for network tokens

Learn which webhooks Adyen sends when your cardholders add Adyen-issued cards to digital wallets.

[View source](/issuing/webhook-types/network-tokens-events.md)

Adyen sends webhooks for events in network token lifecycles. When your cardholders add their Adyen-issued cards to digital wallets like Apple Pay or Google Pay, Adyen replaces the card data with a network token. Learn more about network tokens in [Tokens for digital wallets](/issuing/tokens-digital-wallet).

These webhooks help you monitor and control tokenized cards. This page covers the following events:

* **[Network token created](#network-token-created)**: When a cardholder initially adds their card to a digital wallet
* **[Network token updated](#network-token-updated)**: When the token status changes during or after provisioning

In your Customer Area, subscribe to [Network token webhooks](/development-resources/webhooks/webhook-types#network-token-webhook) to get these events. They help you track where your cards are tokenized, respond to provisioning decisions, and audit network token activity.

## Webhook types

Webhook messages inform you when Adyen creates or updates a network token, and whether the cardholder must complete authentication before Adyen activates the token.

You can identify the webhooks triggered by network token events by using the following values:

| Parameter       | Description                                 | Value                                                                                                                                         |
| --------------- | ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `type`          | The webhook type.                           | **balancePlatform.networkToken.created** or **balancePlatform.networkToken.updated**                                                          |
| `data.status`   | The status of the network token.            | * **inactive**: Not yet activated.
* **active**: Ready for payments.
* **suspended**: Temporarily disabled.
* **closed**: Permanently closed. |
| `data.decision` | The decision for the network token request. | **approved**, **requireAuthentication**, **declined**                                                                                         |

## Network token created

Adyen sends a [balancePlatform.networkToken.created](https://docs.adyen.com/api-explorer/balanceplatform-webhooks/latest/post/balancePlatform.networkToken.created) webhook message when a cardholder adds their Adyen-issued card to a digital wallet. At this point in the [provisioning flow](/issuing/tokens-digital-wallet#provisioning-for-a-digital-wallet), Adyen has received the network token request from the card scheme, created a network token with status **inactive**, and completed the risk analysis.

The `decision` field specifies the outcome of the risk analysis and determines what happens next in the wallet:

* **requireAuthentication**: The digital wallet shows the cardholder a verification screen. Adyen requires [two-factor authentication](/issuing/tokens-digital-wallet/authentication-data) (OTP through SMS or email) or phone call verification before activating the token.
* **approved**: The risk analysis passed. Adyen activates the token automatically without further cardholder action.

### Network token created with authentication required

Adyen sends this webhook message when the risk analysis requires identity verification before activating the token. At this point in the provisioning flow, the cardholder sees a verification screen in their wallet app, or a prompt to contact your call center.

Use this webhook message to show a "pending verification" status for this card in your app.

The webhook message contains:

* `type`: **balancePlatform.networkToken.created**
* `status`: **inactive**
* `decision`: **requireAuthentication**

**Example networkToken.created webhook with authentication required**

```json
{
    "data" : {
        "balancePlatform" : "YOUR_BALANCE_PLATFORM",
        "id" : "NWTK00000000000000000000000001",
        "authenticationApplied" : false,
        "decision" : "requireAuthentication",
        "paymentInstrumentId" : "PI00000000000000000000000001",
        "status" : "inactive",
        "type" : "wallet",
        "validationFacts" : {
            "avsAddress" : "invalid",
            "paymentInstrumentActive" : "valid",
            "avsPostalCode" : "invalid",
            "inputExpiryDateCheck" : "valid",
            "paymentInstrumentExpirationCheck" : "valid",
            "transactionRules" : "valid",
            "accountLookup" : "valid",
            "walletValidation" : "valid",
            "paymentInstrumentFound" : "valid",
            "paymentInstrument" : "valid",
            "cvc2" : "*****"
        },
        "wallet" : {
            "device" : {
                "formFactor" : "phone",
                "osName" : "android"
            },
            "provisioningMethod" : "manual",
            "type" : "wallet"
        }
    },
    "environment" : "test",
    "timestamp" : "2022-10-25T10:43:53+02:00",
    "type" : "balancePlatform.networkToken.created"
}
```

### Network token created without authentication required

Adyen sends this webhook message when the risk analysis determines low risk and no cardholder verification is required. At this point in the [provisioning flow](/issuing/tokens-digital-wallet?tab=token-activated-automatically), Adyen activates the token automatically. After receiving this webhook message, expect a [balancePlatform.networkToken.updated](https://docs.adyen.com/api-explorer/balanceplatform-webhooks/latest/post/balancePlatform.networkToken.updated) webhook message that confirms the token is active.

The webhook message contains:

* `type`: **balancePlatform.networkToken.created**
* `status`: **inactive**
* `decision`: **approved**

**Example networkToken.created webhook without authentication required**

```json
{
    "data" : {
        "balancePlatform" : "YOUR_BALANCE_PLATFORM",
        "id" : "NWTK00000000000000000000000002",
        "authenticationApplied" : false,
        "decision" : "approved",
        "paymentInstrumentId" : "PI00000000000000000000000002",
        "status" : "inactive",
        "tokenRequestor" : {
            "id" : "40010030273",
            "name" : "applePay"
        },
        "transactionRulesResult" : {
            "allHardBlockRulesPassed" : true,
            "score" : 0
        },
        "type" : "wallet",
        "validationFacts" : [
            {
                "result" : "valid",
                "type" : "paymentInstrumentFound"
            },
            {
                "result" : "valid",
                "type" : "accountLookup"
            },
            {
                "result" : "invalid",
                "type" : "avsAddress"
            },
            {
                "result" : "valid",
                "type" : "paymentInstrumentActive"
            },
            {
                "result" : "valid",
                "type" : "transactionRules"
            },
            {
                "result" : "valid",
                "type" : "paymentInstrument"
            },
            {
                "result" : "valid",
                "type" : "paymentInstrumentExpirationCheck"
            },
            {
                "result" : "valid",
                "type" : "walletValidation"
            },
            {
                "result" : "invalid",
                "type" : "avsPostalCode"
            },
            {
                "result" : "valid",
                "type" : "inputExpiryDateCheck"
            }
        ],
        "wallet" : {
            "accountScore" : "5",
            "device" : {
                "deviceId" : "DEVICE_ID"
            },
            "deviceScore" : "3",
            "provisioningMethod" : "unknown",
            "recommendationReasons" : [
                ],
            "type" : "applePay"
        }
    },
    "environment" : "test",
    "timestamp" : "2026-03-03T19:14:09.779Z",
    "type" : "balancePlatform.networkToken.created"
}
```

## Network token updated

Adyen sends a [balancePlatform.networkToken.updated](https://docs.adyen.com/api-explorer/balanceplatform-webhooks/latest/post/balancePlatform.networkToken.updated) webhook message when the status of a network token changes. These webhook messages correspond to the later stages of the [provisioning flow](/issuing/tokens-digital-wallet#provisioning-for-a-digital-wallet), after Adyen has completed the risk analysis and the cardholder has completed any required verification.

### Provisioned without authentication

Adyen sends this webhook message after [activating a network token automatically](/issuing/tokens-digital-wallet?tab=token-activated-automatically) without cardholder verification. At this point in the provisioning flow, the card is available in the cardholder's digital wallet and ready for payments.

Use this webhook message to update your app UI to show the card is active in the wallet.

The webhook message contains:

* `type`: **balancePlatform.networkToken.updated**
* `status`: **active**
* `authenticationApplied`: **false**

**Example networkToken.updated webhook for provisioning without authentication**

```json
{
    "data" : {
        "balancePlatform" : "YOUR_BALANCE_PLATFORM",
        "id" : "NWTK00000000000000000000000001",
        "authenticationApplied" : false,
        "paymentInstrumentId" : "PI00000000000000000000000001",
        "status" : "active",
        "tokenRequestor" : {
            "id" : "40010075001",
            "name" : "googlePay"
        },
        "type" : "wallet",
        "wallet" : {
            "device" : {
                "deviceId" : "DEVICE_ID",
                "formFactor" : "mobilephone_or_tablet",
                "osName" : "android"
            },
            "provisioningMethod" : "push",
            "type" : "googlePay"
        }
    },
    "environment" : "test",
    "timestamp" : "2022-10-25T10:45:00+02:00",
    "type" : "balancePlatform.networkToken.updated"
}
```

### Provisioned with authentication

Adyen sends this webhook message after activating a network token that required identity verification. At this point in the provisioning flow, the cardholder has completed either [two-factor authentication](/issuing/tokens-digital-wallet?tab=two-factor-authentication-required_2) (OTP through SMS or email) or [phone call authentication](/issuing/tokens-digital-wallet?tab=phone-call-authentication-required_3). The card is available in the cardholder's digital wallet and ready for payments.

Use this webhook message to update the card status in your app from "pending verification" to active.

The webhook message contains:

* `type`: **balancePlatform.networkToken.updated**
* `status`: **active**
* `authenticationApplied`: **true**

**Example networkToken.updated webhook for provisioning with authentication**

```json
{
    "data" : {
        "balancePlatform" : "YOUR_BALANCE_PLATFORM",
        "id" : "NWTK00000000000000000000000001",
        "authenticationApplied" : true,
        "paymentInstrumentId" : "PI00000000000000000000000001",
        "status" : "active",
        "tokenRequestor" : {
            "id" : "40010030273",
            "name" : "applePay"
        },
        "type" : "wallet",
        "wallet" : {
            "device" : {
                "deviceId" : "DEVICE_ID",
                "formFactor" : "phone"
            },
            "provisioningMethod" : "manual",
            "type" : "applePay"
        }
    },
    "environment" : "test",
    "timestamp" : "2022-10-25T10:50:00+02:00",
    "type" : "balancePlatform.networkToken.updated"
}
```

### Network token closed

Adyen sends this webhook message when a network token is permanently closed. This happens in the following scenarios:

* **Provisioning declined**: The [risk analysis failed](/issuing/tokens-digital-wallet?tab=token-closed-automatically_4) and Adyen closed the token automatically. The cardholder cannot add the card to the wallet.
* **Cardholder removed the card**: The cardholder removed the card from their digital wallet.
* **Token revoked with the API**: You closed the token by making a PATCH [/networkTokens/{networkTokenId}](https://docs.adyen.com/api-explorer/balanceplatform/latest/patch/networkTokens/\(networkTokenId\)) request.
* **Payment instrument closed**: The underlying [payment instrument](/issuing/account-structure-resources#your-balance-platform) was closed.

Use this webhook message to update your app UI to reflect that the card is no longer available in the wallet.

The webhook message contains:

* `type`: **balancePlatform.networkToken.updated**
* `status`: **closed**

**Example networkToken.updated webhook for a closed token**

```json
{
    "data" : {
        "balancePlatform" : "YOUR_BALANCE_PLATFORM",
        "id" : "NWTK00000000000000000000000001",
        "paymentInstrumentId" : "PI00000000000000000000000001",
        "status" : "closed",
        "tokenRequestor" : {
            "id" : "40010075001",
            "name" : "googlePay"
        },
        "type" : "wallet",
        "wallet" : {
            "device" : {
                "deviceId" : "DEVICE_ID",
                "formFactor" : "mobilephone_or_tablet",
                "osName" : "android"
            },
            "type" : "googlePay"
        }
    },
    "environment" : "test",
    "timestamp" : "2022-11-15T14:30:00+02:00",
    "type" : "balancePlatform.networkToken.updated"
}
```

## See also

* [Set up webhooks](/development-resources/webhooks/configure-and-manage)
* [Network tokens](/issuing/network-tokens)
