---
description: Capacitor plugin to add passes to Apple Wallet and Google Wallet, such as tickets, loyalty cards, coupons, and boarding passes.
title: Capacitor Wallet Plugin for Android & iOS - Capawesome
image: https://capawesome.io/docs/assets/images/social/sdks/capacitor/wallet.png
---

<!doctype html> 

[Skip to content ](#capacitor-wallet-plugin) 

[🖥️ Introducing the **Capacitor Electron Platform** — build desktop apps for macOS, Windows, and Linux. Free & open source. ](/blog/announcing-the-capacitor-electron-platform/) 

* [ SDKs ](/docs/sdks/)
* [ Formbricks ](/docs/sdks/capacitor/formbricks/)
* [ Geocoder ](/docs/sdks/capacitor/geocoder/)
* [ Google Sign-In ](/docs/sdks/capacitor/google-sign-in/)
* [ Grafana Faro ](/docs/sdks/capacitor/grafana-faro/)
* [ Gyroscope ](/docs/sdks/capacitor/gyroscope/)
* [ Haptics ](/docs/sdks/capacitor/haptics/)
* [ Home Indicator ](/docs/sdks/capacitor/home-indicator/)
* [ In-App Browser ](/docs/sdks/capacitor/in-app-browser/)
* [ Install Referrer ](/docs/sdks/capacitor/install-referrer/)
* [ Intercom ](/docs/sdks/capacitor/intercom/)
* [ Intune ](/docs/sdks/capacitor/intune/)
* [ Keep Awake ](/docs/sdks/capacitor/keep-awake/)
* [ libSQL ](/docs/sdks/capacitor/libsql/)
* [ Light Sensor ](/docs/sdks/capacitor/light-sensor/)
* [ Live Update ](/docs/sdks/capacitor/live-update/)
* [ Localization ](/docs/sdks/capacitor/localization/)
* [ Mail Composer ](/docs/sdks/capacitor/mail-composer/)
* [ Managed Configurations ](/docs/sdks/capacitor/managed-configurations/)
* [ Maps Launcher ](/docs/sdks/capacitor/maps-launcher/)
* [ Media Session ](/docs/sdks/capacitor/media-session/)
* [ ML Kit ](/docs/sdks/capacitor/mlkit/)
* [ Navigation Bar ](/docs/sdks/capacitor/navigation-bar/)
* [ Network ](/docs/sdks/capacitor/network/)
* [ NFC ](/docs/sdks/capacitor/nfc/)
* [ Node.js ](/docs/sdks/capacitor/nodejs/)
* [ OAuth ](/docs/sdks/capacitor/oauth/)
* [ Passkeys ](/docs/sdks/capacitor/passkeys/)
* [ Password Autofill ](/docs/sdks/capacitor/password-autofill/)
* [ PDF Generator ](/docs/sdks/capacitor/pdf-generator/)
* [ PDF Viewer ](/docs/sdks/capacitor/pdf-viewer/)
* [ Pedometer ](/docs/sdks/capacitor/pedometer/)
* [ Permissions ](/docs/sdks/capacitor/permissions/)
* [ Phone Dialer ](/docs/sdks/capacitor/phone-dialer/)
* [ Photo Editor ](/docs/sdks/capacitor/photo-editor/)
* [ Photo Manipulator ](/docs/sdks/capacitor/photo-manipulator/)
* [ PixLive ](/docs/sdks/capacitor/pixlive/)
* [ PostHog ](/docs/sdks/capacitor/posthog/)
* [ Printer ](/docs/sdks/capacitor/printer/)
* [ Privacy Screen ](/docs/sdks/capacitor/privacy-screen/)
* [ Proximity Sensor ](/docs/sdks/capacitor/proximity-sensor/)
* [ Purchases ](/docs/sdks/capacitor/purchases/)
* [ RealtimeKit ](/docs/sdks/capacitor/realtimekit/)
* [ Root Detection ](/docs/sdks/capacitor/root-detection/)
* [ Screen Brightness ](/docs/sdks/capacitor/screen-brightness/)
* [ Screen Orientation ](/docs/sdks/capacitor/screen-orientation/)
* [ Screen Reader ](/docs/sdks/capacitor/screen-reader/)
* [ Screenshot ](/docs/sdks/capacitor/screenshot/)
* [ Secure Preferences ](/docs/sdks/capacitor/secure-preferences/)
* [ Settings Launcher ](/docs/sdks/capacitor/settings-launcher/)
* [ Shake ](/docs/sdks/capacitor/shake/)
* [ Silent Mode ](/docs/sdks/capacitor/silent-mode/)
* [ SIM ](/docs/sdks/capacitor/sim/)
* [ SMS Composer ](/docs/sdks/capacitor/sms-composer/)
* [ Speech Recognition ](/docs/sdks/capacitor/speech-recognition/)
* [ Speech Synthesis ](/docs/sdks/capacitor/speech-synthesis/)
* [ Share Target ](/docs/sdks/capacitor/share-target/)
* [ Square Mobile Payments ](/docs/sdks/capacitor/square-mobile-payments/)
* [ SQLite ](/docs/sdks/capacitor/sqlite/)
* [ Superwall ](/docs/sdks/capacitor/superwall/)
* [ System WebView ](/docs/sdks/capacitor/system-webview/)
* [ Tauri ](/docs/sdks/capacitor/tauri/)
* [ Text Interaction ](/docs/sdks/capacitor/text-interaction/)
* [ Text Zoom ](/docs/sdks/capacitor/text-zoom/)
* [ Thermal State ](/docs/sdks/capacitor/thermal-state/)
* [ Toast ](/docs/sdks/capacitor/toast/)
* [ Torch ](/docs/sdks/capacitor/torch/)
* [ Vault ](/docs/sdks/capacitor/vault/)
* [ Volume ](/docs/sdks/capacitor/volume/)
* Wallet [ Wallet ](/docs/sdks/capacitor/wallet/)
* [ Configuration ](#configuration)
* [ Usage ](#usage)
* [ API ](#api)
* [ Creating Passes ](#creating-passes)
* [ FAQ ](#faq)
* [ Related Plugins ](#related-plugins)
* [ Newsletter ](#newsletter)
* [ Changelog ](#changelog)
* [ License ](#license)
* [ Wifi ](/docs/sdks/capacitor/wifi/)
* [ YouTube Player ](/docs/sdks/capacitor/youtube-player/)
* [ Zip ](/docs/sdks/capacitor/zip/)
* [ Cordova ](/docs/sdks/cordova/)
* [ Cloud ](/docs/cloud/)
* [ Integrations ](/docs/cloud/live-updates/integrations/)
* Concepts
* Reference
* [ Troubleshooting ](/docs/cloud/live-updates/troubleshooting/)
* [ FAQ ](/docs/cloud/live-updates/faq/)
* [ Native Builds ](/docs/cloud/native-builds/)
* [ Set Up Environments ](/docs/cloud/native-builds/environments/)
* [ Overwrite Native Configurations ](/docs/cloud/native-builds/native-configurations/)
* [ Auto-Increment Build Numbers ](/docs/cloud/native-builds/auto-incrementing-build-numbers/)
* [ Configure the Web Build Script ](/docs/cloud/native-builds/web-build-script/)
* [ Build from a Monorepo ](/docs/cloud/native-builds/monorepo/)
* [ Use pnpm, Yarn, or bun ](/docs/cloud/native-builds/package-managers/)
* [ Install Private npm Packages ](/docs/cloud/native-builds/npm-private-registry/)
* [ Override the Java Version ](/docs/cloud/native-builds/override-java-version/)
* [ Custom iOS Provisioning Profiles ](/docs/cloud/native-builds/custom-ios-provisioning-profiles/)
* [ Build without Git ](/docs/cloud/native-builds/build-without-git/)
* [ Access Git Behind a Firewall ](/docs/cloud/native-builds/firewall-access/)
* [ Integrations ](/docs/cloud/native-builds/integrations/)
* Reference
* [ Troubleshooting ](/docs/cloud/native-builds/troubleshooting/)
* [ FAQ ](/docs/cloud/native-builds/faq/)
* [ App Store Publishing ](/docs/cloud/app-store-publishing/)
* [ Submit a Build ](/docs/cloud/app-store-publishing/submit-a-build/)
* [ Submit Automatically After a Build ](/docs/cloud/app-store-publishing/submit-automatically/)
* [ Troubleshooting ](/docs/cloud/app-store-publishing/troubleshooting/)
* [ FAQ ](/docs/cloud/app-store-publishing/faq/)
* [ Automations ](/docs/cloud/automations/)
* [ Reference ](/docs/cloud/automations/reference/)
* [ Troubleshooting ](/docs/cloud/automations/troubleshooting/)
* [ FAQ ](/docs/cloud/automations/faq/)
* [ Assist ](/docs/cloud/assist/)
* [ CLI ](/docs/cloud/cli/)
* APIs and SDKs
* [ Webhooks ](/docs/cloud/webhooks/)
* [ Integrations ](/docs/cloud/integrations/)
* Account
* [ Organization ](/docs/cloud/organizations/)
* [ Two-Factor Enforcement ](/docs/cloud/organizations/two-factor-authentication/)
* [ Audit Logs ](/docs/cloud/organizations/audit-logs/)
* [ Billing ](/docs/cloud/organizations/billing/)
* [ License Keys ](/docs/cloud/license-keys/)
* [ AI ](/docs/ai/)
* [ Insiders ](/docs/insiders/)
* [ Billing & Plans ](/docs/insiders/billing-and-plans/)
* [ FAQ ](/docs/insiders/faq/)
* [ License ](https://capawesome.io/legal/eula/)
* [ Support ](/docs/support/)
* [ Contributing ](/docs/contributing/)
* Contributing code
* [ Code of Conduct ](/docs/contributing/code-of-conduct/)
* [ Questions ](https://docs.github.com/en/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion#creating-a-discussion)
* [ Blog ](/blog/)
* Categories

* [ Configuration ](#configuration)
* [ Usage ](#usage)
* [ API ](#api)
* [ Creating Passes ](#creating-passes)
* [ FAQ ](#faq)
* [ Related Plugins ](#related-plugins)
* [ Newsletter ](#newsletter)
* [ Changelog ](#changelog)
* [ License ](#license)

# Capacitor Wallet Plugin[¶](#capacitor-wallet-plugin "Permanent link")

Capacitor plugin for adding passes to [Apple Wallet](https://developer.apple.com/documentation/passkit) and [Google Wallet](https://developers.google.com/wallet).

[ ![Deliver Live Updates to your Capacitor app with Capawesome Cloud](../../../assets/external/cloud.capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.69628c3f.png) ](https://cloud.capawesome.io/) 

## Features[¶](#features "Permanent link")

* 🍎 **Apple Wallet**: Add passes such as tickets, loyalty cards, coupons and boarding passes to Apple Wallet.
* 🤖 **Google Wallet**: Save passes to Google Wallet using the official "Save to Wallet" flow.
* ✅ **Availability check**: Check whether passes can be added on the current device before showing the UI.
* 📦 **CocoaPods & SPM**: Supports CocoaPods and Swift Package Manager for iOS.
* 🔁 **Up-to-date**: Always supports the latest Capacitor version.

Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look!

## Use Cases[¶](#use-cases "Permanent link")

The Wallet plugin is typically used to hand digital passes to the user's wallet app, for example:

* **Boarding passes**: Add flight or train boarding passes so travelers have them ready at the gate.
* **Event tickets**: Add tickets for concerts, sports events, or the cinema.
* **Loyalty cards**: Let customers store membership and loyalty cards in their wallet.
* **Coupons**: Distribute coupons and vouchers that users can redeem in store.

## Compatibility[¶](#compatibility "Permanent link")

| Plugin Version | Capacitor Version | Status         |
| -------------- | ----------------- | -------------- |
| 0.x.x          | \>=8.x.x          | Active support |

## Installation[¶](#installation "Permanent link")

You can use our **AI-Assisted Setup** to install the plugin. Add the [Capawesome Skills](https://github.com/capawesome-team/skills) to your AI tool using the following command:

`[](#%5F%5Fcodelineno-0-1)npx skills add capawesome-team/skills --skill capacitor-plugins
`

Then use the following prompt:

`` [](#%5F%5Fcodelineno-1-1) Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-wallet` plugin in my project.
 ``

If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below:

`[](#%5F%5Fcodelineno-2-1)npm install @capawesome/capacitor-wallet
[](#%5F%5Fcodelineno-2-2)npx cap sync
`

This plugin presents passes only. Passes must be **created and signed on your server**. See [Creating Passes](#creating-passes) below.

### iOS[¶](#ios "Permanent link")

Adding passes to Apple Wallet via `PKAddPassesViewController` does not require any special entitlement. The `com.apple.developer.pass-type-identifiers` entitlement is only needed if you want to read or manage passes that your app owns, which is out of scope for this plugin.

### Android[¶](#android "Permanent link")

No additional permissions or Gradle variables are required. The plugin opens the Google Wallet "Save to Wallet" flow, which is handled by the Google Wallet app or the device's browser.

## Configuration[¶](#configuration "Permanent link")

No configuration required for this plugin.

## Usage[¶](#usage "Permanent link")

The following examples show how to check whether passes can be added, add passes to Apple Wallet, and save a pass to Google Wallet.

### Check whether passes can be added[¶](#check-whether-passes-can-be-added "Permanent link")

On some devices (e.g. certain iPads) or when adding passes is restricted, passes cannot be added to Apple Wallet. Use this method to gate the UI that triggers `addPasses(...)`. Only available on iOS:

`[](#%5F%5Fcodelineno-3-1)import { Wallet } from '@capawesome/capacitor-wallet';
[](#%5F%5Fcodelineno-3-2)
[](#%5F%5Fcodelineno-3-3)const canAddPasses = async () => {
[](#%5F%5Fcodelineno-3-4)  const { canAdd } = await Wallet.canAddPasses();
[](#%5F%5Fcodelineno-3-5)  return canAdd;
[](#%5F%5Fcodelineno-3-6)};
`

### Add passes to Apple Wallet[¶](#add-passes-to-apple-wallet "Permanent link")

Present the system add-pass sheet with one or more passes. Each pass must be a base64-encoded `.pkpass` file that was created and signed on your server (see [Creating Passes](#creating-passes)). Only available on iOS:

`` [](#%5F%5Fcodelineno-4-1)import { Wallet } from '@capawesome/capacitor-wallet';
[](#%5F%5Fcodelineno-4-2)
[](#%5F%5Fcodelineno-4-3)const addPasses = async (passes: string[]) => {
[](#%5F%5Fcodelineno-4-4)  // `passes` are base64-encoded `.pkpass` files that were signed on your server.
[](#%5F%5Fcodelineno-4-5)  await Wallet.addPasses({ passes });
[](#%5F%5Fcodelineno-4-6)};
 ``

### Save a pass to Google Wallet[¶](#save-a-pass-to-google-wallet "Permanent link")

Open the Google Wallet "Save to Wallet" flow with a signed JWT that was created on your server (see [Creating Passes](#creating-passes)). Only available on Android:

`` [](#%5F%5Fcodelineno-5-1)import { Wallet } from '@capawesome/capacitor-wallet';
[](#%5F%5Fcodelineno-5-2)
[](#%5F%5Fcodelineno-5-3)const saveToGoogleWallet = async (jwt: string) => {
[](#%5F%5Fcodelineno-5-4)  // `jwt` is a signed Google Wallet JWT that was created on your server.
[](#%5F%5Fcodelineno-5-5)  await Wallet.saveToGoogleWallet({ jwt });
[](#%5F%5Fcodelineno-5-6)};
 ``

## API[¶](#api "Permanent link")

* [addPasses(...)](#addpasses)
* [canAddPasses()](#canaddpasses)
* [saveToGoogleWallet(...)](#savetogooglewallet)
* [Interfaces](#interfaces)

### addPasses(...)[¶](#addpasses "Permanent link")

`[](#%5F%5Fcodelineno-6-1)addPasses(options: AddPassesOptions) => Promise<void>
`

Add one or more passes to Apple Wallet.

The passes must be created and signed on your server. This method only presents the system add-pass sheet with the provided passes.

Only available on iOS.

| Param       | Type                                  |
| ----------- | ------------------------------------- |
| **options** | [AddPassesOptions](#addpassesoptions) |

**Since:** 0.1.0

---

### canAddPasses()[¶](#canaddpasses "Permanent link")

`[](#%5F%5Fcodelineno-7-1)canAddPasses() => Promise<CanAddPassesResult>
`

Check whether passes can be added to Apple Wallet.

This may return `false` on some devices (e.g. certain iPads) or when adding passes is restricted. Use this to gate the UI that triggers `addPasses`.

Only available on iOS.

**Returns:** `Promise<[CanAddPassesResult](#canaddpassesresult)>`

**Since:** 0.1.0

---

### saveToGoogleWallet(...)[¶](#savetogooglewallet "Permanent link")

`[](#%5F%5Fcodelineno-8-1)saveToGoogleWallet(options: SaveToGoogleWalletOptions) => Promise<void>
`

Save a pass to Google Wallet.

This opens the Google Wallet "Save to Wallet" flow using the provided JWT. The JWT must be created and signed on your server.

**Note**: With the URL-based flow there is no completion signal, so the promise resolves as soon as the flow is launched, not when the pass is actually saved.

Only available on Android.

| Param       | Type                                                    |
| ----------- | ------------------------------------------------------- |
| **options** | [SaveToGoogleWalletOptions](#savetogooglewalletoptions) |

**Since:** 0.1.0

---

### Interfaces[¶](#interfaces "Permanent link")

#### AddPassesOptions[¶](#addpassesoptions "Permanent link")

| Prop       | Type       | Description                                                                                                         | Since |
| ---------- | ---------- | ------------------------------------------------------------------------------------------------------------------- | ----- |
| **passes** | string\[\] | The passes to add to Apple Wallet. Each entry must be a base64-encoded .pkpass file that was signed on your server. | 0.1.0 |

#### CanAddPassesResult[¶](#canaddpassesresult "Permanent link")

| Prop       | Type    | Description                                  | Since |
| ---------- | ------- | -------------------------------------------- | ----- |
| **canAdd** | boolean | Whether passes can be added to Apple Wallet. | 0.1.0 |

#### SaveToGoogleWalletOptions[¶](#savetogooglewalletoptions "Permanent link")

| Prop    | Type   | Description                                                   | Since |
| ------- | ------ | ------------------------------------------------------------- | ----- |
| **jwt** | string | The signed Google Wallet JWT that was created on your server. | 0.1.0 |

## Creating Passes[¶](#creating-passes "Permanent link")

This plugin only **presents** passes to the user. Creating and signing passes must happen on your server, because it requires private keys and certificates that must never be shipped inside your app.

### Apple Wallet[¶](#apple-wallet "Permanent link")

A pass is a signed `.pkpass` bundle. Build and sign it on your server using your Pass Type ID certificate, then send the resulting file to your app as a base64-encoded string and pass it to `addPasses(...)`. See Apple's [Wallet documentation](https://developer.apple.com/documentation/walletpasses) for details on building and signing passes.

### Google Wallet[¶](#google-wallet "Permanent link")

A pass is represented by a signed JWT. Create and sign the JWT on your server using your Google Wallet service account, then send it to your app and pass it to `saveToGoogleWallet(...)`. See Google's [Wallet API documentation](https://developers.google.com/wallet) for details on creating passes and JWTs.

**Note**: With the URL-based "Save to Wallet" flow used by this plugin, there is no completion signal, so `saveToGoogleWallet(...)` resolves as soon as the flow is launched, not when the pass is actually saved.

## FAQ[¶](#faq "Permanent link")

### How is this plugin different from other similar plugins?[¶](#how-is-this-plugin-different-from-other-similar-plugins "Permanent link")

It covers both Apple Wallet and Google Wallet from a single fully typed API, presenting signed `.pkpass` passes on iOS and opening the official Google Wallet "Save to Wallet" flow on Android, with an availability check to gate your UI beforehand. It keeps a clean security boundary by presenting passes only — signing stays on your server, where your keys belong — and the README links the official Apple and Google guidance for creating them. The plugin is actively maintained against the latest Capacitor and OS versions.

### Can this plugin create passes for me?[¶](#can-this-plugin-create-passes-for-me "Permanent link")

No, this plugin only presents passes to the user. Creating and signing passes must happen on your server, because it requires private keys and certificates that must never be shipped inside your app. See [Creating Passes](#creating-passes) for details and links to the official Apple and Google documentation.

### Which methods are available on which platform?[¶](#which-methods-are-available-on-which-platform "Permanent link")

The `addPasses(...)` and `canAddPasses()` methods are only available on iOS, where they interact with Apple Wallet. The `saveToGoogleWallet(...)` method is only available on Android, where it opens the Google Wallet "Save to Wallet" flow.

### Why does `saveToGoogleWallet` resolve before the pass is saved?[¶](#why-does-savetogooglewallet-resolve-before-the-pass-is-saved "Permanent link")

The plugin uses the URL-based "Save to Wallet" flow, which does not provide a completion signal. The promise therefore resolves as soon as the flow is launched, not when the pass is actually saved.

### Do I need a special entitlement to add passes on iOS?[¶](#do-i-need-a-special-entitlement-to-add-passes-on-ios "Permanent link")

No, adding passes via the system add-pass sheet does not require any special entitlement. The `com.apple.developer.pass-type-identifiers` entitlement is only needed if you want to read or manage passes that your app owns, which is out of scope for this plugin.

### Why does `canAddPasses` return false?[¶](#why-does-canaddpasses-return-false "Permanent link")

The `canAddPasses()` method may return `false` on some devices (e.g. certain iPads) or when adding passes is restricted. Use it to hide or disable the UI that triggers `addPasses(...)` in these cases.

### Can I use this plugin with Ionic, React, Vue or Angular?[¶](#can-i-use-this-plugin-with-ionic-react-vue-or-angular "Permanent link")

Yes, the plugin is framework-agnostic. It works in any Capacitor app regardless of the web framework, including Ionic with Angular, React, or Vue, as well as plain JavaScript projects.

## Related Plugins[¶](#related-plugins "Permanent link")

* [Purchases](https://capawesome.io/docs/sdks/capacitor/purchases/): Support in-app purchases in your Capacitor app.
* [Square Mobile Payments](https://capawesome.io/docs/sdks/capacitor/square-mobile-payments/): Accept payments with the Square Mobile Payments SDK.

## Newsletter[¶](#newsletter "Permanent link")

Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/).

## Changelog[¶](#changelog "Permanent link")

See [CHANGELOG.md](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/wallet/CHANGELOG.md).

## License[¶](#license "Permanent link")

See [LICENSE](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/wallet/LICENSE).

July 8, 2026 

Back to top

```json
{"@context": "https://schema.org", "@graph": [{"@type": "TechArticle", "@id": "https://capawesome.io/docs/sdks/capacitor/wallet/#article", "headline": "Capacitor Wallet Plugin for Android & iOS", "name": "Capacitor Wallet Plugin for Android & iOS", "description": "Capacitor plugin to add passes to Apple Wallet and Google Wallet, such as tickets, loyalty cards, coupons, and boarding passes.", "inLanguage": "en", "url": "https://capawesome.io/docs/sdks/capacitor/wallet/", "mainEntityOfPage": "https://capawesome.io/docs/sdks/capacitor/wallet/", "author": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "publisher": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "about": {"@id": "https://capawesome.io/docs/sdks/capacitor/wallet/#software"}}, {"@type": "SoftwareSourceCode", "@id": "https://capawesome.io/docs/sdks/capacitor/wallet/#software", "name": "Capacitor Wallet Plugin for Android & iOS", "description": "Capacitor plugin to add passes to Apple Wallet and Google Wallet, such as tickets, loyalty cards, coupons, and boarding passes.", "url": "https://capawesome.io/docs/sdks/capacitor/wallet/", "programmingLanguage": "TypeScript", "runtimePlatform": "Capacitor", "codeRepository": "https://github.com/capawesome-team", "author": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "publisher": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}}]}
{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "How is this plugin different from other similar plugins?", "acceptedAnswer": {"@type": "Answer", "text": "It covers both Apple Wallet and Google Wallet from a single fully typed API, presenting signed.pkpass passes on iOS and opening the official Google Wallet \"Save to Wallet\" flow on Android, with an availability check to gate your UI beforehand. It keeps a clean security boundary by presenting passes only — signing stays on your server, where your keys belong — and the README links the official Apple and Google guidance for creating them. The plugin is actively maintained against the latest Capacitor and OS versions."}}, {"@type": "Question", "name": "Can this plugin create passes for me?", "acceptedAnswer": {"@type": "Answer", "text": "No, this plugin only presents passes to the user. Creating and signing passes must happen on your server, because it requires private keys and certificates that must never be shipped inside your app. See Creating Passes for details and links to the official Apple and Google documentation."}}, {"@type": "Question", "name": "Which methods are available on which platform?", "acceptedAnswer": {"@type": "Answer", "text": "The addPasses(...) and canAddPasses() methods are only available on iOS, where they interact with Apple Wallet. The saveToGoogleWallet(...) method is only available on Android, where it opens the Google Wallet \"Save to Wallet\" flow."}}, {"@type": "Question", "name": "Why does saveToGoogleWallet resolve before the pass is saved?", "acceptedAnswer": {"@type": "Answer", "text": "The plugin uses the URL-based \"Save to Wallet\" flow, which does not provide a completion signal. The promise therefore resolves as soon as the flow is launched, not when the pass is actually saved."}}, {"@type": "Question", "name": "Do I need a special entitlement to add passes on iOS?", "acceptedAnswer": {"@type": "Answer", "text": "No, adding passes via the system add-pass sheet does not require any special entitlement. The com.apple.developer.pass-type-identifiers entitlement is only needed if you want to read or manage passes that your app owns, which is out of scope for this plugin."}}, {"@type": "Question", "name": "Why does canAddPasses return false?", "acceptedAnswer": {"@type": "Answer", "text": "The canAddPasses() method may return false on some devices (e.g. certain iPads) or when adding passes is restricted. Use it to hide or disable the UI that triggers addPasses(...) in these cases."}}, {"@type": "Question", "name": "Can I use this plugin with Ionic, React, Vue or Angular?", "acceptedAnswer": {"@type": "Answer", "text": "Yes, the plugin is framework-agnostic. It works in any Capacitor app regardless of the web framework, including Ionic with Angular, React, or Vue, as well as plain JavaScript projects."}}], "url": "https://capawesome.io/docs/sdks/capacitor/wallet/"}
```
