A form that collects the answers and the money.
Describe it to the AI you already use and what comes back is a live link that takes the card before it submits — order forms, paid registrations, deposits, session bookings, donations. The charge runs through Stripe into your account. No checkout page to build, no payment plugin to wire up.
Connect https://quizgen.dev/mcp in Claude or ChatGPT, authorize in the browser, then ask. No MCP in your client? Paste this line instead:
Payments need the Business plan and a connected Stripe account. The rest of the form you can build and test for free first.
Why an AI can't just generate this one
Ask an assistant for a contact form and it can hand you an HTML file that looks right. Ask it for a form that takes $40 and the file is useless. Taking money needs a server that holds a secret key, a Stripe account that is actually yours, a URL that still exists next week, and somewhere for the record of the charge to live. None of that fits in a generated artifact — it's infrastructure, and it has to outlive the conversation that produced it.
That's the gap this fills. Your assistant sends one API call describing the form and the price; what comes back is a hosted page on quizgen.dev that is already wired to your Stripe account and already recording who paid. The deployment is the product — the form is just what it deploys.
What a paid question looks like
One question type does it. A fixed price:
{ "id": "ticket", "type": "payment", "required": true,
"prompt": "Reserve your seat",
"amount_cents": 4000,
"button_label": "Pay $40 and register" }Or let the respondent pick what they pay — tiers, ticket types, donation levels:
{ "id": "tier", "type": "payment", "required": true,
"prompt": "Choose your ticket",
"price_options": [
{ "value": "general", "label": "General", "amount_cents": 4000 },
{ "value": "student", "label": "Student", "amount_cents": 1500,
"detail": "Valid .edu email required" },
{ "value": "patron", "label": "Patron", "amount_cents": 12000,
"detail": "Includes the workshop recording" } ]}With required: true the form will not submit until the charge clears, so an unpaid response can't slip through. Prices run from $0.50 to $10,000, and one form takes one payment question — it charges once, not a cart of line items.
What people build with it
Order forms. A product or service with a fixed price, or a short list of options the buyer picks from — plus every detail you need to fulfil it: size, colour, delivery date, engraving text. The order details and the payment arrive as one record, not an email you have to match against a Stripe notification. Covered in depth at online order forms.
Paid registrations. Workshops, classes, and events. Pair the payment with settings.max_responses and the form sells out and closes itself at capacity — see the RSVP-with-cap post.
Deposits and booking fees. Photographers, contractors, consultants: take the intake questions and the deposit in the same step, so the brief and the commitment arrive together instead of a week apart.
Applications with a fee. Use show_if branching so the fee only appears for applicants it applies to, and scoring so the qualified ones are already sorted when you open the dashboard.
For itemized billing with line items and a recorded approval, the pattern is a little different — that one is written up in the invoice template guide.
Setup, and what it costs
- 1. Connect Stripe once. Go to /dashboard/payments and finish Stripe Connect onboarding. Until card payments are active on your account, a form containing a payment question returns
402 payments_not_readyrather than going live half-working. - 2. Describe the form and the price. Your assistant writes the definition and POSTs it. Fixed amount or a price list, in any currency Stripe supports.
- 3. Share the link and get paid. Funds settle into your Stripe account on your normal payout schedule. QuizGen takes 2% per charge; Stripe takes its usual processing fee. Refunds and disputes are handled in Stripe like any other payment.
Payments are a Business-plan feature ($49/mo). Everything else — scoring, branching, webhooks, themes, email sends — starts free or on Pro; see pricing.
Reconciling answers against charges
Every completed response carries paid: true and the Stripe payment_intent id, so any answer can be traced to its charge and back. Set a webhook and each paid response POSTs to your endpoint the moment it lands, HMAC-signed — enough to trigger fulfilment, add the buyer to a list, or file the order without anyone opening a dashboard. How that works is in the webhooks post.
Common questions
Where does the money go?
Straight into your own Stripe account, not ours. You connect your Stripe account once at quizgen.dev/dashboard/payments, and every charge is created directly against it. QuizGen takes a 2% platform fee on top of Stripe's own processing fee. Payouts, refunds, disputes, and tax reporting all happen in your Stripe dashboard exactly as they would for any other charge.
What does it cost?
Payment questions require the Business plan at $49/mo, plus the 2% platform fee per charge and Stripe's standard processing fee. Every other form feature — scoring, branching, webhooks, email sends — is available on cheaper plans; payments is the one thing gated to Business.
Can the respondent choose what to pay?
Yes, two ways. A fixed price uses amount_cents (minimum 50, i.e. $0.50; maximum 1,000,000, i.e. $10,000). A pick-one price list uses price_options — 2 to 10 named prices with optional detail lines, so the respondent selects a tier, ticket type, or donation amount and pays that.
Can I charge for multiple line items with quantities?
Not natively — a form takes at most one payment question, so it charges one amount, either fixed or chosen from a price list. There is no multi-item cart with quantities. For itemized billing, the usual pattern is an invoice form that captures the line items and approval, then redirects to a Stripe payment link; that walkthrough is in our invoice template guide.
What happens if the card is declined?
With required: true on the payment question, the form will not submit until the charge succeeds, so you never get an unpaid response through a paid form. A completed response records paid: true along with the Stripe payment_intent id, so you can reconcile any answer against the charge in Stripe.
Can I try it without a Stripe account?
You can build and test the rest of the form for free, but not the payment step. Sandbox forms and free plans return a 402 payments_not_ready until Stripe Connect onboarding is finished — a real charge needs a real connected account, so there is no way to fake it.
Build the form first, add the price after
Start free — 3 live forms, 100 answers each per month, no card. Connect Stripe and upgrade when you're ready to charge.