---
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 Vault** plugin — store secrets behind biometrics or a device passcode. ](/blog/announcing-the-capacitor-vault-plugin/) 

* [ 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/)
* [ In-App Browser ](/docs/sdks/capacitor/in-app-browser/)
* [ Install Referrer ](/docs/sdks/capacitor/install-referrer/)
* [ Keep Awake ](/docs/sdks/capacitor/keep-awake/)
* [ libSQL ](/docs/sdks/capacitor/libsql/)
* [ 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/)
* [ 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/)
* [ Pedometer ](/docs/sdks/capacitor/pedometer/)
* [ Photo Editor ](/docs/sdks/capacitor/photo-editor/)
* [ PixLive ](/docs/sdks/capacitor/pixlive/)
* [ PostHog ](/docs/sdks/capacitor/posthog/)
* [ Printer ](/docs/sdks/capacitor/printer/)
* [ Privacy Screen ](/docs/sdks/capacitor/privacy-screen/)
* [ 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/)
* [ Screenshot ](/docs/sdks/capacitor/screenshot/)
* [ Secure Preferences ](/docs/sdks/capacitor/secure-preferences/)
* [ 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/)
* [ Thermal State ](/docs/sdks/capacitor/thermal-state/)
* [ 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)
* [ Changelog ](#changelog)
* [ License ](#license)
* [ Wifi ](/docs/sdks/capacitor/wifi/)
* [ 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)
* [ 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!

## 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/).

## 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")

`` [](#%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)};
[](#%5F%5Fcodelineno-3-7)
[](#%5F%5Fcodelineno-3-8)const addPasses = async (passes: string[]) => {
[](#%5F%5Fcodelineno-3-9)  // `passes` are base64-encoded `.pkpass` files that were signed on your server.
[](#%5F%5Fcodelineno-3-10)  await Wallet.addPasses({ passes });
[](#%5F%5Fcodelineno-3-11)};
[](#%5F%5Fcodelineno-3-12)
[](#%5F%5Fcodelineno-3-13)const saveToGoogleWallet = async (jwt: string) => {
[](#%5F%5Fcodelineno-3-14)  // `jwt` is a signed Google Wallet JWT that was created on your server.
[](#%5F%5Fcodelineno-3-15)  await Wallet.saveToGoogleWallet({ jwt });
[](#%5F%5Fcodelineno-3-16)};
 ``

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

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

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

`[](#%5F%5Fcodelineno-4-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-5-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-6-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.

## 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 7, 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"}}}]}
```
