How to sell an online course with Stripe, without a course platform
Selling a course with Stripe needs three things a payment link doesn't give you: a members area that checks who paid, delivery that closes on refunds, and the emails. Here's how to set up all of it on your own site.

You can sell an online course with Stripe and no course platform. Stripe takes the payment. Your own site needs to do the rest: open the lessons to people who paid, keep them closed to everyone else, close them again if someone gets a refund, and send the emails. A Stripe payment link on its own does the first part. This post covers the rest.
Why a payment link isn't enough
A Stripe payment link is the quickest way to take money. It's also where most "sell without a platform" setups stop, and here's what goes wrong:
- Delivery is manual. Someone pays, you get an email, you send them a link. At 2am. On holiday.
- The link gets shared. If the course is a private YouTube playlist or a shared folder, anyone with the link has the course.
- Refunds don't close anything. You refund the payment in Stripe, and they still have the folder.
- No funnel. No add-on before payment, no offer after it, no follow-up for people who opened the checkout and left.
None of this is Stripe's job. Stripe is the payment layer. You need a thin layer on top that knows who paid for what.
What you need
- A sales page on your own domain.
- Stripe Checkout, ideally opening in a window on that page rather than sending people away.
- A members area on your site where lessons live, and which asks Stripe "did this person pay, and is it still paid?" before it opens anything.
- Order emails with the access link, sent from your domain.
- Optional, but where the money is: a payment plan, an order bump, a one-click upsell, a free lesson for emails, and a reminder for abandoned checkouts.

The setup, step by step
This is how it works with Funnelr, but the shape is the same whatever you use.
1. Create a Stripe account and a restricted key
Sign up at Stripe, verify your business, and create a restricted API key: a key that can only do what the site needs (create checkouts and payments, read customers and invoices). It goes in a file on your computer, not in a chat window, and then onto your live site as a secret.
You don't create products by hand in Stripe. The site creates the checkout with the right price each time, from your own config.
2. Describe the course
In Funnelr a course is a block in the site's config: the product (name and price, in cents), then the course itself with its modules and lessons. Each lesson has a title, a video link (YouTube unlisted, Vimeo or Cloudflare Stream), the text in markdown, and any downloads. Lessons can open on a schedule (drip) and one can be a free preview.
You can write that yourself, or tell your AI: "a 6-lesson course called Calm Money, $49, lesson 1 free as a preview, a new lesson every 2 days".
3. Put the buy button on your page
Any button can open the checkout: <button data-buy="course">Get the course</button>. The price shown on the page is filled in from the config, so it can't drift out of sync with what Stripe charges.
4. Test it with fake payments
Before you touch real money, run the site on your computer with a fake Stripe that "pays" instantly. Buy the course, open the lessons, try a lesson you shouldn't have, refund the order and check the course closes. Funnelr's end-to-end test does all of that in under a minute.
5. Go live in test mode, then for real
Deploy to Cloudflare, buy with Stripe's test card, and check the order email. When everything works, swap the test key for the live one, buy it yourself for real, and refund it. That one real purchase proves money in, delivery, and refunds closing access.
Access that follows the money
The important part is that access isn't a list you maintain. It's a question asked on every visit:
- Paid once? The course is theirs.
- On a payment plan? Open while the plan is being paid, and theirs for good once it's paid off.
- On a membership? Open while the subscription is active (or in its trial), closed when it's cancelled.
- Refunded? Closed, within minutes, without you doing anything.
Because every buyer is a customer in your own Stripe, this also means you own your customer list from the first sale. Members sign in from the link on their order page, with an emailed sign-in link, or with a password if they've set one. Downloads attached to lessons are served only to signed-in buyers, so a shared link to a PDF doesn't work for anyone else.
Selling more than the course
A course on its own is a fine business. A course with a funnel around it is a better one:
- Payment plan: three payments instead of one. It stops itself after the last payment. (Payment plans vs subscriptions.)
- Order bump: the workbook, added in the payment window with one tick. (How to pick and price one.)
- One-click upsell: a coaching call after payment, on the same card. (How it works.)
- A free lesson for an email, then a short welcome series.
- A checkout reminder for people who opened the checkout and didn't pay. (It only goes to people who gave their email.)
What it costs to run
- Stripe: per-transaction card fees. No monthly fee.
- Cloudflare: the free plan covers a small course site; Workers Paid is $5 a month when it grows.
- Resend for email: free up to 3,000 emails a month.
- Video hosting: whatever you already use. YouTube unlisted is free.
- Funnelr: bought once.
Compare that with a course platform at $179 a month on the entry plan (Kajabi, public list price, October 2026): $6,444 over three years. More on that in the Kajabi alternative for courses.
Common mistakes
- Hosting lessons on a public page "nobody will find". Someone will, and they'll share it.
- Typing prices into the page. Keep one source of truth for prices, on the server.
- Skipping the refund test. Refund a real purchase once before launch and check access closes.
- No support email. Put one on every page and in the order email. Most "where's my course" emails are a typo in an address, and you'll fix them in a minute.
There's a full course funnel on the page for course creators, and the shorter checklist in launching a course funnel in 30 minutes.
FAQ
Can I sell an online course with just Stripe?
Stripe can take the payment, but it doesn't deliver the course. You also need a members area that checks who paid, order emails, and access that closes on refunds. Funnelr adds those on your own site.
Do I need a course platform like Kajabi or Teachable?
No. A course platform bundles hosting, checkout, lessons and email for a monthly fee. You can run the same pieces on your own accounts: Stripe for payments, your site for lessons, your email account for the list.
How do students log in?
With the link on their order page, an emailed sign-in link, or a password if they choose to set one. The members area checks their purchase in Stripe each time.
Can I offer a payment plan with Stripe?
Yes. A payment plan is a subscription that ends itself after the last payment. In Funnelr it's one line in the config, and the course stays open for good once it's paid off.


