diff --git a/custom-payment-flow/client/html/ach.js b/custom-payment-flow/client/html/ach.js
index 1a020b741a..5fec2eca80 100644
--- a/custom-payment-flow/client/html/ach.js
+++ b/custom-payment-flow/client/html/ach.js
@@ -11,7 +11,7 @@ document.addEventListener('DOMContentLoaded', async () => {
}
const stripe = Stripe(publishableKey, {
- apiVersion: '2020-08-27',
+ apiVersion: '2025-12-15.clover',
});
let paymentIntentClientSecret;
diff --git a/custom-payment-flow/client/html/acss.js b/custom-payment-flow/client/html/acss.js
index ca4cc3476d..0e6c6d949e 100644
--- a/custom-payment-flow/client/html/acss.js
+++ b/custom-payment-flow/client/html/acss.js
@@ -11,7 +11,7 @@ document.addEventListener('DOMContentLoaded', async () => {
}
const stripe = Stripe(publishableKey, {
- apiVersion: '2020-08-27',
+ apiVersion: '2025-12-15.clover',
});
// When the form is submitted...
diff --git a/custom-payment-flow/client/html/affirm.js b/custom-payment-flow/client/html/affirm.js
index 6fedaecd3f..380b517630 100644
--- a/custom-payment-flow/client/html/affirm.js
+++ b/custom-payment-flow/client/html/affirm.js
@@ -10,7 +10,7 @@ document.addEventListener('DOMContentLoaded', async () => {
}
const stripe = Stripe(publishableKey, {
- apiVersion: '2020-08-27',
+ apiVersion: '2025-12-15.clover',
});
// When the form is submitted...
diff --git a/custom-payment-flow/client/html/afterpay-clearpay.js b/custom-payment-flow/client/html/afterpay-clearpay.js
index 7c7ee13199..34713770ab 100644
--- a/custom-payment-flow/client/html/afterpay-clearpay.js
+++ b/custom-payment-flow/client/html/afterpay-clearpay.js
@@ -11,7 +11,7 @@ document.addEventListener('DOMContentLoaded', async () => {
}
const stripe = Stripe(publishableKey, {
- apiVersion: '2020-08-27',
+ apiVersion: '2025-12-15.clover',
});
// When the form is submitted...
diff --git a/custom-payment-flow/client/html/alipay.js b/custom-payment-flow/client/html/alipay.js
index 20798a83e5..ba3e322852 100644
--- a/custom-payment-flow/client/html/alipay.js
+++ b/custom-payment-flow/client/html/alipay.js
@@ -11,7 +11,7 @@ document.addEventListener('DOMContentLoaded', async () => {
}
const stripe = Stripe(publishableKey, {
- apiVersion: '2020-08-27',
+ apiVersion: '2025-12-15.clover',
});
// When the form is submitted...
diff --git a/custom-payment-flow/client/html/apple-pay.js b/custom-payment-flow/client/html/apple-pay.js
index 9871487a96..fa2870f12f 100644
--- a/custom-payment-flow/client/html/apple-pay.js
+++ b/custom-payment-flow/client/html/apple-pay.js
@@ -12,7 +12,7 @@ document.addEventListener('DOMContentLoaded', async () => {
// 1. Initialize Stripe
const stripe = Stripe(publishableKey, {
- apiVersion: '2020-08-27',
+ apiVersion: '2025-12-15.clover',
});
// 2. Create a payment request object
diff --git a/custom-payment-flow/client/html/boleto.js b/custom-payment-flow/client/html/boleto.js
index 35d6428c57..a5ef9d8e7a 100644
--- a/custom-payment-flow/client/html/boleto.js
+++ b/custom-payment-flow/client/html/boleto.js
@@ -11,7 +11,7 @@ document.addEventListener('DOMContentLoaded', async () => {
}
const stripe = Stripe(publishableKey, {
- apiVersion: '2020-08-27',
+ apiVersion: '2025-12-15.clover',
});
// When the form is submitted...
diff --git a/custom-payment-flow/client/html/card.js b/custom-payment-flow/client/html/card.js
index 8ed8f83f2d..31a921ec80 100644
--- a/custom-payment-flow/client/html/card.js
+++ b/custom-payment-flow/client/html/card.js
@@ -10,7 +10,7 @@ document.addEventListener('DOMContentLoaded', async () => {
}
const stripe = Stripe(publishableKey, {
- apiVersion: '2020-08-27',
+ apiVersion: '2025-12-15.clover',
});
const elements = stripe.elements();
diff --git a/custom-payment-flow/client/html/eps.js b/custom-payment-flow/client/html/eps.js
index 7937f005e6..21479496d3 100644
--- a/custom-payment-flow/client/html/eps.js
+++ b/custom-payment-flow/client/html/eps.js
@@ -11,7 +11,7 @@ document.addEventListener('DOMContentLoaded', async () => {
}
const stripe = Stripe(publishableKey, {
- apiVersion: '2020-08-27',
+ apiVersion: '2025-12-15.clover',
});
const elements = stripe.elements();
const epsBank = elements.create('epsBank');
diff --git a/custom-payment-flow/client/html/fpx.js b/custom-payment-flow/client/html/fpx.js
index e06afd7c6d..4d45790b8e 100644
--- a/custom-payment-flow/client/html/fpx.js
+++ b/custom-payment-flow/client/html/fpx.js
@@ -11,7 +11,7 @@ document.addEventListener('DOMContentLoaded', async () => {
}
const stripe = Stripe(publishableKey, {
- apiVersion: '2020-08-27',
+ apiVersion: '2025-12-15.clover',
});
const elements = stripe.elements();
const fpxBank = elements.create('fpxBank', {
diff --git a/custom-payment-flow/client/html/giropay.js b/custom-payment-flow/client/html/giropay.js
index 6062aee13b..a79ef9d096 100644
--- a/custom-payment-flow/client/html/giropay.js
+++ b/custom-payment-flow/client/html/giropay.js
@@ -11,7 +11,7 @@ document.addEventListener('DOMContentLoaded', async () => {
}
const stripe = Stripe(publishableKey, {
- apiVersion: '2020-08-27',
+ apiVersion: '2025-12-15.clover',
});
// When the form is submitted...
diff --git a/custom-payment-flow/client/html/google-pay.js b/custom-payment-flow/client/html/google-pay.js
index 9c778431e4..c16287b2d5 100644
--- a/custom-payment-flow/client/html/google-pay.js
+++ b/custom-payment-flow/client/html/google-pay.js
@@ -12,7 +12,7 @@ document.addEventListener('DOMContentLoaded', async () => {
// 1. Initialize Stripe
const stripe = Stripe(publishableKey, {
- apiVersion: '2020-08-27',
+ apiVersion: '2025-12-15.clover',
});
// 2. Create a payment request object
diff --git a/custom-payment-flow/client/html/grabpay.js b/custom-payment-flow/client/html/grabpay.js
index 331b3ba274..f7a5dd4293 100644
--- a/custom-payment-flow/client/html/grabpay.js
+++ b/custom-payment-flow/client/html/grabpay.js
@@ -10,7 +10,7 @@ document.addEventListener('DOMContentLoaded', async () => {
alert('Please set your Stripe publishable API key in the .env file');
}
const stripe = Stripe(publishableKey, {
- apiVersion: '2020-08-27',
+ apiVersion: '2025-12-15.clover',
});
// When the form is submitted...
diff --git a/custom-payment-flow/client/html/ideal.js b/custom-payment-flow/client/html/ideal.js
index 12f6a65767..9223e07eab 100644
--- a/custom-payment-flow/client/html/ideal.js
+++ b/custom-payment-flow/client/html/ideal.js
@@ -11,7 +11,7 @@ document.addEventListener('DOMContentLoaded', async () => {
}
const stripe = Stripe(publishableKey, {
- apiVersion: '2020-08-27',
+ apiVersion: '2025-12-15.clover',
});
const elements = stripe.elements();
diff --git a/custom-payment-flow/client/html/klarna.js b/custom-payment-flow/client/html/klarna.js
index fddc47fc27..a7999d3996 100644
--- a/custom-payment-flow/client/html/klarna.js
+++ b/custom-payment-flow/client/html/klarna.js
@@ -27,7 +27,7 @@ document.addEventListener('DOMContentLoaded', async () => {
}
const stripe = Stripe(publishableKey, {
- apiVersion: '2020-08-27',
+ apiVersion: '2025-12-15.clover',
});
// When the form is submitted...
diff --git a/custom-payment-flow/client/html/konbini.js b/custom-payment-flow/client/html/konbini.js
index a3b3edfce9..2b1adc1b38 100644
--- a/custom-payment-flow/client/html/konbini.js
+++ b/custom-payment-flow/client/html/konbini.js
@@ -12,7 +12,7 @@ document.addEventListener('DOMContentLoaded', async () => {
const stripe = Stripe(publishableKey, {
betas: ['konbini_pm_beta_1'],
- apiVersion: '2020-08-27; konbini_beta=v1',
+ apiVersion: '2025-12-15.clover',
});
// When the form is submitted...
diff --git a/custom-payment-flow/client/html/link.js b/custom-payment-flow/client/html/link.js
index 265bfe38ac..ed7d274cb7 100644
--- a/custom-payment-flow/client/html/link.js
+++ b/custom-payment-flow/client/html/link.js
@@ -10,7 +10,7 @@ document.addEventListener('DOMContentLoaded', async () => {
}
const stripe = Stripe(publishableKey, {
- apiVersion: '2022-11-15',
+ apiVersion: '2025-12-15.clover',
});
const { clientSecret } = await fetch('/create-payment-intent', {
diff --git a/custom-payment-flow/client/html/oxxo.js b/custom-payment-flow/client/html/oxxo.js
index 8fca019de1..889ec39733 100644
--- a/custom-payment-flow/client/html/oxxo.js
+++ b/custom-payment-flow/client/html/oxxo.js
@@ -11,7 +11,7 @@ document.addEventListener('DOMContentLoaded', async () => {
}
const stripe = Stripe(publishableKey, {
- apiVersion: '2020-08-27',
+ apiVersion: '2025-12-15.clover',
});
// When the form is submitted...
diff --git a/custom-payment-flow/client/html/p24.js b/custom-payment-flow/client/html/p24.js
index 8b111a4f49..8b1106c127 100644
--- a/custom-payment-flow/client/html/p24.js
+++ b/custom-payment-flow/client/html/p24.js
@@ -11,7 +11,7 @@ document.addEventListener('DOMContentLoaded', async () => {
}
const stripe = Stripe(publishableKey, {
- apiVersion: '2020-08-27',
+ apiVersion: '2025-12-15.clover',
});
const elements = stripe.elements();
diff --git a/custom-payment-flow/client/html/paypal.js b/custom-payment-flow/client/html/paypal.js
index f8082207b5..0fddd5d44d 100644
--- a/custom-payment-flow/client/html/paypal.js
+++ b/custom-payment-flow/client/html/paypal.js
@@ -12,7 +12,7 @@ document.addEventListener('DOMContentLoaded', async () => {
// 1. Initialize Stripe
const stripe = Stripe(publishableKey, {
- apiVersion: '2024-06-20',
+ apiVersion: '2025-12-15.clover',
});
MODE = 'payment';
diff --git a/custom-payment-flow/client/html/return.js b/custom-payment-flow/client/html/return.js
index a2975b0072..1ac2363f64 100644
--- a/custom-payment-flow/client/html/return.js
+++ b/custom-payment-flow/client/html/return.js
@@ -10,7 +10,7 @@ document.addEventListener('DOMContentLoaded', async () => {
}
const stripe = Stripe(publishableKey, {
- apiVersion: '2020-08-27',
+ apiVersion: '2025-12-15.clover',
});
const url = new URL(window.location);
diff --git a/custom-payment-flow/client/html/sepa-debit.js b/custom-payment-flow/client/html/sepa-debit.js
index a58cdb76d1..a04e79c2d3 100644
--- a/custom-payment-flow/client/html/sepa-debit.js
+++ b/custom-payment-flow/client/html/sepa-debit.js
@@ -11,7 +11,7 @@ document.addEventListener('DOMContentLoaded', async () => {
}
const stripe = Stripe(publishableKey, {
- apiVersion: '2020-08-27',
+ apiVersion: '2025-12-15.clover',
});
const elements = stripe.elements();
diff --git a/custom-payment-flow/client/html/sofort.js b/custom-payment-flow/client/html/sofort.js
index 8d97a2cc42..b3e606fa07 100644
--- a/custom-payment-flow/client/html/sofort.js
+++ b/custom-payment-flow/client/html/sofort.js
@@ -11,7 +11,7 @@ document.addEventListener('DOMContentLoaded', async () => {
}
const stripe = Stripe(publishableKey, {
- apiVersion: '2020-08-27',
+ apiVersion: '2025-12-15.clover',
});
// When the form is submitted...
diff --git a/custom-payment-flow/client/html/wechatpay.js b/custom-payment-flow/client/html/wechatpay.js
index 1b753653c4..34bbd237f3 100644
--- a/custom-payment-flow/client/html/wechatpay.js
+++ b/custom-payment-flow/client/html/wechatpay.js
@@ -10,7 +10,7 @@ document.addEventListener('DOMContentLoaded', async () => {
alert('Please set your Stripe publishable API key in the .env file');
}
const stripe = Stripe(publishableKey, {
- apiVersion: '2020-03-02',
+ apiVersion: '2025-12-15.clover',
});
// When the form is submitted...
diff --git a/custom-payment-flow/server/node/server.js b/custom-payment-flow/server/node/server.js
index bb42cf0750..c8d3891b5a 100644
--- a/custom-payment-flow/server/node/server.js
+++ b/custom-payment-flow/server/node/server.js
@@ -12,7 +12,7 @@ const calculateTax = false;
// See https://docs.stripe.com/keys-best-practices and find your
// keys at https://dashboard.stripe.com/apikeys.
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY, {
- apiVersion: '2023-10-16',
+ apiVersion: '2025-12-15.clover',
appInfo: {
// For sample support and debugging, not required for production:
name: 'stripe-samples/accept-a-payment/custom-payment-flow',
diff --git a/custom-payment-flow/server/php/public/acss.php b/custom-payment-flow/server/php/public/acss.php
index 3d3fdd3838..bdafa410f3 100644
--- a/custom-payment-flow/server/php/public/acss.php
+++ b/custom-payment-flow/server/php/public/acss.php
@@ -44,7 +44,7 @@