Redirect and bank transfer confirmers
Confirm a PaymentIntent or SetupIntent with a bank redirect (Bancontact, EPS, FPX, iDEAL, Przelewy24, Pay by Bank, and the deprecated giropay and Sofort) or a bank transfer (Multibanco, customer balance). Redirect methods send the customer to their bank to authorize the payment and back to your return_url; on that page, read the payment_intent_client_secret query parameter and retrieve the PaymentIntent with usePaymentIntent to show the outcome.
giropay and Sofort are deprecated by Stripe
Stripe no longer accepts giropay or Sofort payments. confirmGiropayPayment() and confirmSofortPayment() resolve to { error } with code: 'payment_method_not_available', even when Stripe still lets you create the PaymentIntent, and the composable's error holds the message. Stripe changes that message: it used to read "Giropay is deprecated and can no longer be used for payment acceptance." (or the same with "Sofort"), and in a sandbox in October 2026 both methods answered "Your payment method is currently not available. Please try again later or with a different payment method." Branch on error.code, not on the message. In a sandbox in October 2026, confirmSofortSetup() still redirected to Stripe's Sofort test setup page. The composables remain because Stripe.js 10 still has the methods. Use another redirect method, or the Payment Element, which offers only the methods Stripe accepts.
Stripe removed the standalone iDEAL, EPS, FPX and P24 bank elements in Stripe.js Clover (8.0), but the confirmers remain: pass billing details (and the bank, if you collect it yourself) or the ID of a PaymentMethod you created.
Each composable returns the Stripe.js method under its own name plus loading and error; see Method confirmers for the shared behavior. Call it in a component inside VueStripeProvider. What each method needs lists the Intent currency and the data each method requires, and Test your integration what each method does in test mode.
When to use
The Payment Element shows every redirect method enabled on your account and handles the bank selection; confirm it with usePaymentIntent / useSetupIntent. Use these confirmers when you build your own button for one payment method.
Example
<!-- PayWithIdeal.vue: rendered inside <VueStripeProvider> -->
<script setup lang="ts">
import { useConfirmIdealPayment } from '@vue-stripe/vue-stripe'
const props = defineProps<{ clientSecret: string }>()
const { confirmIdealPayment, loading, error } = useConfirmIdealPayment()
// On success the browser leaves the page for the bank; only an error resolves here.
const pay = () =>
confirmIdealPayment(props.clientSecret, {
payment_method: { ideal: {}, billing_details: { name: 'Jenny Rosen' } },
return_url: `${window.location.origin}/checkout/complete`
})
</script>
<template>
<button :disabled="loading" @click="pay">Pay with iDEAL</button>
<p v-if="error">{{ error }}</p>
</template>confirmCustomerBalancePayment requires { handleActions: false }: it does not show the bank transfer instructions itself, so render them from paymentIntent.next_action.display_bank_transfer_instructions:
const { confirmCustomerBalancePayment } = useConfirmCustomerBalancePayment()
const { paymentIntent } = await confirmCustomerBalancePayment(
clientSecret,
{
payment_method: { customer_balance: {} },
payment_method_options: {
customer_balance: {
funding_type: 'bank_transfer',
bank_transfer: { type: 'eu_bank_transfer', eu_bank_transfer: { country: 'NL' } }
}
}
},
{ handleActions: false }
)Composables
useConfirmBancontactPayment
Wraps stripe.confirmBancontactPayment(). Use stripe.confirmBancontactPayment in the Bancontact Payments with Payment Methods flow when the customer submits your payment form. When called, it will confirm the PaymentIntent with data you provide, and it will automatically redirect the customer to authorize the transaction.
const { confirmBancontactPayment, loading, error } = useConfirmBancontactPayment()
// Stripe.js signature
confirmBancontactPayment(
clientSecret: string,
data?: ConfirmBancontactPaymentData,
options?: ConfirmBancontactPaymentOptions
): Promise<PaymentIntentResult>useConfirmBancontactSetup
Wraps stripe.confirmBancontactSetup(). Use stripe.confirmBancontactSetup in the Set up future payments flow to use Bancontact bank details to set up a SEPA Direct Debit payment method for future payments. When called, it will confirm a SetupIntent with data you provide, and it will automatically redirect the customer to authorize the transaction.
const { confirmBancontactSetup, loading, error } = useConfirmBancontactSetup()
// Stripe.js signature
confirmBancontactSetup(
clientSecret: string,
data?: ConfirmBancontactSetupData
): Promise<SetupIntentResult>useConfirmEpsPayment
Wraps stripe.confirmEpsPayment(). Use stripe.confirmEpsPayment in the EPS Payments with Payment Methods flow when the customer submits your payment form. When called, it will confirm the PaymentIntent with data you provide, and it will automatically redirect the customer to authorize the transaction.
const { confirmEpsPayment, loading, error } = useConfirmEpsPayment()
// Stripe.js signature
confirmEpsPayment(
clientSecret: string,
data?: ConfirmEpsPaymentData,
options?: ConfirmEpsPaymentOptions
): Promise<PaymentIntentResult>useConfirmFpxPayment
Wraps stripe.confirmFpxPayment(). Use stripe.confirmFpxPayment in the FPX Payments with Payment Methods flow when the customer submits your payment form. When called, it will confirm the PaymentIntent with data you provide, and it will automatically redirect the customer to authorize the transaction.
const { confirmFpxPayment, loading, error } = useConfirmFpxPayment()
// Stripe.js signature
confirmFpxPayment(
clientSecret: string,
data?: ConfirmFpxPaymentData,
options?: ConfirmFpxPaymentOptions
): Promise<PaymentIntentResult>useConfirmGiropayPayment
Wraps stripe.confirmGiropayPayment(). Use stripe.confirmGiropayPayment in the giropay Payments with Payment Methods flow when the customer submits your payment form. When called, it will confirm the PaymentIntent with data you provide, and it will automatically redirect the customer to authorize the transaction.
Deprecated by Stripe: the call resolves to a payment_method_not_available error (see above).
const { confirmGiropayPayment, loading, error } = useConfirmGiropayPayment()
// Stripe.js signature
confirmGiropayPayment(
clientSecret: string,
data?: ConfirmGiropayPaymentData,
options?: ConfirmGiropayPaymentOptions
): Promise<PaymentIntentResult>useConfirmIdealPayment
Wraps stripe.confirmIdealPayment(). Use stripe.confirmIdealPayment in the iDEAL Payments with Payment Methods flow when the customer submits your payment form. When called, it will confirm the PaymentIntent with data you provide, and it will automatically redirect the customer to authorize the transaction.
const { confirmIdealPayment, loading, error } = useConfirmIdealPayment()
// Stripe.js signature
confirmIdealPayment(
clientSecret: string,
data?: ConfirmIdealPaymentData,
options?: ConfirmIdealPaymentOptions
): Promise<PaymentIntentResult>useConfirmIdealSetup
Wraps stripe.confirmIdealSetup(). Use stripe.confirmIdealSetup in the Set up future payments flow to use iDEAL bank details to set up a SEPA Direct Debit payment method for future payments. When called, it will confirm a SetupIntent with data you provide, and it will automatically redirect the customer to authorize the transaction.
const { confirmIdealSetup, loading, error } = useConfirmIdealSetup()
// Stripe.js signature
confirmIdealSetup(
clientSecret: string,
data?: ConfirmIdealSetupData
): Promise<SetupIntentResult>useConfirmP24Payment
Wraps stripe.confirmP24Payment(). Use stripe.confirmP24Payment in the Przelewy24 Payments with Payment Methods flow when the customer submits your payment form. When called, it will confirm the PaymentIntent with data you provide, and it will automatically redirect the customer to authorize the transaction.
const { confirmP24Payment, loading, error } = useConfirmP24Payment()
// Stripe.js signature
confirmP24Payment(
clientSecret: string,
data?: ConfirmP24PaymentData,
options?: ConfirmP24PaymentOptions
): Promise<PaymentIntentResult>useConfirmSofortPayment
Wraps stripe.confirmSofortPayment(). Use stripe.confirmSofortPayment in the Sofort Payments with Payment Methods flow when the customer submits your payment form. When called, it will confirm the PaymentIntent with data you provide.
Deprecated by Stripe: the call resolves to a payment_method_not_available error (see above).
const { confirmSofortPayment, loading, error } = useConfirmSofortPayment()
// Stripe.js signature
confirmSofortPayment(
clientSecret: string,
data?: ConfirmSofortPaymentData,
options?: ConfirmSofortPaymentOptions
): Promise<PaymentIntentResult>useConfirmSofortSetup
Wraps stripe.confirmSofortSetup(). Use stripe.confirmSofortSetup in the Set up future payments flow to use SOFORT bank details to set up a SEPA Direct Debit payment method for future payments. When called, it will confirm a SetupIntent with data you provide, and it will automatically redirect the customer to authorize the transaction.
Stripe has deprecated Sofort. In a sandbox in October 2026 the setup flow still redirected; payments are refused (see above).
const { confirmSofortSetup, loading, error } = useConfirmSofortSetup()
// Stripe.js signature
confirmSofortSetup(
clientSecret: string,
data?: ConfirmSofortSetupData,
options?: ConfirmSofortSetupOptions
): Promise<SetupIntentResult>useConfirmPayByBankPayment
Wraps stripe.confirmPayByBankPayment(). Use stripe.confirmPayByBankPayment in the Pay by Bank Payments with Payment Methods flow when the customer submits your payment form. When called, it will confirm the PaymentIntent with data you provide, and it will automatically redirect the customer to authorize the transaction.
const { confirmPayByBankPayment, loading, error } = useConfirmPayByBankPayment()
// Stripe.js signature
confirmPayByBankPayment(
clientSecret: string,
data?: ConfirmPayByBankPaymentData,
options?: ConfirmPayByBankPaymentOptions
): Promise<PaymentIntentResult>useConfirmMultibancoPayment
Wraps stripe.confirmMultibancoPayment(). Use stripe.confirmMultibancoPayment in the Multibanco Payment with Payment Methods flow when the customer submits your payment form. When called, it will confirm the PaymentIntent with data you provide.
const { confirmMultibancoPayment, loading, error } = useConfirmMultibancoPayment()
// Stripe.js signature
confirmMultibancoPayment(
clientSecret: string,
data?: ConfirmMultibancoPaymentData,
options?: ConfirmMultibancoPaymentOptions
): Promise<PaymentIntentResult>useConfirmCustomerBalancePayment
Wraps stripe.confirmCustomerBalancePayment(). Use stripe.confirmCustomerBalancePayment when the customer submits your payment form. When called, it will confirm the PaymentIntent with data you provide.
const { confirmCustomerBalancePayment, loading, error } = useConfirmCustomerBalancePayment()
// Stripe.js signature
confirmCustomerBalancePayment(
clientSecret: string,
data: ConfirmCustomerBalancePaymentData,
options: ConfirmCustomerBalancePaymentOptions
): Promise<PaymentIntentResult>See Also
- Method confirmers - The shared return value
- Redirects - How the return to your page works
- VueStripePaymentElement - Collects these methods with one element
