An online yoga teacher came to us: she collected monthly fees through a LINE group plus manual bookkeeping, had 180 members, and burned two full days a month just reconciling "who paid, who to suspend" — and still made errors. What she needed was not a "website" but a membership/subscription system that bills automatically, activates and suspends automatically, and shows renewal rate. This piece covers exactly that: how to build a membership or subscription site/app, with real costs, common traps and a 90-day roadmap.
When It Fits vs When It Doesn't
- Fits: content or services with ongoing delivery — online courses, columns/communities, SaaS tools, gym memberships, monthly boxes, advisory subscriptions. A base of returning customers willing to pay over time.
- Fits: you need automated billing + access control, and member count is high enough that manual reconciliation errs (usually 50+).
- Doesn't fit: mostly one-off sales (single-product e-commerce, project work) — that is a cart or quote system; forcing subscriptions only adds complexity.
- Doesn't fit: very few members (10–20) with no near-term growth — manage manually with an off-the-shelf tool and save the money for when you truly need it.
Alternatives Matrix
| Option | Pros | Cons | Rough cost |
|---|---|---|---|
| Custom build (Laravel + ECPay recurring / Stripe Billing) | Fully custom, own your data, can grow into an app | High upfront build, needs maintenance | Build from ~US$7–20k; payments 2–3% + per-txn |
| WordPress + MemberPress | Fast to start, mature plugin ecosystem | Flexibility bounded by plugins; performance/security on you | ~US$180/yr + hosting |
| Shopify subscription apps | Commerce + subscription integrated, payments ready | Monthly fee + transaction cut; limited customization | From US$39/mo + app fee + cut |
| Generic platforms (Patreon, etc.) | Near-zero build, built-in audience | High cut (8–12%); brand and data not yours | 8–12% cut |
Full Process Breakdown
We work in five stages: (1) Discovery & option selection (3–5 days) — nail down member tiers, billing cycles, access rules; deliver a spec and wireframes (Figma, Notion). (2) Payments & subscription design (5–7 days) — integrate ECPay recurring or Stripe Billing, design the full state machine of "subscribe → activate → renew → retry on failure → suspend"; deliver a payments test report. (3) Members & access dev (2–3 weeks) — member data, tiers, content access control, admin dashboard; deliver a testable build. (4) Test & launch (1 week) — payment sandbox tests, failure-case drills; deliver a launch checklist. (5) Ops & data (ongoing) — track renewal and churn with monthly reports.
Real Cost Breakdown
The build fee is the visible part; the hidden part matters more. Payment cost: ECPay/Stripe take 2–3% + a fixed fee per transaction, which compounds on subscriptions. Failure handling: auto-retry and notifications for expired cards or insufficient funds — done poorly, you leak revenue. Content protection: video anti-hotlinking and download prevention (e.g., signed HLS URLs) is routinely underestimated. Support & refunds: subscription refunds and disputes are ongoing labor. Compliance: recurring billing must meet card-on-file rules and offer a clear cancellation path. These hidden costs shape long-term P&L more than the first build fee.
Implementation Reality vs Client Assumption
- Assumption: "Plug in a payment gateway and it auto-bills." Reality: the hard part is not the first charge but the edge cases — renewal failures, expired cards, mid-cycle upgrades/downgrades, refunds — which are half the build.
- Assumption: "Once the system is built, people keep subscribing." Reality: the real battle is reducing churn; without renewal data and a win-back flow, it is a leaking bucket.
- Assumption: "Off-the-shelf plugins are cheapest." Reality: plugins are cheap upfront, but custom rules, local payments or scale trigger a migration cost that bites back.
Common Traps and How to Avoid Them
- Trap: building only the "successful payment" path. Avoid: design retry, grace period and auto-suspend from day one.
- Trap: access-control holes where suspended members still see content. Avoid: verify access on the backend, never via front-end hiding.
- Trap: video hotlinked or downloaded. Avoid: use signed URLs, short-lived tokens or a video service (Mux, Cloudflare Stream).
- Trap: no cancellation path, violating payment rules and triggering complaints. Avoid: offer clear self-service cancel and keep an audit record.
- Trap: no metrics. Avoid: instrument renewal rate, churn and MRR from day one so decisions have a basis.
Success Metrics + 90-Day Roadmap
- Days 0–30: finish option selection, payment integration and the subscription state machine; pass sandbox tests. Metric: 100% payment tests pass.
- Days 31–60: launch members, access and admin; small-scale real billing pilot. Metric: first cohort renews successfully, zero leakage.
- Days 61–90: add a metrics dashboard and win-back flow (failure notices, expiry reminders). Metric: renewal rate measurable, churn starting to fall.
Decision Checklist
- ☐ My service is ongoing-delivery and suits subscriptions
- ☐ My member count errs under manual reconciliation (50+)
- ☐ I need auto activate/suspend, not manual control
- ☐ My protected content (video/files) needs anti-piracy
- ☐ I know how many tiers and each tier's access
- ☐ I can accept a 2–3% per-transaction payment cut
- ☐ I want visibility into renewal and churn
- ☐ I need self-service cancel and refunds
- ☐ I expect member count to grow (custom vs off-the-shelf)
- ☐ I may extend to an app later (affects architecture)
- ☐ I have an ops budget, not build-and-forget
- ☐ I have thought through renewal-failure handling
FAQ
ECPay recurring or Stripe — which should I pick?
Mostly your audience. For Taiwan-local with local cards and convenience-store support, ECPay recurring is smoother; for overseas or more flexible subscription logic (trials, usage-based), Stripe Billing is stronger. Both take roughly 2–3%; check each official pricing page before deciding.
Do I have to custom-build a membership system?
Not necessarily. Few members and simple rules — MemberPress or a platform's built-in is enough. When you need custom tiers, local payments or a path to an app, a custom Laravel build pays off long-term and keeps your data in your hands.
Renewal failures leak revenue — what do I do?
Build four defenses: auto-retry, grace period, expiry notice and self-service card update. How well this is done directly determines monthly leakage — one of the best things to invest in for subscriptions.
How long and how much to build?
A custom membership system covering payments, access and admin is usually 6–10 weeks and from ~US$7–20k, depending on tier complexity and content protection. Off-the-shelf launches faster but has less customization and migration flexibility.
Call to Action
If manual reconciliation, revenue leakage and suspension management are dragging you down, we can turn it into an automatic, auditable system that shows your renewal rate. ScriptWalker's membership-subscription service runs end to end from discovery to launch, priced by scale. Book a free consult:
- Email: [email protected]
- Phone: 0916-224-047
- LINE: @ufv9089p