This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
Note: This feature is only available in Service Workers.
The changePaymentMethod() method of the PaymentRequestEvent interface is used by the payment handler to get an updated total, given such payment method details as the billing address.
When this method is invoked, a PaymentMethodChangeEvent is fired.
changePaymentMethod(methodName) changePaymentMethod(methodName, methodDetails)
methodNameThe name of the payment method to be used.
methodDetails OptionalAn object containing method-specific details that are being updated.
A Promise that resolves with a PaymentRequestDetailsUpdate object. This object contains the following properties:
errorA string that explains why the user-selected payment method cannot be used.
totalAn updated total based on the changed payment method. The total can change, for example, because the billing address of the payment method selected by the user changes the applicable sales tax.
modifiersAn Array of PaymentDetailsModifier objects, whose properties are described in PaymentRequestEvent.modifiers.
paymentMethodErrorsAn object containing validation errors for the payment method, if any.
The following shows a trivial code snippet that could be used in a service worker to send a payment method change notification to the main payment handler window. For a complete test example, see Payment handler for testing payment method change event.
function notifyPaymentMethodChanged(e) {
e.changePaymentMethod("someMethod")
.then((paymentMethodChangeResponse) => {
paymentHandlerWindow.postMessage(paymentMethodChangeResponse);
})
.catch((error) => {
sendMessage({ error: error.message });
});
}
| Specification |
|---|
| Payment Handler API> # changepaymentmethod-method> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
changePaymentMethod |
76 | 79 | No | 63 | No | 76 | No | 54 | No | 12.0 | No | No |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/PaymentRequestEvent/changePaymentMethod