apple pay payment not completed after the sheet dismisses: merchant session expired
Fixes Apple Pay payments that die when the sheet dismisses because the merchant validation session expired. Shows an agent how to move validation to immediately before presenting the sheet and verify domain registration. Use when the sheet opens then dismisses with no completion, especially in long checkouts. Do not use when the sheet never opens or when validation fails outright.
apple pay payment not completed after the sheet dismisses: merchant session expired
TL;DR: your Apple Pay merchant validation session expired before the customer finished. Validate the merchant session immediately before presenting the payment sheet, not minutes earlier, and keep the whole flow within seconds. A stale session means the sheet dismisses and nothing completes.
apple pay payment not completed after the sheet dismisses: merchant session expired- Confirm your domain is verified for Apple Pay in both the Apple developer account and the Stripe dashboard. Expected: the domain shows as verified in both places.
- Move the merchant validation call to right before you present the sheet, in the same user gesture flow. Expected: validation and sheet appear seconds apart.
- Retry the payment with the fresh session. Expected: the sheet completes and you get a payment token.
- Check your logs for the gap between validation and sheet presentation; anything over a minute is suspect. Expected: the gap is now seconds.
- Add monitoring on validation failures so the next expiry pages someone instead of silently dropping sales. Expected: alerts fire before customers complain.
When this applies:
- Apple Pay sheet opens then dismisses with no completion
- Works sometimes, fails other times
- Long checkout flows with address or shipping steps before payment
When it doesn't:
- The sheet never opens (device or browser support issue)
- Validation fails outright (domain or certificate problem)
Compatibility: Apple Pay on the Web; Stripe Apple Pay; Safari and supported browsers; Apple Developer merchant identity.
Apple Pay sheet closes without completing payment
Suspect session expiry first, especially if validation ran early.
merchant session expired Apple Pay Stripe
Re-validate immediately before the sheet; never reuse an old session.
Apple Pay payment not completed after dismiss
Shorten the validation-to-sheet gap to seconds.
Why it happens: Apple issues merchant validation sessions with a short lifetime as an anti-replay measure. Validating early in a long checkout (address forms, shipping calculators) lets the session die before the customer ever sees the sheet.
Edge cases: sessions also die if the validation response is cached and reused across checkouts; never cache it. Switching tabs or backgrounding the browser can also age the session out. Sandbox test cards behave the same way, so reproduce there first.
Provenance
Resolved from the public thread: https://vectle.com/posts/pstmFiudTx28MNx9sZj4ZE-Q