> For the complete documentation index, see [llms.txt](https://docs.payments.thalescloud.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.payments.thalescloud.io/push-provisioning/implement-push-provisioning/implement-push-to-digital-wallets.md).

# Implement push to digital wallets

## Implement push to digital wallets

Use this guide to integrate D1 push provisioning into your issuer application so end users can add their cards to Apple Pay, Google Pay, and Samsung Pay directly from your app.

At a high level, the issuer application must:

1. Check whether the card is already digitized in the selected wallet on the device.
2. If the card is not digitized, initiate the push provisioning flow to add the card to the wallet.

For a conceptual introduction, see [Push provisioning overview](/push-provisioning/get-started/push-provisioning-overview.md).

{% hint style="info" %}
A card cannot be digitized more than once in the same wallet on the same device. Use the digitization state to drive your **Add to wallet** and **Activate card** actions.
{% endhint %}

### Before you start

Make sure the following prerequisites are met:

* **D1 onboarding**
  * You have completed D1 onboarding and can access the D1 backend.
* **D1 registration**
  * End users and cards are registered in D1. At minimum, the `consumerId` and `cardId` are available. See the **D1 registration** section in [Get started](/push-provisioning/get-started.md).
* **D1 SDK integration**
  * The D1 SDK is integrated into your issuer application for Android and/or iOS, and the SDK login flow is implemented. See [Integrate the D1 SDK](/push-provisioning/integrate-the-d1-sdk.md).
* **Wallet program enrollment**
  * You are enrolled in the relevant wallet programs (for example, Apple Pay, Google Pay, Samsung Pay) and comply with each provider’s branding and UX guidelines.

{% hint style="warning" %}
***Google Unified Android Push Provisioning** – Thales will support the new API and the Google-OPC model by October 2026.*

*Thales will send a communication by June 2026 to allow issuers to properly plan the migration activities.*
{% endhint %}

### End-to-end flow

The push-to-wallet implementation with D1 typically follows this sequence:

{% stepper %}
{% step %}

#### Check the card digitization state

When the issuer application starts, or when the end user opens a card details screen, use the D1 SDK to retrieve the card digitization state for a specific card and wallet (for example, Apple Pay, Google Pay, or Samsung Pay).

The digitization state drives your UI:

* **DIGITIZED** – The card is already tokenized in the wallet on this device. Hide **Add to wallet**.
* **NOT\_DIGITIZED** – The card is not tokenized. Show an **Add to wallet** button.
* **PENDING\_IDV** – Tokenization is pending step-up authentication. Show an **Activate card** button if in-app authentication (ID\&V) is supported.

See [Get the card digitization state](/push-provisioning/implement-push-provisioning/implement-push-to-digital-wallets/get-the-card-digitization-state.md) for detailed SDK flows and examples.
{% endstep %}

{% step %}

#### Push the card to the digital wallet

When the end user taps **Add to wallet** and the card state is `NOT_DIGITIZED`, call the D1 SDK to start the push provisioning flow.

The D1 SDK and D1 backend:

* prepare the payload based on the end user and card data stored in D1
* interact with the wallet application and TSP to perform Tokenization
* return the result to the issuer application so you can update the UI

For platform-specific steps and sequence diagrams, see [Push to the digital wallet](/push-provisioning/implement-push-provisioning/implement-push-to-digital-wallets/push-to-the-digital-wallet.md).
{% endstep %}

{% step %}

#### Handle activation (pending ID\&V)

If the digitization state is `PENDING_IDV`, the digital card is created but requires additional authentication before it can be used.

In this case:

* Prompt the end user to authenticate in the issuer application using your chosen ID\&V method.
* After successful authentication, call the D1 SDK to activate the digital card.

The activation flow is described in [Get the card digitization state](/push-provisioning/implement-push-provisioning/implement-push-to-digital-wallets/get-the-card-digitization-state.md) and in the D1 SDK API reference.
{% endstep %}

{% step %}

#### Support Apple Wallet extensions

For Apple Pay, you can integrate Apple Wallet extensions so end users can start provisioning directly from the Apple Wallet application, not only from your issuer application.

Use this when you want to:

* let Apple Wallet discover which cards are available in your issuer application
* authenticate the end user via a dedicated UI extension
* provide provisioning payloads to Apple Wallet for selected cards

For details, see [Apple wallet extension](/push-provisioning/implement-push-provisioning/implement-push-to-digital-wallets/apple-wallet-extension.md).
{% endstep %}
{% endstepper %}

### How this relates to other D1 features

* **View and control** – After cards are digitized, you can use the D1 SDK to list digital cards, show their status (active, suspended, deleted), and manage life cycle operations within the issuer application. See [View and control](/push-provisioning/implement-push-provisioning/implement-view-and-control/view-and-control-digital-cards.md).
* **Payment network push provisioning** – If you also participate in payment network programs (for example, Mastercard token connect), you can push cards into token requestors certified by the payment network. See [Mastercard token connect](/push-provisioning/implement-push-provisioning/implement-push-to-scheme/push-to-token-requestors-token-connect.md).

### Related references

Use these references while implementing push to digital wallets:

* [Push provisioning overview](/push-provisioning/get-started/push-provisioning-overview.md)
* [Get the card digitization state](/push-provisioning/implement-push-provisioning/implement-push-to-digital-wallets/get-the-card-digitization-state.md)
* [Push to the digital wallet](/push-provisioning/implement-push-provisioning/implement-push-to-digital-wallets/push-to-the-digital-wallet.md)
* [Apple wallet extension](/push-provisioning/implement-push-provisioning/implement-push-to-digital-wallets/apple-wallet-extension.md)
* [Push provisioning API summary](broken://spaces/WDlYTPaq4dNHuiWtf8ux/pages/91193b13b03ccdc0287d272c3e7304643a9504f0)
* [Integrate the D1 SDK](/push-provisioning/integrate-the-d1-sdk.md)


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.payments.thalescloud.io/push-provisioning/implement-push-provisioning/implement-push-to-digital-wallets.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
