Note: Stripe integration is available on Builder and Pro tiers. If you’re on the Free tier, you’ll need to upgrade your app to use backend functions and payment features.

Step-by-step setup

Part 1 : The Stripe side

If you already have your Stripe secrets, you can skip ahead to “The Base side” setup
1

Create your Stripe account

If you don’t have a Stripe account yet, create one on www.stripe.com.Screenshot2025 07 25at12 05 27PM Pn
  • Stripe will ask you for your contact info, business details and banking information.
  • Not ready to provide those yet? No problem. You can start using Stripe’s sandbox environment, which lets you test everything without moving real money.
You must have an activated account in order to accept real payments. To activate your account, you will need to provide your business and banking details with Stripe. 
2

Get your API key

You’ll find your API keys in your Stripe dashboard.2 API Key Pn
  • Copy and save your secret key somewhere secure, but also keep it handy. You’ll need to paste it into Base44 later. 
If you need extra help, check out Stripe’s API keys guide.
3

Get your webhook secret

To securely send payment updates from Stripe to your app, you’ll need a webhook secret. Stripe uses webhooks to notify your Base44 app when something happens (like a successful payment).
  1. Go to the Stripe Workbench and open the Webhooks tab. 
  2. Click “Add endpoint” (or “add destination”). 3 Add Event Destinations Pn
  3. Choose the event(s) you need.
    For example,  “checkout.session.completed” is commonly used for one-time payments via Stripe checkout.
    4 Selectevent Pn
    You can choose different events depending on what your app does:
    • Invoice.paid -   is great for subscriptions.
    • payment_intent.succeeded - is great for manual payments.
    • customer.subscription.deleted - is great for managing cancellations. 
  4. When asked to choose a destination type, select: Webhook endpoint. 5 Choosedestinationtype Pn
    You might also see Amazon EventBridge which is a tool for advanced apps built with Amazon Web Services (AWS) and used mostly by developers connecting multiple cloud services. If that’s not you, just stick with Webhook endpoint.
  5. Add your destination name and app’s URL as the endpoint, then select “Create destination.” 6 Configure Destination Pn
4

After saving, copy the signing secret

The signing secret starts with “whsec” and you can find it in the destination details section.7 WHSEC Pn
Note: Keep this secret safe and handy, you’ll also need to paste this into Base44

Part 2 : The Base44 side

1

Activate backend functions

To use Stripe (and other advanced features) in your Base44 app, you’ll first need to enable backend functions. Here’s how to do it: Activate Backend Functions Pn
  1. Open Base44 and select the app you want to connect to Stripe.
  2. Click on the app’s Dashboard
  3. Click on Settings
  4. Scroll down and click on App Settings.
  5. Find the section labeled Backend Functions.
  6. Click the “Activate” button. 
Prefer to watch a quick demo? Check out this short video.
2

Connect Stripe to your app

Now that backend functions are enabled:
  1. In your app’s AI chat, type: integrate with Stripe. Integratewithstripe Pn
  2. Click on “Update secrets” in the chat and when prompted, paste in:
    • Your API key (from Stripe step 2)
    • Your webhook secret (from Stripe Step 3)
Addstripesecrets Pn
That’s it! Your app is now connected to Stripe and ready to start handling payments. 

Running tests

Before you go live, it’s a good idea to test your setup using Stripe’s sandbox mode. 

How to build real payment features in Base44

Once Stripe is connected to your Base44 app, you can start accepting real payments and not just test ones.  But what happens next?  You’ll likely want to do something after a payment goes through, like:
  • Add credits to the user’s account
  • Unlock a digital product
  • Mark the user as “Pro” or subscribed
  • Remove access after a refund
To make those things happen, you’ll need to tell your Base44 app what to do as clearly and specifically as possible in the AI chat. Why do I need to describe it this way? Great question! Stripe does offer a tool called a webhook, which sends a message to your app when a payment is complete. But Base44 doesn’t allow those background messages to change user data (like credits or access) on their own.

Instead, your app needs to make those updates based on a logged-in user’s session for safety and security. We explain more below, but the short version is:
  • Always let the user trigger the update
  • Your prompts in the AI Chat should reflect that, so the flow works as expected
Below are some example prompts that you can paste directly into the chat to set up real payment flows. You can copy them as-is or tweak them to describe exactly what you want your app to do.  

Why you can’t use Stripe webhooks alone

Stripe does offer a feature called a webhook which is like a little bot that notifies your app when a payment is successful. However, Base44 has some important security rules:
  • Webhook functions can’t update user data directly (like credits, roles, or subscriptions)
  • Even if you use a service key, you may see errors like:
    • 403 Forbidden
    • “You must be logged in to access this app”
This is a guardrail to protect your app. Base44 only allows sensitive updates when they’re triggered by someone who’s logged in.

The right way: Let the user trigger the update

Here’s how to securely update user data after a payment:
  1. The user picks something to buy (credits, product, service, etc.)
  2. Your app calls a backend function to create a Stripe Checkout session — this includes their user ID
  3. The user is sent to Stripe to pay
  4. After payment, they’re redirected back to your app
  5. On the success page, your app uses the Stripe session ID to:
    • Confirm the payment
    • Match the session to the logged-in user
    • Make the update (like adding credits)
This flow works because every step is tied to a real user session — and that’s exactly what Base44 needs to allow the update.

FAQ