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 CanMakePaymentEvent interface of the Payment Handler API is the event object for the canmakepayment event, fired on a payment app's service worker to check whether it is ready to handle a payment. Specifically, it is fired when the merchant website calls the PaymentRequest() constructor.
CanMakePaymentEvent() Experimental
Creates a new CanMakePaymentEvent object instance.
respondWith() Experimental
Enables the service worker to respond appropriately to signal whether it is ready to handle payments.
self.addEventListener("canmakepayment", (e) => {
e.respondWith(
new Promise((resolve, reject) => {
someAppSpecificLogic()
.then((result) => {
resolve(result);
})
.catch((error) => {
reject(error);
});
}),
);
});
| Specification |
|---|
| Payment Handler API> # the-canmakepaymentevent> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
CanMakePaymentEvent |
70 | 79 | No | 57 | No | 70 | No | 49 | No | 10.0 | No | No |
CanMakePaymentEvent |
70 | 79 | No | 57 | No | 70 | No | 49 | No | 10.0 | No | No |
respondWith |
70 | 79 | No | 57 | No | 70 | No | 49 | No | 10.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/CanMakePaymentEvent