Skip to content

Ship Terms of Service before accepting real Pro payments #185

@schmug

Description

@schmug

Context

Privacy Policy is live at /legal/privacy (#169, #172). Terms of Service was deliberately left out per #169 ("remove TOS placeholder pending LLC"). With Stripe Checkout, Portal, webhooks, promo codes, and the /pricing page all live, the only thing keeping us from charging real customers is TOS.

This is the single biggest gating item for monetization launch.

Scope

  • Decide entity posture:
    • Form an LLC and have TOS reflect the entity, or
    • Ship a sole-proprietor TOS in your real legal name (faster path, valid in most US states)
  • Draft /legal/terms covering at minimum:
    • Acceptable use (no scanning domains you don't own/control? — or explicitly allow third-party scans since DNS is public)
    • Service availability disclaimer (no SLA on the free tier; best-effort on Pro)
    • Subscription terms: $19/mo, monthly billing, cancel-anytime via Stripe Portal, 30-day refund window (mirrors /pricing FAQ)
    • Liability cap (subscription fees paid in last 12 months)
    • Governing law / venue
    • Account termination conditions
    • Data handling pointer to /legal/privacy
  • Add renderTermsPage() in src/views/legal.ts next to renderPrivacyPage()
  • Wire route in src/index.ts and add to sitemap
  • Add footer link next to "Privacy" in src/views/html.ts:176 and :661
  • Surface in /pricing FAQ ("By subscribing you agree to the Terms")
  • Add a TOS-acceptance checkbox or "by clicking Subscribe you agree" notice on the Subscribe button at /dashboard/billing/subscribe

Out of scope

  • DPA / GDPR addendum (defer until first EU paying customer asks)
  • AUP as a separate document (fold into TOS for v1)

Why this matters

Without a TOS we have no contract with paying customers, no liability cap, no defined venue, and no enforceable subscription terms. Stripe disputes and chargebacks become hard to defend.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions