
Vue Stripe Endive Stripe Elements and Checkout as Vue components
Components and composables for every Stripe.js element and method, typed and tested on Vue 3 and Vue 2.7. Drop a provider into your app, render the Payment Element, and confirm with one composable.
Now on Stripe.js 10 (Endive)What changed in v6<script setup lang="ts">
import { onMounted, ref } from 'vue'
import {
VueStripeProvider,
VueStripeElements,
VueStripePaymentElement
} from '@vue-stripe/vue-stripe'
import '@vue-stripe/vue-stripe/style.css'
import PayButton from './PayButton.vue'
const clientSecret = ref<string>()
onMounted(async () => {
// Your server creates the PaymentIntent (server.mjs)
const response = await fetch('/api/payment-intent', { method: 'POST' })
clientSecret.value = (await response.json()).clientSecret
})
</script>
<template>
<VueStripeProvider publishable-key="pk_test_...">
<VueStripeElements v-if="clientSecret" :client-secret="clientSecret">
<VueStripePaymentElement />
<PayButton :client-secret="clientSecret" />
</VueStripeElements>
</VueStripeProvider>
</template>Vue Stripe in numbers
- 3.9M npm downloads
- 14.6K downloads a week
- 1,126 GitHub stars
- 34 contributors
See all the numbers (updated Oct 15, 2026)
- 11.8 kB the whole library
- 4.2 kB a Payment Element checkout
- 2.5 kB Embedded Checkout
- 330 B useStripe alone
Minified and gzipped, tree-shaken. How bundle size works
Vue 3 and Vue 2.7
One build for both. Render-function components and composables, tested on each version in CI.
Every Stripe element
Payment, Express Checkout, Card, Address, Link, IBAN, BECS, Tax ID, Currency Selector, Issuing and more.
Every Checkout
Hosted, Embedded and Custom Checkout, the Checkout Form and the Pricing Table.
A composable per method
usePaymentIntent, one useConfirm composable per payment method, tokens, Financial Connections and Identity.
Typed end to end
Props, events, exposed members and results are typed from Stripe.js, and every Stripe type you need is re-exported.
100% of Stripe.js 10
Every element and method has a wrapper. A test fails the build when Stripe adds something new.
Pick how you take payments
Six ways to put Stripe in a Vue app, from a single element to a full checkout page. Compare them
Payment Element on your page
Cards, wallets and local payment methods in one form, confirmed against a PaymentIntent.
VueStripePaymentElementCustom Checkout
Your own layout on a Checkout Session. Stripe keeps line items, tax, discounts and currency.
VueStripeCheckoutElementsProviderEmbedded Checkout
Stripe's prebuilt checkout page, mounted inside your page.
VueStripeEmbeddedCheckoutHosted Checkout
Redirect to checkout.stripe.com with the session URL your server creates.
VueStripeCheckoutCheckout Form
A complete checkout form from one component, on a Checkout Session. Stripe beta.
VueStripeCheckoutFormPricing Table
A pricing table you configure in the Stripe Dashboard, embedded with one tag.
VueStripePricingTable
Try it with a test card
This live demo runs in Stripe test mode against our demo backend. Pay with 4242 4242 4242 4242, any future expiry date and any CVC.
