v148 · Web APIs · Capabilities Demo

Capabilities Demo

Calls PaymentRequest.getSecurePaymentConfirmationCapabilities() and displays what Chrome reports for this device — SPC support and authenticator availability.

SPC requires a platform authenticator (Face ID, Touch ID, Windows Hello) and a previously enrolled WebAuthn credential tied to a payment instrument. The capabilities API tells you whether the device can support SPC before you build the payment flow.

device capabilities

PaymentRequest.getSecurePaymentConfirmationCapabilities()

API available Checking…
spcSupported
authenticatorAttachment

what to do based on the result

spcSupported: true

  • Show SPC payment sheet during checkout
  • Offer biometric step-up for high-value transactions
  • Register new WebAuthn credential for faster future payments
  • Skip OTP/password step-up for enrolled users

spcSupported: false

  • Fall back to SMS OTP or password step-up
  • Offer to enrol a platform authenticator if the OS supports it
  • Use traditional 3DS challenge flow
  • Prompt user to try on a biometric-capable device

integration code

async function checkSPCAndRoute() {
  if (!('getSecurePaymentConfirmationCapabilities' in PaymentRequest)) {
    // Pre-Chrome 148: use canMakePayment() as a fallback probe
    return useFallbackAuth();
  }

  const caps = await PaymentRequest
    .getSecurePaymentConfirmationCapabilities();

  if (!caps.spcSupported) {
    return useFallbackAuth();
  }

  // Device supports SPC — check for enrolled credential
  const hasCredential = await checkEnrolledCredential(userId);

  if (hasCredential) {
    return showSPCPaymentSheet(transactionDetails);
  } else {
    return enrollAndPay(userId, transactionDetails);
  }
}

see also

implementation reference

Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗