Bolt.new + PayRequest

Add a payment button to your Bolt.new app

Bolt.new spins up full-stack apps from a prompt — but real payments still need an account, a key, and a webhook. Skip all of it: paste two lines of HTML and your Bolt project starts charging customers immediately.

Payment button for Bolt.new apps
The wall

Why Bolt.new + Stripe rarely ships

Bolt.new generates impressive apps in minutes — Vite + React + Tailwind, sometimes a Node backend, sometimes Hono on the edge. The moment you ask the AI to "add Stripe payments," it starts shipping production-shaped code into a sandbox: client SDK loads, environment variables that the editor can't store securely, webhook handlers with no real domain, and a checkout flow that 404s the second you leave the StackBlitz container. By the time you've debugged the loop, your one-shot Bolt project has turned into a real engineering job.

  • Bolt's container can't securely hold a Stripe secret key for production use.
  • Webhooks require a public URL — the StackBlitz preview URL is not a stable production target.
  • Stripe SDK forces a client/server split that complicates Bolt's single-shot generation.
  • Every regenerate cycle risks losing the carefully wired payment code.
The fix

The fix: a button that doesn't care about the backend

PayRequest's Payment Button is a plain HTML anchor styled by one CSS file. There's no SDK, no key, and no callback — so Bolt.new doesn't need to fight its own architecture to add it. Drop the snippet into the generated component, deploy from Bolt, and the click hands off to your branded PayRequest checkout. The whole integration survives every regenerate.

Lives in the generated JSX

It's an <a> with a className. Bolt keeps it as plain HTML across regenerates, no special component to preserve.

No secret keys in the container

The button is a public link to your PayRequest URL. Nothing sensitive ever needs to live in the Bolt environment.

Webhooks happen on PayRequest

Receipt emails, fulfilment, dunning, refunds — all on PayRequest. Bolt's project stays purely a front-end.

Survives 'regenerate'

Because it's just HTML, prompting Bolt to redesign the page doesn't break the payment integration. Wrap it in a comment and Bolt preserves it.

The snippet

The whole integration, in two lines of HTML

Paste the <link> in your Bolt project's index.html (or root layout). Drop the <a> into any component the AI generates. That's it.

index.html
<!-- 1. Stylesheet — paste once in <head> -->
<link rel="stylesheet"
      href="https://payrequest.app/embed/button.css">

<!-- PayRequest button — keep as-is across regenerates -->
<a href="https://payrequest.me/yourhandle/early-access"
   class="pr-btn pr-btn--default"
   target="_blank"
   rel="noopener">Pay €19</a>

Three styles ship with the stylesheet — pick one to fit Bolt's generated design.

Walkthrough

Step-by-step: from Bolt prompt to live payment

01

Create the Smart Link in PayRequest

Sign in → Payment Page → Smart Links → New. Set the amount, pick methods (card, Apple Pay, iDEAL, PayPal). Copy the URL.

30 sec
02

Open Bolt.new and pick a project

Either prompt a fresh project ("a pricing page for my SaaS") or open an existing one. Bolt's editor is the live source — you'll edit there.

5 sec
03

Add the stylesheet to index.html

Inside <head>, paste <link rel="stylesheet" href="https://payrequest.app/embed/button.css" />. One line, once per project.

10 sec
04

Drop the anchor in any component

Hero CTA, pricing tier, blog post — wherever the Pay button belongs. The button renders instantly in Bolt's preview.

10 sec
05

Deploy from Bolt

Click Deploy → Vercel/Netlify/Bolt's host. The button is plain HTML, so it works on every deployment target. Test the click, take your first payment.

Live
Comparison

Bolt.new + Payment Button vs the alternatives

MethodSetup timeBackend in Bolt?Secret key?Branded checkoutPayment methods
Stripe Checkout (Bolt-generated)
1–2 hours debuggingRequiredYesLimitedCard + Apple/Google Pay
Stripe Elements (Bolt-generated)
Half a dayRequiredYesManual stylingConfigurable
PayPal SDK
1 hourSometimesYesPayPal-brandedPayPal + cards
PayRequest Payment ButtonBest
1 minuteNoneNoneYours20+ including iDEAL, SEPA, Klarna
What to ship

What Bolt.new builders ship with the Payment Button

AI-prompted SaaS landing pages

Generate the pricing tier and the Pay button in the same prompt. Hit Deploy. The early-access waitlist becomes real revenue without an extra build cycle.

Templates and prompt packs

Sell the prompt-pack you used to generate this Bolt project. The button is a plain anchor — Bolt doesn't strip it on regenerate.

Hackathon and demo-day builds

Bolt is fastest-to-publish; the Payment Button is fastest-to-charge. Together: from idea to first sale in a hackathon timeslot.

Internal tools that need a paywall

Lock a Bolt-generated tool behind a one-time payment with a single anchor. Zero auth code required for the gate.

Why this works

Why this beats asking Bolt to add Stripe

Every developer who's prompted Bolt with "add Stripe payments" knows what happens: it generates production-shaped code that needs a real account, a real domain, real environment variables, and real webhook security. None of that exists in a fresh Bolt session, and by the time you've wired it up, the magic of one-shot generation is gone. The Payment Button is the rare integration that doesn't need anything outside Bolt to work.

  • Renders in any framework Bolt picks — React, Vue, Svelte, plain HTML.
  • No build-step changes. Vite, Next, Remix — same anchor, same stylesheet.
  • Survives "redesign this page" prompts because it's just HTML.
  • No vendor lock-in. Switch providers (Stripe, Mollie, PayPal, Ponto) in PayRequest without touching Bolt.
FAQ

Frequently asked questions

Does the Payment Button work inside Bolt.new's preview environment?+
Yes. Because it's a plain anchor tag, Bolt's preview renders it like any other styled link. Clicking opens your PayRequest checkout in a new tab — same behaviour as your deployed site.
Will Bolt strip the snippet when I regenerate the page?+
Sometimes the AI rewrites HTML when you prompt structural changes. Wrap the button in a comment that tells Bolt to keep it ('<!-- PayRequest button — keep as-is -->'), or prompt: 'Preserve the existing <a class="pr-btn"> element exactly when regenerating.' That keeps it across regenerates.
Do I need a Stripe account to use the Payment Button in Bolt?+
No. PayRequest connects to Stripe, Mollie, PayPal, or Ponto on your account once — then every Smart Link and Payment Button you embed in Bolt settles to whichever provider you've connected.
Can I use the Payment Button on Bolt's free tier?+
Yes. The Payment Button is a static anchor and a stylesheet load — no compute, no backend, no plan-restricted feature. Free, Pro, and Team Bolt projects all support it identically.
What about subscriptions or recurring payments?+
PayRequest Smart Links can be one-time or recurring. The button HTML is identical — Bolt doesn't care. Pick the recurring option in the Smart Link, paste the same anchor, and the checkout sets up the subscription on PayRequest.
Does it work whether Bolt deploys to Vercel, Netlify, or its own host?+
Yes. The integration is plain HTML and a CDN-hosted stylesheet — every deployment target serves it identically. Test once, deploy anywhere.
Bolt.new + PayRequest

Ship your Bolt.new app with real payments today

Sign up, create a Smart Link, paste the snippet into your Bolt project. Five minutes, zero SDK, real money.