For one creator, a membership site is Stripe Checkout, a webhook handler, a magic-link login and a rule that decides who sees which post. An agent can build that in a weekend and it removes the $49 and the 4.9% fee. The weekend goes on the unglamorous parts: webhooks that stay correct through retries, failed cards, refunds and plan changes, and the tax rules for your buyers. Memberful also keeps its own subscription schedule and charges the stored cards in your Stripe account, so moving existing members means recreating each subscription on your side.
Before you buildMemberful costs nothing until you go live, so you can compare it with your own build in test mode before deciding.
Build me a paid membership site for one creator to replace Memberful. Requirements: - Node.js 22 + TypeScript: Fastify with server-rendered pages (Eta). `npm start` serves http://localhost:4870; /admin sits behind one password from .env. - Stripe: Checkout in subscription mode to join and the Billing customer portal to change or cancel (STRIPE_SECRET_KEY and STRIPE_WEBHOOK_SECRET in .env). Plans live in plans.yaml: name, Stripe price ID, the content tier it unlocks. - Webhooks (verify the signature, dedupe by event ID): checkout.session.completed, customer.subscription.updated and .deleted, invoice.payment_failed. Status comes from the event, never from the browser redirect. - Storage: better-sqlite3 in ./data/members.db: members (email, stripe_customer_id, status, current_period_end), processed webhook events, and a sign-in token table. - Login: passwordless email link (nodemailer SMTP from .env), single use, 15 minutes, then an httpOnly session cookie. A member counts as active while Stripe says active or trialing. - Content: Markdown files in ./content/*.md with front matter `access: free|<tier>`. Free posts and excerpts are public; the full body of a gated post is rendered only for a member whose plan unlocks it. - Admin: members with plan and status, MRR from active subscriptions, CSV export, and a link to each Stripe customer. - No accounts beyond members, no telemetry, local-first: only Stripe and SMTP are called. - Out of scope: newsletters, private podcast feeds, Discord or WordPress sync, tax collection, group plans, gifts, coupons. - README: `stripe listen` for local webhooks, a go-live checklist, and a warning that taxes are not handled, so check whether you must collect VAT or sales tax before you sell.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Memberful.
Add a Memberful importer to the membership site in this folder. Requirements: - A command `npm run import-memberful -- members.csv` that reads a Memberful members export (email, plan, active, auto-renew, expiration date, Stripe customer ID). - Create each member in SQLite without charging anyone. List rows with no Stripe customer ID, with an expired subscription, or with a duplicate email, and skip them. - For active, auto-renewing rows, create a Stripe subscription on the matching price from plans.yaml for the existing customer, with the first charge set to the CSV's expiration date (trial_end), and print a table of what it would do. Nothing is created without --apply. - Print a warning that Memberful must be stopped from charging the same people before the first renewal date. - Update the README with the cut-over order.
Add private podcast feeds to the membership site in this folder. Requirements: - Episodes are Markdown files with an audio URL in front matter, in ./podcast/. - Each active member gets a feed URL with a random 32-byte token stored hashed; the feed returns RSS 2.0 with iTunes tags for the plans that unlock podcasts. - A feed stops working within a minute of the subscription ending; regenerating the token invalidates the old URL. - Log feed requests per token, without IP addresses, and show the count in admin. - Update the README.
Add coupons to the membership site in this folder. Requirements: - Admin page to create a Stripe coupon (percent or amount off, once or for N months, an optional expiry) and a promotion code from it. - The join page accepts a code in a field and passes it to Checkout; show the discounted price before payment. - List redemptions per code from webhook data in admin. - Update the README.
Memberful takes care of the part creators dread: a checkout that works in many countries, member pages, failed-payment retries and reminders, and tax collection, with connections to the tools they already use. The percentage fee is the price of not running any of it, and Memberful is owned by Patreon.
Estimate · A $5 VPS and free-tier email cover the running costs. Stripe Billing charges 0.7% of recurring volume on pay as you go, which is about $14 on $2,000 of monthly revenue; card fees are paid either way. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Standard | $49 | — | Unlimited members, checkout with Apple Pay, Google Pay and coupons, subscription types, member management and reports, podcasts, newsletters, courses and downloads, a website and newsletter builder, integrations such as WordPress, Mailchimp and Discord. |
| Enterprise | custom | — | Volume-based pricing, success management, custom migration and implementation support. |
Set-up and testing cost nothing; the fee starts when you go live and take payments.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: Private podcast feeds, member newsletters and a hosted member website out of the box, WordPress, Discord, Mailchimp and Zapier connections.
About $49 a month on the Standard plan, $588 a year (checked 2026-10-19).
Private podcast feeds, member newsletters and a hosted member website out of the box; WordPress, Discord, Mailchimp and Zapier connections; Tax calculation at checkout, group plans, gifts, referral and retention discounts; Retries and reminder emails for failed cards that already work; Memberful support when something breaks. If any of those matter to you, keep paying.
Yes: Ghost (open source), Paid Memberships Pro (open source), Stripe Billing with the customer portal (free).