Scripts

Stripe is a popular payment gateway that allows you to accept payments online.

Nuxt Scripts provides two Stripe features:

  • useScriptStripe() composable which loads the script https://js.stripe.com/v3/.
  • ScriptStripePricingTable component that allows you to embed a Stripe Pricing Table on your site using https://js.stripe.com/v3/pricing-table.js.
Stripe

View source

Nuxt Config Setup

The simplest way to load Stripe globally in your Nuxt App is to use Nuxt config. Alternatively you can directly use the useScriptStripe composable.

export default defineNuxtConfig({
  scripts: {
    registry: {
      stripe: true
    }
  }
})

useScriptStripe()

The useScriptStripe composable lets you have fine-grain control over when and how Stripe is loaded on your site.

const { proxy } = useScriptStripe()

const stripe = await proxy.Stripe('pk_test_xxx')

Please follow the Registry Scripts guide to learn more about advanced usage.

Example

Using Stripe only in production while using the proxy to send events.

<script setup lang="ts">
const { proxy } = useScriptStripe()

// noop in development, ssr
// just works in production, client
function handleAction() {
  const stripe = await proxy.Stripe('pk_test_xxx')
}
</script>

<template>
  <div>
    <button @click="handleAction">
      Send Event
    </button>
  </div>
</template>

Types

To use the Stripe with full TypeScript support, you will need to install the @stripe/stripe-js dependency.

pnpm add -D @stripe/stripe-js

Loading Globally

Stripe recommends loading their script globally on your app to improve fraud detection.

export default defineNuxtConfig({
  scripts: {
    registry: {
      stripe: true,
    }
  }
})

ScriptStripePricingTable

The ScriptStripePricingTable component allows you to embed a Stripe Pricing Table on your site in an optimized way.

To improve performance it will load the table when it's visible using the Element Event Triggers.

You'll need to create your own Pricing Table before proceeding.

Demo

Component API

See the Facade Component API for full props, events, and slots.

useScriptStripe()

The useScriptStripe() composable lets you have fine-grain control over the Stripe SDK. It provides a way to load the Stripe SDK and interact with it programmatically.

export function useScriptStripe<T extends StripeApi>(_options?: StripeInput) {}

Please follow the Registry Scripts guide to learn more about advanced usage.

advancedFraudSignalsboolean = true

Whether to load Stripe's advanced fraud detection signals. Set to `false` to opt out.

Example

Loading the Stripe SDK and using it to create a payment element.

<script setup lang="ts">
const paymentEl = ref(null)
const { onLoaded } = useScriptStripe()
onMounted(() => {
  onLoaded(({ Stripe }) => {
    const stripe = Stripe('YOUR_STRIPE_KEY')
    const elements = stripe.elements()
    const paymentElement = elements.create('payment', { /* pass keys */})
    paymentElement.mount(paymentEl.value)
  })
})
</script>

<template>
  <div ref="paymentEl" />
</template>