> 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/payment-passkeys-issuers/integrate-d1-sdk/troubleshooting/payment-passkeys-troubleshooting.md).

# Payment Passkeys troubleshooting

### Resolve passkey registration failures

Use this guide when passkey registration or authentication fails on Android.

The D1 SDK opens passkey flows in Android Custom Tabs. The device selects the browser and passkey provider.

{% hint style="info" %}
The D1 SDK recommend Google Chrome for Android passkey registration.
{% endhint %}

### Try these steps first

Ask the end user to complete these checks, then retry the passkey operation.

{% stepper %}
{% step %}

#### Check the passkey provider

Google Password Manager provides the best compatibility.

1. Open **Settings** on the Android device.
2. Search for **Passwords, Passkeys & Autofill**. The name can vary by device.
3. Open **Preferred service** or **Password Manager**.
4. Check the selected passkey provider.
5. Select **Google Password Manager**, if it is available.
   {% endstep %}

{% step %}

#### Set Google Chrome as the default browser

Google Chrome is used during D1 SDK validation and testing.

1. Open **Settings**.
2. Select **Apps** or **Applications**.
3. Select **Default apps**, then **Browser app**.
4. Select **Chrome**.
   {% endstep %}

{% step %}

#### Retry the passkey operation

Return to the issuer application. Retry passkey registration or authentication.

If the issue persists, collect the relevant logs and contact support.
{% endstep %}
{% endstepper %}

### Why browser settings matter

Browser capabilities and passkey implementations vary by vendor and version. Behavior can differ when another browser is the default.

The D1 SDK is validated with Google Chrome and Google Password Manager. Other browser and provider combinations can work, but are not validated.

### Optional: detect the default browser

Use browser detection to support troubleshooting. Add Chrome to the `<queries>` element in your Android manifest:

```xml
<queries>
    <package android:name="com.android.chrome" />
</queries>
```

Then check the browser resolved for an HTTPS URL:

```kotlin
fun isChromeDefaultBrowser(context: Context): Boolean {
    val intent = Intent(
        Intent.ACTION_VIEW,
        Uri.parse("https://www.google.com")
    )

    val resolveInfo = context.packageManager.resolveActivity(
        intent,
        PackageManager.MATCH_DEFAULT_ONLY
    )

    return resolveInfo?.activityInfo?.packageName == "com.android.chrome"
}
```

For example, log when Chrome is not the default browser:

```kotlin
val isChromeDefault = isChromeDefaultBrowser(context)

if (!isChromeDefault) {
    Log.d("Passkey", "Chrome is not configured as the default browser.")
}
```


---

# 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.payments.thalescloud.io/payment-passkeys-issuers/integrate-d1-sdk/troubleshooting/payment-passkeys-troubleshooting.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.
