Docs
Payments and Stripe Setup
Connect your own Stripe account, sell membership tiers, courses, and coaching in USD or GBP, and keep 100% of revenue minus Stripe's own fees.
Last updated
Seedly Communities bills members through your own Stripe account. You connect Stripe with your keys, and every membership payment, course sale, and coaching charge settles directly into your Stripe balance. The platform adds 0% in transaction fees because it never sits between you and your members' money. That is the whole point of owning the source instead of renting a seat.
This page connects Stripe, sets up what you sell, wires the payment webhook, and walks a test payment. You only need this if you charge for access. A free community can skip it entirely.
How the Money Flows#
- Members check out on Stripe's own secure hosted pages.
- Funds land in your Stripe account, on your payout schedule.
- Stripe takes its standard processing fee, the same fee it charges any business.
- Seedly takes nothing on top. You keep 100% minus Stripe's own fee.
There is no Seedly account in the middle, no revenue share, and no per-member cut. Unlimited members pay you directly.
Test Mode and Live Mode#
Stripe gives every account two parallel worlds, and you use both.
- Test mode pairs with your development backend. Fake cards, no real money, safe to experiment.
- Live mode pairs with your production backend. Real cards, real payouts.
Keep them strictly apart. Test keys go on development, live keys go on production, and you never put a live key in your local file. Mixing them is the most common payment setup mistake.
Step 1 - Get Your Stripe Keys#
Create a Stripe account, then from the Stripe dashboard read your API keys.
- The secret key starts with
sk_test_in Test mode andsk_live_in Live mode. This one stays secret. - The publishable key starts with
pk_test_orpk_live_and is safe in the browser.
Step 2 - Set the Keys on the Backend#
Payments run on the backend, so the secret key and webhook secret live on your Convex deployments, set with the environment command. Use the test key on development.
npx convex env set STRIPE_SECRET_KEY sk_test_your_keyUse the live key on production, and never anywhere else.
npx convex env set --prod STRIPE_SECRET_KEY sk_live_your_keyThe setting names are covered on the Environment and Configuration page. You add the matching STRIPE_WEBHOOK_SECRET in Step 4.
Step 3 - Set Up What You Sell#
You do not build products in the Stripe dashboard by hand. You create what you sell inside the community admin, and the platform drives Stripe for you.
- Membership tiers. Create paid tiers with monthly or annual pricing, optional free trials, and coupon codes.
- Paid courses. Put a price on a course or bundle in the classroom.
- Coaching programs. Charge for a one-on-one or group program at enrollment.
Price everything in your currency. Seedly Communities supports USD and GBP. Set the currency that matches your Stripe account and your audience.
Step 4 - Connect the Payment Webhook#
Stripe needs to tell your backend when something happens, like a payment succeeding or a subscription being cancelled. It does this by calling a webhook endpoint on your backend.
- In the Stripe dashboard, in the mode you are configuring, create a webhook endpoint.
- Point it at your backend's site URL with
/webhooks/stripeon the end. Use the development backend URL for the Test-mode webhook and the production backend URL for the Live-mode webhook. - Subscribe it to these events.
checkout.session.completed
customer.subscription.created
customer.subscription.updated
customer.subscription.deleted
invoice.payment_succeeded
invoice.payment_failed- Copy the endpoint's signing secret (it starts with
whsec_) and set it on the matching backend. The platform uses it to confirm each event genuinely came from Stripe.
npx convex env set STRIPE_WEBHOOK_SECRET whsec_your_test_secret
npx convex env set --prod STRIPE_WEBHOOK_SECRET whsec_your_live_secretEach mode has its own signing secret, so match test to development and live to production.
Step 5 - Test a Payment#
With Test mode wired up, run a real end-to-end purchase without spending anything.
- In your development environment, sign up and choose a paid tier.
- At checkout, use Stripe's test card.
4242 4242 4242 4242Any future expiry date and any CVC work. To see a failure, use the declined test card 4000 0000 0000 0002.
- In the Stripe dashboard, open the webhook's deliveries and confirm the events returned success.
- Back in the community, confirm the member now has access to the tier they bought.
When the test flow works end to end, repeat the webhook and key setup in Live mode on production, and you are ready to take real payments.
Troubleshooting#
| Problem | Likely cause |
|---|---|
| Checkout errors immediately | The secret key is missing or is the wrong mode for that backend |
| A payment succeeds but access is not granted | The webhook is not connected, points at the wrong backend, or is missing an event |
| Webhook deliveries fail | The signing secret does not match the backend it is set on |
| A live payment tried to use a test card | You are on the live site with test keys, or the reverse. Recheck which keys are on which backend |
Next Steps#
- Make sure notifications about payments actually reach members by finishing Email and Deliverability.
- Confirm the payment settings on the Environment and Configuration page.
- See how billing fits the rest of the platform on the Features page.
