Home / Platform / Wallets

One pass. Every wallet.

Apple Wallet and Google Wallet deliver the same promise with different machinery: push, updates, NFC and location work differently under the hood. Stell abstracts those differences, so you build against one API and every customer gets the full experience.

Feature comparison

What each wallet supports.

Every capability below ships through the same Stell API call. The notes show how each wallet delivers it, differences you never have to code around.

FeatureApple WalletGoogle WalletSamsung Wallet
Where it works
Country availabilityWhere customers can hold a pass in the walletEverywhere iPhone is sold, passes are not region gatedMost countries, but not China, South Korea, Turkey or RussiaAround 36 markets across Europe, Asia and the Middle East
Preinstalled on the phoneNo app download before the first pass landsBuilt into iOSPreinstalled on most Android phones in supported countriesBuilt into Galaxy phones in supported markets
Getting the pass
Add via link or QROne tap from email, SMS, web or a posterAdd to Apple WalletAdd to Google WalletAdd to Samsung Wallet
Auto-import from emailThe wallet picks up passes from the inboxGmail import
Digitize a card from a photoCustomers turn any physical card into a pass themselvesiOS 27 and laterPhoto import
View passes on the webSee and save passes in a browser, not just the appwallet.google.com
Same pass on every deviceThe pass shows up on all the customer's signed-in devicesSyncs through iCloudFollows the Google accountFollows the Samsung account on Galaxy devices
Smartwatch supportPasses follow to the paired watch automaticallyApple WatchWear OSGalaxy Watch, select card types
Cloud sync and restorePasses survive a new phone or a reinstalliCloud syncLives in the Google accountSamsung account
Offline accessPass and barcode available with no connectionStored on deviceCached on deviceCached on device
Identifying the member
NFC identificationIdentify the member in the payment tapApple VASSmart Tap
QR and barcode scanningWorks with the scanners you already own
Rotating barcodesCodes that change on a timer to prevent screenshotsGenerated on device
Biometric lock before NFCRequire Face ID or Touch ID before the tap hands over
Reaching the customer
Real-time updatesPoints, tiers and offers change on the pass in secondsSigned update, pushedServer-side object writeServer-side card update
Push notificationsLock-screen messages tied to a pass changeChange messagesUpdate notificationsUpdate notifications
Location-based surfacingThe pass appears when the customer is near your storeRelevant locationsNearby pass notifications
Live ActivitiesLive status on the lock screen through a flight or eventBoarding passes and event ticketsFlight progress notifications
Time-based relevanceSurface the pass ahead of an event or bookingRelevant dateEvent and transit passesFlight and expiry reminders
On the screen
Full-screen poster layoutsEdge-to-edge artwork for events and membershipsEvent tickets iOS 18, other passes iOS 27
Buttons and links on the passSend members to booking, menus or your appFeatured actions, iOS 27App and web linksCard links
Install your app from the passThe pass offers your app, no store visit neededAssociated app installs straight from the passApp link opens the Play Store listingApp link on the card
LocalizationPass content in the language the phone speaks
Running the program
Design changes to live passesRestyle every issued pass without reissuingRe-signed and pushed per passOne template editTemplate edit
No wallet-side content reviewShip a new pass design without waiting for approvalCertificates only, no design reviewGoogle approves pass classes before productionSamsung reviews partner templates
Expiration and archivingExpired passes leave the active list on their own
Account-bound passesLock a pass to one customer's account at issueApple Account bindingSaved to a Google accountDelivered to a Samsung account
Sharing controlsDecide whether a pass can be passed on
Supported Supported with limits, noted in the cell Not offered by the wallet
One integration

Adding the second wallet is not a second project.

The differences in the table above are real, and none of them reach your code. It is not two integrations behind a shared wrapper: the same endpoints serve all platforms, and the only thing that changes between them is which wallet you name when the pass is created.

StepThe callApple and Google
Issue a passPOST /v1/passesIdentical body. One enum value says which wallet, and the add link comes back with the pass
Update a passPATCH /v1/passes/{id}Identical. Lands on the installed pass, no re-save
Void a passDELETE /v1/passes/{id}Identical
Receive eventsSigned webhooksSame events, same payloads, wallet type included

What does differ, stated plainly.

A pass belongs to one wallet

Passes are issued for the wallet they will live in, so a customer who wants theirs on both an iPhone and an Android phone holds one of each. Worth designing your member record around from day one, even if you launch on a single wallet.

Delivery timing is the platforms', not ours

Pass generation is ours and happens in milliseconds. How fast an update then surfaces on the phone belongs to Apple's push infrastructure and Google's device sync: Apple is typically seconds, Google commonly longer, and neither publishes a guarantee.

Rendering differs, deliberately

Each wallet has its own layout rules, field limits and artwork specs. Templates account for both, so a pass looks native on the platform it lands on rather than identical on neither.

See it live

One API call, both wallets.

Bring your loyalty program or ticket flow. In thirty minutes we'll show the same pass landing in Apple Wallet and Google Wallet, updating in real time.

By submitting, you agree to our privacy policy.