> ## Documentation Index
> Fetch the complete documentation index at: https://docs.biscuit.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Setting up payments: built-in Stripe Checkout

> Take payments from day one without your own Stripe account. Biscuit handles checkout, billing, and compliance as merchant of record.

export const faqSchema = {
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    { "@type": "Question", "name": "Why is the payment button disabled?", "acceptedAnswer": { "@type": "Answer", "text": "This is expected when the user hasn't bought credits yet, or when Biscuit configured the gate this way. Test by completing a payment and check the button enables after." } },
    { "@type": "Question", "name": "Why can't I complete the checkout?", "acceptedAnswer": { "@type": "Answer", "text": "Confirm you're on the live URL, not the preview. Test mode and live mode use different Stripe environments." } },
    { "@type": "Question", "name": "Why doesn't a successful payment show up in Payments?", "acceptedAnswer": { "@type": "Answer", "text": "Refresh the page. New payments take a few seconds to land." } },
    { "@type": "Question", "name": "Can I really launch a paying product on Biscuit?", "acceptedAnswer": { "@type": "Answer", "text": "Yes. Apps you publish run on production infrastructure, can connect to your own custom domain, and can take live payments from day one." } }
  ]
};

<script type="application/ld+json" dangerouslySetInnerHTML={{__html: JSON.stringify(faqSchema)}} />

<iframe width="100%" height="400" src="https://www.youtube.com/embed/eQOD5GN0Z-A" title="Setting up payments in Biscuit" allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowFullScreen />

Biscuit comes with built-in payment support. The platform handles the Stripe relationship and infrastructure for you, so you don't need a separate account, API keys, or developer time to wire it up. You describe the payment model you want in chat (credit packs, subscriptions, one-time purchases), and Biscuit configures the pricing, the checkout, and the in-app payment buttons.

The setup runs end-to-end in a single chat session.

## How payments work in Biscuit

Payments run through Stripe Checkout. Your app shows users a checkout page labeled *"Payment for \[Your App], processed by Biscuit"*. Biscuit is the merchant of record, which is what enables the day-one setup. The platform handles the Stripe account, the API keys, and the compliance work that would otherwise need its own engineering investment.

## Setting up your first payment flow

<Steps>
  <Step title="Open Payments in the side nav">
    Once your app is built, the side navigation shows more options including *Payments*. Click into it. You'll see a *Set up payments* action.

    <Frame>
      <img src="https://mintcdn.com/flits-886e81a8/qHJFWHw2dceIPPRt/images/payments/01.webp?fit=max&auto=format&n=qHJFWHw2dceIPPRt&q=85&s=39e1eb965406ec30d5dfdeea3a5ab7b8" alt="Payments item in the side nav with Set up payments action" width="1600" height="1178" data-path="images/payments/01.webp" />
    </Frame>
  </Step>

  <Step title="Click Set up payments">
    This opens a chat pre-loaded with monetization ideas tailored to your app: credit packs, subscriptions, one-time purchases.

    <Frame>
      <img src="https://mintcdn.com/flits-886e81a8/qHJFWHw2dceIPPRt/images/payments/02.webp?fit=max&auto=format&n=qHJFWHw2dceIPPRt&q=85&s=ba465a1e43ebc214293331d745e6637d" alt="Chat pre-loaded with monetization ideas after clicking Set up payments" width="1544" height="1600" data-path="images/payments/02.webp" />
    </Frame>
  </Step>

  <Step title="Pick a payment model and prompt the details">
    Type what you want. Examples:

    * *"I want credit packs with 10 credits for \$2"*
    * *"Set up a Pro tier in my app at \$9 per month"*
    * *"Add a one-time purchase of \$5 for the premium template pack"*

    Biscuit configures the pricing, the checkout, and the in-app payment buttons.

    <Frame>
      <img src="https://mintcdn.com/flits-886e81a8/qHJFWHw2dceIPPRt/images/payments/03.webp?fit=max&auto=format&n=qHJFWHw2dceIPPRt&q=85&s=70b0772a3a52d1354ee569f141523086" alt="Biscuit configuring the payment flow after the prompt" width="1600" height="1396" data-path="images/payments/03.webp" />
    </Frame>
  </Step>

  <Step title="Test the checkout">
    Use the preview's test mode. Click your payment button, complete a fake card flow, and check the credit balance updates and the buy-button enables and disables correctly.
  </Step>

  <Step title="Publish the app">
    Click *Publish* in the top-right. Biscuit's safety check confirms the payment setup before your app goes live.
  </Step>

  <Step title="Take a real payment">
    Open the live URL, sign in as a user, and run a real transaction. Stripe's checkout takes the card, Biscuit handles the integration.
  </Step>

  <Step title="See the payment land">
    Back in your project, click *Payments* in the side nav. Every transaction appears here.

    <Frame>
      <img src="https://mintcdn.com/flits-886e81a8/qHJFWHw2dceIPPRt/images/payments/04.webp?fit=max&auto=format&n=qHJFWHw2dceIPPRt&q=85&s=3c6425cd56ee3578ddade98eceb00acf" alt="Payments dashboard with completed transactions" width="1600" height="1434" data-path="images/payments/04.webp" />
    </Frame>
  </Step>
</Steps>

<Tip>
  **Try this prompt**

  ```
  I want credit packs with 10 credits for $2.
  ```
</Tip>

## FAQ

<AccordionGroup>
  <Accordion title="Why is the payment button disabled?">
    This is expected when the user hasn't bought credits yet, or when Biscuit configured the gate this way. Test by completing a payment and check the button enables after.
  </Accordion>

  <Accordion title="Why can't I complete the checkout?">
    Confirm you're on the live URL, not the preview. Test mode and live mode use different Stripe environments.
  </Accordion>

  <Accordion title="Why doesn't a successful payment show up in Payments?">
    Refresh the page. New payments take a few seconds to land.
  </Accordion>

  <Accordion title="Can I really launch a paying product on Biscuit?">
    Yes. Apps you publish run on production infrastructure, can connect to your own custom domain, and can take live payments from day one.
  </Accordion>
</AccordionGroup>

## Up next

<Columns cols={2}>
  <Card title="Sending emails" href="/sending-emails" icon="paper-plane">
    Trigger emails on signup, milestones, or schedules.
  </Card>

  <Card title="Build your first project" href="/first-project" icon="rocket">
    From prompt to a live app on a custom domain.
  </Card>
</Columns>
