Hi,
We are distributing pk pass files via a web browser. When a user taps Add in the system pass preview, the pass is added successfully, the preview is dismissed, and the user remains in the browser.
From a user experience perspective, we would like to better guide users to their newly added pass in Apple Wallet.
Is there a supported API, URL scheme, or documented mechanism that allows a web-based flow to transition the user to the Wallet app after a pass has been added?
If direct app transitions are not supported in this scenario, what is the recommended best practice for helping users locate and open their newly added pass in Wallet?
Thank you for your guidance.
Wallet
RSS for tagDiscuss how to manage tickets, boarding passes, payment cards and other passes in the Wallet app.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
We are getting vulnerabilities for passkit generator, used for apple wallet creation. Could you please suggest how to resolve this issue
In our system we updated MIME with latest version but passkit is referring older version 1.4.1
npm audit report
mime <1.4.1
Severity: high
mime Regular Expression Denial of Service when MIME lookup performed on untrusted user input - https://github.com/advisories/GHSA-wrvr-8mpx-r7pp
No fix available
node_modules/mime
passkit *
Depends on vulnerable versions of mime
node_modules/passkit
2 high severity vulnerabilities
Some issues need review, and may require choosing
a different dependency.
Topic:
App & System Services
SubTopic:
Wallet
I´m tring to integrate InApp push provisioning but when I send the information from the issuer to SDK to add my debit card to wallet I saw this error: PKPassKitErrorDomain Code 2 error
Looking in the forum I found how to see part of the logs to get more detail on the error and I found:
POST https://pr-pod9-smp-device.apple.com:443/broker/v4/devices/04131B65D01590022288082867404947F3CCA674C3D41F3C/cards/683986c983984251b9aecfc8ff51d88a/enable
'Error Domain=PKPaymentWebServiceErrorDomain Code=0 "Error inesperado." UserInfo={PKErrorHTTPResponseStatusCodeKey=500, NSLocalizedDescription=Error inesperado.
Topic:
App & System Services
SubTopic:
Wallet
Tags:
Wallet
Entitlements
In-App Purchase
Provisioning Profiles
I want to be able to retrieve payment form wallet, I've used the PKPassLibrary but it hasn't worked
Topic:
App & System Services
SubTopic:
Wallet
My application is from a bank that provides payment passes, and when I try to retrieve passes already enrolled in the wallet, it always returns empty. Is there something I need to configure for it to work? This is what I've tried, and it hasn't worked
Topic:
App & System Services
SubTopic:
Wallet
I'm creating an event ticket Apple Wallet Pass and setting a light-coloured background image. When I do this, it automatically sets the foregroundColor to white, even when I explicitly set it to black.
What's strange is that on my Mac, the foregroundColor appears as intended, and I can set it to any color I want, but when I AirDrop the pass to my iPhone, it sets the color to white, regardless of what I set the foregroundColor to.
This means the text becomes completely illegible for my users, with white text on a white background image. If I remove the background image, the foregroundColor works fine.
Is there a way to have a light-colored background image with dark text, or am I forced to have a dark-colored background image?
Here are the colors in my pass.json:
backgroundColor: "rgb(255, 255, 255)"
foregroundColor: "rgb(0, 0, 0)"
labelColor: "rgb(0, 0, 0)"
I've attached what the pass looks like on my Mac and my iPhone.
My application is from a bank that provides payment passes, and when I try to retrieve passes already enrolled in the wallet, it always returns empty. Is there something I need to configure for it to work? This is what I've tried, and it hasn't worked:
let pkPassLibrary = PKPassLibrary()
let paymentPasses =
pkPassLibrary.passes(of:.payment)
let pkPassLibrary = PKPassLibrary()
let paymentPasses: [PKSecureElementPass]=pkPassLibrary
.passes(of: .secureElement)
.compactMap { $0 as? PKSecureElementPass }
Topic:
App & System Services
SubTopic:
Wallet
We have developed an app that communicates with an external reader using BLE, and the reader also supports NFC.
We are implementing a feature that uses PKPassLibrary.requestAutomaticPassPresentationSuppression to prevent the Wallet from appearing when unlocking a lock.
We have already completed the approval process for the entitlement required to enable Pass Presentation Suppression, referencing Apple’s documentation: https://developer.apple.com/documentation/passkit/pkpasslibrary/requestautomaticpasspresentationsuppression(responsehandler:)
In most cases, this works as expected and the Wallet popup does not appear.
However, in some cases — particularly when the app is running in the foreground — the Wallet still appears for users.
We have verified that the app bundle includes the required entitlement, and the Info.plist correctly specifies the Pass Presentation Suppression key set to true.
Could you please help us understand under what conditions this behavior might still occur, or if any additional configuration is required?
I am fallowing the steps mention here
https://developer.apple.com/wallet/get-started-with-verify-with-wallet/
and https://developer.apple.com/documentation/passkit/requesting-identity-data-from-a-wallet-pass
to run a POC in simulator but I am getting a crash
DigitalPresentmentSession requestDocument fatal error from xpc: This app has crashed because it called an API it is not entitled to use.
:0: Fatal error: This app has crashed because it called an API it is not entitled to use.
Hello,
I'm experiencing a critical issue with PassKit's shareable pass functionality. Despite having the necessary entitlements configured, I'm getting an entitlement error when calling PKAddShareablePassConfiguration.forPassMetaData.
Failed to create PKAddShareablePassConfiguration: Error Domain=PKPassKitErrorDomain Code=4 "client is not entitled" UserInfo={NSDebugDescription=client is not entitled}
private func createPassViewController(from response: PreparePushProvisioningResponse) {
guard let passMetadata = PKShareablePassMetadata(
provisioningCredentialIdentifier: response.provisioningCredentialIdentifier,
cardConfigurationIdentifier: response.cardConfigurationIdentifier,
sharingInstanceIdentifier: response.sharingInstanceIdentifier,
passThumbnailImage: response.passThumbnailImage,
ownerDisplayName: response.ownerDisplayName,
localizedDescription: response.localizedDescription
) else {
print("Failed to create PKShareablePassMetadata")
return
}
print("PKShareablePassMetadata created successfully")
// This is where the error occurs
PKAddShareablePassConfiguration.forPassMetaData(
[passMetadata],
provisioningPolicyIdentifier: "", // Empty as per documentation
action: .add
) { (configuration, error) in
if let error = error {
print("Failed to create PKAddShareablePassConfiguration: \(error)")
// Error Domain=PKPassKitErrorDomain Code=4 "client is not entitled"
return
}
guard let config = configuration else {
print("PKAddShareablePassConfiguration is nil")
return
}
// other code...
}
}
The push provisioning preparation succeeds completely:
Prepare push provisioning succeeded
Credential ID: "XXXX-XXXX....."
Owner: Teodora
Description: Interflex NFC development
PKShareablePassMetadata created successfully
Then immediately fails at PKAddShareablePassConfiguration.forPassMetaData() with the entitlement error.
Xcode Configuration Issues:
When manually entering capabilities in Xcode's Signing & Capabilities tab, I receive this error:
Provisioning profile "20250929 VIDC QA DEV" doesn't match the entitlements file's value for the com.apple.developer.contactless-payment-pass-provisioning entitlement. Profile qualification is using entitlement definitions that may be out of date. Connect to network to update.
When I don't manually enter the capabilities in the Runner.entitlements file, the provisioning profile error disappears in Xcode, but the runtime entitlement error persists.
Hello,
We watched the WWDC25 presentation about Apple Wallet on the upgrade boarding pass features with Live Activities. We’re interested in integrating this into our app for iOS 26 beta testing.
Could you please provide:
Sample code or example projects
API documentation
Implementation guidelines
Details on sharing functionality
Thanks in advance!
When downloading a .zip file with a pass package, when trying to open a file it only appears as a file but is not added to the wallt.
Hello,
We’re developing a loyalty program using Apple Wallet passes, and everything works except the silent push update flow.
Context
PassTypeIdentifier: pass.order.com.lealtad.xxxx
Device is physical (not simulator)
Pass is installed and visible in Wallet
Correct pushToken is stored in our backend
Push response from APNs:
StatusCode: 200 OK
apns-id: DBFF9693-D053-AA20-D737-3B24414105F3
WebServiceURL is reachable: https://xxxxx.net
GET /passes/{passTypeIdentifier}/{serialNumber} endpoint is implemented and logs all calls
No call is received from Apple to GET /passes/... after the push
.pkpass is signed and installs correctly
push payload
json
Copiar
Editar
{
"aps": {
"content-available": 1
},
"serialNumbers": ["9a4c9376d4"],
"updated": true
}
pass.json
json
Copiar
Editar
{
"formatVersion": 1,
"passTypeIdentifier": "pass.order.com.lealtad.xxxxx",
"teamIdentifier": "xxxxxxxx",
"serialNumber": "9a4c9376d4xxxxxx",
"webServiceURL": "https://xxxxxx.net",
"authenticationToken": "xxxxxxxxxxxxxxxxx",
...
}
We have verified:
Pass is installed and contains the correct authentication token.
Pass registration via POST /devices/... happens and is logged.
Push notifications are sent successfully and received (APNs 200 OK).
Our endpoint GET /passes/... responds properly with Authorization: Bearer {{token}}.
Certificate used to send the push is the same type as the one used to sign the .pkpass.
What could cause Apple Wallet to ignore the push?
We would appreciate guidance on what might be preventing Wallet from calling the webServiceURL after a valid push. Is there a way to trace why Apple is not triggering the request?
Thanks in advance for your help.
Best regards,
José Ruiz
For our project we publish and endpoint to update a PKPass from wallet. It works fine.
We are facing a problem with expired passes, due to the Automatic Updates configuration in each device our server received a lot request included those from expired passes. I cannot find any configuration inside the pass to avoid this request to my server.
Hi!
I have set up an APNS API that sends push notifications to update my Apple Wallet pass. I am using the APN library and a .p8 key for APNS push notifications. I keep getting 200 responses and "sent successfully" logs, but Apple Wallet is not receiving the notification.
Which configuration or payload should I check to make it work?
Thanks
We have Wallet and Watch application on iPhone.
Both of them can add card and then waiting for activation.
However, When the same card is added to Wallet and Watch respectively, waiting for the app-to-app mode to be activated.
Client doesn't aware the source application.
Because deeplink is exactly the same.
Any adivse how does the client have to choose which card to activate?
We are currently developing a wallet solution that uses the iOS EEA HCE API. During the development of our solution we have been unable to identify how we can opt out of using the native HCE payment modal screen or biometric authentication UI so that we can customise the experience to align with our overall customer experience. The only available customisation is a label below the title of the screen which does not meet our needs.
Please can you advise how we can opt out of using the native HCE payment modal screen.
If it is not possible to opt out of using the native HCE payment modal screen, please can you provide the rationale for this given
the Digital Marketing Act interoperability guidelines and EU Commitments in case AT.40452.
Topic:
App & System Services
SubTopic:
Wallet
We are implementing a feature that uses PKPassLibrary.requestAutomaticPassPresentationSuppression to prevent the Wallet from appearing when unlocking a lock. We have already completed the approval process for the entitlement to enable Pass Presentation Suppression.
In most cases, our code snippet works as expected, and the result is .success. However, we are also encountering other results, such as .denied, .alreadyPresenting, and .cancelled or .notSupported, which cause the Wallet to appear for users.
Here's the code snippet we're using:
PKPassLibrary.requestAutomaticPassPresentationSuppression { result in
logger.log(
.info,
"PKPassLibrary suppression result: \(result.description)",
LogContext.homeFeature
)
}
I would appreciate clarification on the following points:
What's the meaning of each result type (.denied, .alreadyPresenting, .cancelled, .notSupported) beyond what is mentioned in the documentation? The documentation here does not provide additional details.
What is the recommended handling for these specific result states? Should we be taking different actions or retries based on each case?
Thank you very much for your help.
Best, Ramiro.
I am currently working on creating a digital wallet for Apple. While I am able to successfully generate the .pkpass file and verify its contents by changing the extension to .zip, I encounter an issue when attempting to open the .pkpass file on an iPhone—it displays the error "File format is not supported."
I validated the .pkpass file using https://pkpassvalidator.azurewebsites.net/, and the validation results indicate that everything is correct. Additionally, I manually verified the contents by extracting the zip file, and all the information appears to be in order.
I am unable to identify the root cause of this issue. Could you please provide guidance on what might be going wrong?
Topic:
App & System Services
SubTopic:
Wallet
Good day)
Colleagues, please tell me how can I change the notification on the locked screen "pass changed" in PKPASS when changing several fields?
Thank you very much for your answer