Shared Stripe Account — Setup Guide

One Stripe account, two apps. Each purchase is tagged so it only triggers its own app's fulfillment.

Barrel & Brand Masterclass

barrel-brand-masterclass.base44.app

On purchase → does X
app_source = barrel_brand_masterclass
metadata
S

Shared Stripe Account

Same STRIPE_SECRET_KEY

Sends every checkout event to BOTH webhook endpoints

webhook

A Dram of Destiny

dramofdestiny.base44.app

On purchase → does Y
app_source = dram_of_destiny
Each webhook checks app_source and ignores anything that isn't its own
B&B webhook

Fulfill only if app_source === "barrel_brand_masterclass"
else log & ignore (200 OK)

Dram webhook

Fulfill only if app_source === "dram_of_destiny"
else log & ignore (200 OK)

Setup Checklist

1

Same Stripe key in both apps

Put the identical STRIPE_SECRET_KEY in both apps' secrets — they share one Stripe account.

2

Create a second Stripe webhook endpoint

In Stripe → Developers → Webhooks, add an endpoint for the Barrel & Brand webhook URL. Keep the Dram of Destiny endpoint. Both subscribe to checkout.session.completed + checkout.session.expired.

3

Different webhook secrets per app

Each endpoint has its own whsec_…. Put B&B's secret in B&B's STRIPE_WEBHOOK_SECRET, and Dram's in Dram's.

4

Tag every checkout with app_source

Each app's create-checkout sets metadata[app_source] to its own value. (Dram of Destiny is done.)

5

Guard each webhook by app_source

Each app's stripe-webhook fulfills only when app_source matches its own value, and ignores everything else. (Dram of Destiny is done.)

✅ Result: a B&B purchase triggers only B&B's fulfillment (X); a Dram purchase triggers only Dram's (Y) — no cross-talk.