Stripe Setup — Subscription Billing Without the Headache
Stripe is the payment infrastructure. It's not optional for a subscription agency — it's the single tool that lets you forget about billing entirely once it's set up.
30 minutes to set up, then you never think about it again.
Why Stripe (vs. PayPal, Square, etc.)
- Subscription billing built in — no plugins, no integrations, just Products + Prices
- Self-serve customer portal — clients can update cards, see invoices, cancel without calling you
- No monthly fees — pay only when you collect (2.9% + $0.30 per transaction)
- Best documentation in the industry — every error has a clear fix
- Works in 47+ countries — if you go international, you're covered
- Bank transfers (ACH) at 0.8% — for clients who'd rather not use a card
PayPal: clunky, holds funds. Square: better for in-person. Patreon-style tools: too consumer-focused. Stripe is the standard.
Day 1 setup (30 minutes total)
Step 1: Create your account
- Go to stripe.com, sign up
- Use your real legal business name + EIN (not personal)
- Bank account in the LLC's name (you'll need this from doc 15)
- Verify your business — usually takes 1–2 days for first payout to clear
Step 2: Create your Products
In Stripe Dashboard → Products → + Add product:
Product 1: Website Subscription — Starter
- Pricing: Recurring → $97 USD / monthly
- Price ID: price_starter_97 (will be auto-generated, save it)
Product 2: Website Subscription — Growth
- Pricing: Recurring → $197 USD / monthly
- Price ID: price_growth_197
Product 3: Website Subscription — Pro
- Pricing: Recurring → $397 USD / monthly
- Price ID: price_pro_397
Step 3: Create one-time products (for add-ons)
Logo refresh: $400 one-time
Pro photography day (coordination): $200 one-time
Booking system add-on: $500 one-time + $25/mo subscription
These get billed separately when needed.
Step 4: Configure your tax handling
Stripe Tax → Enable. It auto-calculates and collects sales tax based on your jurisdiction and the customer's location.
For services, sales tax rules vary by state. Stripe handles the complexity. Turn it on unless your accountant tells you otherwise.
Step 5: Customize the Customer Portal
Settings → Billing → Customer Portal:
- ✅ Allow customers to update payment method
- ✅ Allow customers to update billing address
- ✅ Allow customers to cancel subscriptions (with confirmation)
- ✅ Show invoice history
- 📧 Add your support email
When customers cancel through the portal, you get an email notification immediately. Always reach out personally before they finalize.
Step 6: Configure email templates
Settings → Emails:
- ✅ Customer emails for successful payments → ON
- ✅ Customer emails for failed payments → ON
- ✅ Customer emails for upcoming renewals → 3 days before
- Customize the "From" name to "[YourAgency]" (not "Stripe")
- Add your logo
These emails do a lot of customer service for you.
Day-of-sale workflow
When a client signs the contract:
Option A: Send a payment link (easiest)
- Stripe Dashboard → Payment Links → Create
- Select the right product (Starter/Growth/Pro)
- ✅ Allow promotion codes
- ✅ Collect billing address
- ✅ Allow ACH (US clients only)
- Copy the link, send via email
The link looks like buy.stripe.com/abc123. Customer pays, subscription auto-creates, you get a webhook notification.
Option B: Create the customer manually first (more control)
- Customers → + Add Customer
- Fill in name, email, address (helps with tax + invoicing)
- → Create subscription → pick product → save
- Stripe sends them a "set up payment" link automatically
Option A is faster. Option B gives you more control over the customer record from the start. Both work.
Option C: Embed the checkout on your agency site (later)
Once you scale, embed Stripe Checkout directly so prospects can self-serve without you sending a link. Add this to a /checkout/[plan] page on the agency site. Out of scope for v1.
Handling failed payments
About 5–10% of card transactions fail every month. Reasons:
- Card expired
- Insufficient funds
- Bank flagged it
- Customer changed cards
Stripe handles this automatically with Smart Retries — it'll retry on a schedule that's optimized to succeed (e.g., right after payday, mid-week).
Your job: make sure you have the right reaction to a failure.
Recommended sequence
| Day | Action |
|---|---|
| 0 (failure) | Stripe sends customer a "payment failed" email automatically |
| 1 | Stripe retries automatically. If success, done. |
| 3 | Stripe retries again. If success, done. |
| 5 | If still failed, you get a webhook alert. Send a personal email: "Hey, looks like your card on file isn't working. Quick update needed: [link to portal]." |
| 10 | Personal call/text. Most are minor (new card just hasn't been added). |
| 15 | Final notice. After this, suspend the site per the contract. |
Suspending vs. canceling
- Suspend = the site goes to a "subscription paused" placeholder. Reversible immediately on payment.
- Cancel = full termination, contract section 3 kicks in.
Always suspend before canceling. You'd be amazed how many "lost" clients come back when their site goes dark for a day.
Suspending technically
You can host a static "site temporarily unavailable" page at the same domain. With Cloudflare, this is one DNS change. Restore is instant.
ACH (US clients) — the secret weapon
ACH bank transfers cost you 0.8% capped at $5 vs. 2.9% + $0.30 for cards.
For a $197/mo client over 24 months:
- Card fees: 24 × ($5.71 + $0.30) = $144.24
- ACH fees: 24 × $1.58 = $37.92
You save $100+/client if they pay by ACH instead of card. For Pro tier ($397/mo), the savings are 2×.
How to enable
- Stripe → Settings → Payment methods → Enable ACH Direct Debit
- Customers verify their bank via Plaid (instant) or microdeposits (3–5 days)
- After verification, charges process automatically
When to push for ACH
- Pro tier clients (savings are most meaningful)
- Anyone who's signed up for 12+ months (proven they're sticking)
- Multi-location clients
Don't push it on first-time clients. Card is faster to set up, gets you billing immediately.
Annual prepay (the nice cash-flow trick)
Offer your most committed clients an annual prepay option:
Pay 12 months upfront, get 1 month free.
For a Growth client at $197/mo:
- Monthly: $197 × 12 = $2,364
- Annual prepay: $197 × 11 = $2,167 (save $197)
Why offer this:
- Cash flow boost (you get $2,167 today vs $197/mo)
- Lower churn (committed for 12 months)
- Lower transaction fees (one charge vs 12)
Why not push it too hard:
- Clients who'd churn at month 4 will demand a refund
- Annual revenue can mask monthly issues
My rule: offer annual prepay only after they've been a monthly client for 60+ days. Don't lead with it.
Setting it up in Stripe
- Create a one-time product: "Website Subscription Annual — Growth Plan" priced at $2,167
- Manually cancel their monthly subscription when they pay the annual
- Set a calendar reminder for renewal at month 11.5 (don't auto-charge their card $2,167 without confirmation)
Refund policy
State it clearly in the contract (doc 5):
Month-to-month means month-to-month. No refunds on partial months. If you cancel on the 28th, you keep the site until the end of the billing period and pay for that month. Cancel within 24 hours of a charge, full refund.
Why this works:
- Doesn't punish you for late cancels
- Doesn't punish customer for buyer's remorse same day
- Removes the negotiation entirely
When customers ask for partial refunds (and they will):
- "Per the agreement, no partial refunds, but I can pause your subscription so the month doesn't auto-renew. Sound fair?"
That usually defuses 90% of refund pushback.
Disputes / chargebacks
If a customer disputes a Stripe charge with their bank, Stripe holds the disputed amount + a $15 dispute fee.
To win a dispute, you need:
- The signed contract (your e-sign tool stores this)
- Email correspondence showing they received the service
- Screenshots of the live site they paid for
- Their original payment authorization
Stripe walks you through submitting evidence. Most legitimate disputes you win if you have the docs.
Prevention beats response. If a customer is unhappy, talk to them BEFORE they dispute. Once disputed, Stripe and the bank are involved and it's adversarial.
Connecting Stripe to your bookkeeping
You don't need to manually log every payment.
- Wave / Xero / QuickBooks: all have native Stripe sync
- Mercury / Relay banks: Stripe payouts show up auto-categorized as "Stripe deposit"
- Spreadsheet: export a CSV from Stripe → Reports monthly
Stripe's "Reports" → "Balance" gives you a complete monthly summary in 30 seconds.
Stripe Atlas Documents (the bonus)
Stripe Atlas Documents (separate from Atlas, which is incorporation):
- E-sign your service agreements right inside Stripe
- Free as long as you're using Stripe payments
- Stores signed copies, lets you templatize agreements
Replaces DocuSign / PandaDoc for $0/mo if you're already on Stripe. Worth using.
When Stripe gets weird (and what to do)
Holds on first payouts: Stripe sometimes holds your first $5K-$10K for 7-14 days while they verify your business. Normal. Just be patient.
Account flagged as "high-risk": Rare for web design, but if it happens, Stripe will email asking for documents (LLC formation papers, business address proof). Send them, you'll be cleared in 1-3 days.
Sudden hold: If a major client disputes a large charge, Stripe might hold equivalent funds. Resolve the dispute, the hold lifts.
1099-K threshold: As of 2024, Stripe sends you a 1099-K for >$5,000 in payments. Make sure your CPA knows.
A 60-day Stripe checkup
Once you've been live for 60 days, audit:
- Failed payment rate — should be <5%/mo. Higher = update your "card on file" reminder cadence.
- Refund rate — should be <2% of revenue. Higher = client onboarding issue.
- Chargeback rate — should be <0.5%. Higher = Stripe will warn you.
- ACH adoption — % of clients on bank vs. card. Push higher over time.
- Subscription churn — see in Sigma reports or basic dashboard. Tracks who left.
Spend 15 min a month on this. Most issues you can fix before they compound.
The "I'm not technical" exception
If even reading the above made you anxious — all you really need on day 1 is:
- Sign up for Stripe
- Create one product: "Website Subscription — Growth — $197/mo recurring"
- Click "Create payment link"
- Send the link to your first client
- Stripe handles literally everything else automatically
The rest of this doc is optimization. Don't let perfect be the enemy of "I have a paying client."