Setup: Custom website (not Square Online) integrating the Web Payments SDK (https://web.squarecdn.com/v1/square.js, production). UK merchant. Payments created server-side via the Payments API. Live since April 2026.
Problem: Since customers started updating to iOS 26, Apple Pay and Google Pay checkout has stopped working. The wallet sheet opens and the buyer authorises with Face ID successfully, but the SDK’s tokenize() call then fails at buyer verification:
Tokenization has failed: An error occurred while verifying the buyer
It manifests two ways, both from the same step:
- tokenize() rejects with the error above (caught in our handler).
- tokenize() never resolves or rejects — it hangs indefinitely after authorisation, leaving the page blank/stuck.
In both cases no token is produced and no payment is created — the failure is entirely client-side, before any server call. It worked fine before iOS 26. Card payments via the SDK are unaffected. Reproduces on both Apple Pay and Google Pay (shared verification path).
Environment:
- iPhone, iOS 26.5.1, Safari 26.5
- UA: Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.5
Mobile/15E148 Safari/604.1 - Production API version: 2026-01-22
What I’ve already ruled out:
- Apple Pay web domain shows Verified in the Developer Console (Production) — and the sheet does open, so domain registration is fine.
- Not Square Online — this is a custom Web Payments SDK integration, so the dashboard checkout toggles / “republish site” steps don’t apply.
- tokenize() is called synchronously inside the button’s click handler (no async before it).
- We’re on production credentials and a live card (not a sandbox test card).
- We do not call verifyBuyer() ourselves — the verification is happening inside the wallet tokenize() call and failing there.
- Not a Square platform outage (status page clear).
Questions:
- Is this a known issue with iOS 26 / Safari 26 and the Web Payments SDK’s SCA buyer verification for digital wallets?
- Is an SDK change required on our side — e.g. passing verificationDetails to the wallet tokenize() call?
- Could the Production API version (2026-01-22) be relevant here, or is buyer verification decoupled from it?
- Anything to check account-side (payment-processing certificate, SCA/3DS settings) that could cause verification to fail specifically on newer iOS?
We’ve temporarily hidden the wallet buttons so customers aren’t affected, and can re-enable as soon as a fix is confirmed. Happy to provide further logs or test on request.