[FYI] Changes in Chrome's Payment Request behaviour

0 views
Skip to first unread message

Stephen Mcgruer

unread,
Nov 4, 2025, 12:14:54 PM (20 hours ago) Nov 4
to blink-dev

If you do not ship a Payment Handler or integrate Payment Request into your website, you can stop reading here :).


(bcc various payment-related mailing lists)


Hi folks,


In Chrome M143, we are launching some slight changes to the behavior of the Payment Request API in Chrome. One change affects all users, whilst the remainder affect only users who have the "Allow sites to check if you have payment methods saved" settings toggle disabled (default is enabled):


image.png


As a reminder, this toggle allows users to decide whether or not the Payment Request and Payment Handler APIs can exchange certain information intended to allow for a smoother checkout. Users may choose to disable the toggle in order to reduce the amount of information sharing allowed.


Changes:


  • Fix a bug with Android app Payment Handlers where both the canMakePayment() and hasEnrolledInstrument() APIs depended on the result of the "is ready to pay" query. From Chrome M143 onwards, only hasEnrolledInstrument() will depend on the result of this query. The canMakePayment() API is aligned to the desktop behavior, where it only returns whether the app is available or not, irrespective of the "is ready to pay" answer.

  • Improve the privacy properties offered by disabling the "Allow sites to check if you have payment methods saved" toggle, by making it restrict the "is ready to pay" query completely. Previously the query was still sent but the answer was ignored - from Chrome 143 onwards the query will just not be sent. If the query is not sent, hasEnrolledInstrument() will always return false.

  • Alter the behavior of the "Allow sites to check if you have payment methods saved" toggle for the canMakePayment API. Previously, disabling that toggle would make both canMakePayment() and hasEnrolledInstrument() return false. To align better with the intended semantics of the APIs, disabling the toggle will now make canMakePayment() always return true and hasEnrolledInstrument() always return false.


If you have a Payment Request integration on your website, or are a Payment Handler developer, we encourage you to install Chrome M143 in the Beta channel (available now!), and test your flows to ensure no regressions have occurred.


Thanks,

Stephen

Reply all
Reply to author
Forward
0 new messages