[FYI] Changes in Chrome's Payment Request behaviour

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: 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
   <https://web.dev/articles/android-payment-apps-developers-guide> 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

Received on Tuesday, 4 November 2025 17:14:55 UTC