v148 · shipped · payments · web authentication
Get Secure Payment Confirmation Capabilities
Chrome 148 adds a static PaymentRequest.getSecurePaymentConfirmationCapabilities() method that returns a record of Boolean flags indicating which Secure Payment Confirmation (SPC) capabilities the current browser supports — such as browser-bound keys stored in hardware secure elements.
at a glance
| Shipped in | Chrome 148 (desktop macOS/Windows, Android) |
|---|---|
| Status | Enabled by default |
| New method | PaymentRequest.getSecurePaymentConfirmationCapabilities() |
| Returns | Promise resolving to a capabilities record |
| Spec | W3C Secure Payment Confirmation specification |
| ChromeStatus | 4727235745546240 — Get Secure Payment Confirmation Capabilities |
why it exists
Secure Payment Confirmation (SPC) lets merchants authenticate users via WebAuthn during a payment flow. SPC supports advanced features like browser-bound keys (hardware-backed credentials tied to the device). Before Chrome 148, there was no way for a site to programmatically check whether the browser and OS combination supported a particular SPC capability — a merchant might attempt to use browser-bound keys on a platform that doesn't support them and receive an opaque error. getSecurePaymentConfirmationCapabilities() provides a capability-detection step so merchants can branch their payment flow appropriately.
shape of the API
Method signature
// Static method — no PaymentRequest instance needed
const caps = await PaymentRequest.getSecurePaymentConfirmationCapabilities();
The method returns a Promise resolving to a plain object whose keys are capability identifiers and whose values are Booleans. A value of true means the capability is currently supported; false means it is not.
Checking browser-bound key support
const caps = await PaymentRequest.getSecurePaymentConfirmationCapabilities();
if (caps.browserBoundKeys) {
// Browser supports hardware-backed browser-bound keys in SPC
// → proceed with a flow that requests browserBoundKeys
initiateSecurePaymentWithBoundKeys();
} else {
// Fall back to standard SPC or a non-SPC payment flow
initiateStandardPayment();
}
Platform availability
The method is only available on platforms that support Secure Payment Confirmation: Android, macOS, and Windows. On other platforms (Linux, ChromeOS), the method is not present. Feature-detect before calling:
if ('getSecurePaymentConfirmationCapabilities' in PaymentRequest) {
const caps = await PaymentRequest.getSecurePaymentConfirmationCapabilities();
// use caps
}
Source: blink-dev Intent to Ship — Get Secure Payment Confirmation Capabilities, April 2026; W3C Secure Payment Confirmation spec.
browser support
| Browser | Support |
|---|---|
| Chrome 148+ (macOS, Windows, Android) | Enabled by default |
| Chrome 148+ (Linux, ChromeOS) | Not available (SPC not supported) |
| Firefox | No position |
| Safari | No position |