Payment Architecture

Revenue model, billing infrastructure, and compliance strategy for Groundwork's SaaS stage and beyond.

ProductGroundwork
StageSaaS MVP — No marketplace payments
Primary ProcessorStripe Billing
Version1.0 Draft
Critical Scope Boundary Groundwork at MVP is a software subscription business. It does not process payments between homeowners and contractors. Renovation payments remain out-of-band (cash, check, homeowner's preferred method). This distinction is not a gap — it is a deliberate choice that keeps Groundwork off the money-transmission and marketplace-compliance path until the business is ready. Section 11 documents what changes when marketplace payments are eventually added.

1 Revenue Model Summary

Groundwork monetizes in two distinct layers. The primary revenue driver at launch is a contractor SaaS subscription — contractors pay monthly to access the platform's project management, contract scoring, and homeowner transparency tools. Homeowners are free or lightly monetized, keeping the consumer side of the network frictionless and growing.

Contractor SaaS Primary

Monthly/annual subscriptions for contractors. Tiered by seat count, feature access, and volume. Core revenue engine at launch.

Homeowner Freemium Secondary

Free base access for homeowners. Pro upgrade at $9.99/mo unlocks advanced tracking, multiple projects, and document storage.

Marketplace Fees Future

Payment processing between homeowners and contractors. Requires Stripe Connect and a significant compliance uplift. Not in MVP scope.

Revenue Model Principles

Revenue Projections (Illustrative)

Scenario Contractor Basic Seats Contractor Pro Seats Homeowner Pro Monthly Revenue ARR
Early Traction 50 10 200 ~$4,440 ~$53K
Growth 200 60 1,000 ~$18,870 ~$226K
Scale 500 250 5,000 ~$87,200 ~$1.05M

Projections assume no marketplace revenue. Mix shift to Pro tiers and annual billing materially improves margins at scale.

2 Payment Flow Diagram

The following diagram shows Groundwork's two-stage payment architecture. Stage A (SaaS only) is active at MVP. Stage B (marketplace) represents a future capability requiring substantial infrastructure changes.

Stage A — SaaS Subscription Flow (Current)

CONTRACTOR STRIPE GROUNDWORK Signup / Select Plan Stripe Checkout Card / Bank Payment Authorized Webhook invoice. paid event Provision Features Email Receipt Auto-Renew Monthly Retry / Dunning
Happy Path Summary Contractor selects plan → Stripe Checkout collects payment → invoice.paid webhook fires → Groundwork provisions features → receipt sent. Renewal happens automatically. The contractor's card is never stored by Groundwork — only Stripe holds payment credentials.
Failure Path: Dunning If a renewal charge fails, Stripe retries on a configurable schedule (default: 3 attempts over 7 days). Groundwork listens to invoice.payment_failed and customer.subscription.deleted webhooks to downgrade access gracefully before cancellation.

Stage B — Marketplace Payment Flow (Future)

Not in MVP Scope Stage B requires Stripe Connect (Express or Custom accounts), money-transmission licensing review, KYC/AML for contractors, 1099-K reporting, and a materially different trust-and-safety posture. A conceptual flow is documented in Section 11. No implementation work should begin without a deliberate go/no-go decision.
FUTURE STATE — MARKETPLACE PAYMENTS Homeowner Pays Milestone Stripe Connect Escrow / Hold Groundwork Fee Deducted Contractor Payout Requires: Stripe Connect · KYC · 1099-K · Money Transmission Review · Dispute Handling

3 Pricing Tiers

Groundwork operates four subscription tiers across two personas. Pricing is designed to keep the homeowner acquisition funnel wide while capturing meaningful revenue from contractors who derive direct business value from the platform.

Homeowner
Free
$0
always free

  • 1 active project
  • View project timeline
  • Receive contractor updates
  • Basic document storage (500 MB)
  • Email notifications
  • Advanced analytics
  • Multiple projects
  • Priority support
Homeowner
Pro
$9.99/mo
or $99/yr (save 17%)

  • Up to 5 active projects
  • Full renovation timeline history
  • Document storage (10 GB)
  • Budget tracking & alerts
  • Change order history
  • Contractor performance reports
  • Priority email support
  • Contract scoring
Contractor
Pro
$149/mo
or $1,490/yr (save 17%)

  • Unlimited active projects
  • All Basic features
  • 25 contract scores/mo
  • Advanced analytics & exports
  • White-label homeowner reports
  • Unlimited team members
  • API access (read)
  • Dedicated onboarding call

Tier Design Rationale

Decision Rationale
Homeowner Free tier exists Homeowner adoption is the product's network effect. Every homeowner on the platform increases the value for contractors, who pay the bills. Friction here costs contractor revenue.
Contractor Basic at $49 Anchored below common trade software (ServiceTitan, Jobber at $49–$200+). Accessible to small operators and solo contractors who are the earliest adopters.
Contract scoring is gated High-value feature that demonstrates ROI directly. Quantity limit encourages upgrade without metered billing complexity.
Annual discount at 17% Two months free. Simple to communicate. Improves cash flow and reduces voluntary churn by extending commitment horizon.
No per-seat pricing at launch Simplifies invoicing and reduces friction. Per-seat pricing can be introduced at a Series A-scale product with more negotiated enterprise deals.

Upgrade Triggers

In-app prompts should fire at natural moments of friction against tier limits, not on a calendar schedule:

4 Billing Lifecycle

Every subscription passes through a defined sequence of states. Groundwork must handle each transition gracefully — both in the Stripe configuration and in the application layer's access-control logic.

Primary Lifecycle

01
Signup
Account created, plan selected
02
Trial
14-day free (contractors)
03
First Charge
Trial ends, card charged
04
Active
Full feature access
05
Renewal
Monthly auto-charge

State Transitions

UP
Upgrade
Prorated immediately
DN
Downgrade
Effective next cycle
!!
Payment Failed
Dunning begins
~~
Past Due
Grace period (7d)
XX
Canceled
Access ends at period

Lifecycle Detail by Event

Event Stripe Trigger App Behavior User Communication
Trial starts customer.subscription.created Provision trial-tier features; set trial_end date in user record Welcome email with trial end date and feature highlights
Trial ending customer.subscription.trial_will_end (3 days prior) No access change yet Reminder email: "Your trial ends in 3 days — card on file will be charged $49"
First charge invoice.paid Confirm paid tier; update subscription_status = active Receipt email with invoice link
Renewal charge invoice.paid Extend current_period_end; no access change Optional monthly receipt (configurable per user)
Upgrade customer.subscription.updated Provision new tier features immediately; Stripe handles proration "You've upgraded to Pro — here's what's new" email
Downgrade customer.subscription.updated + schedule Schedule feature restriction for current_period_end; do not restrict immediately "Your plan changes at end of billing period" confirmation
Payment failed invoice.payment_failed Log failure; maintain access during grace period; trigger in-app banner "Payment failed — please update your card" email with update link
Dunning exhausted customer.subscription.deleted Downgrade to free tier; preserve data for 90 days "Your subscription has been canceled" email with reactivation CTA
Cancel (user-initiated) customer.subscription.deleted at period end Set cancel_at_period_end = true; maintain access until current_period_end Cancellation confirmation + "You can reactivate anytime before [date]" message
Reactivation customer.subscription.created Restore previous tier; link to historical project data Welcome back email
Data Retention on Cancellation Projects, documents, and change orders are retained for 90 days after a subscription lapses. After 90 days, data is archived to cold storage (not deleted) and requires a support request to recover. This policy prevents data loss while discouraging "data hostage" concerns that can block conversions.

5 Checkout Experience

The checkout flow is the highest-stakes UX moment in the subscription lifecycle. Every unnecessary step or unclear message at this point costs a conversion. The design should be frictionless for the contractor persona — typically a skilled tradesperson or small business owner, not a tech-native SaaS buyer.

Checkout Flow Steps

1

Plan Selection

User selects a tier from the pricing page or an in-app upgrade prompt. Plan is pre-selected if arriving from a feature gate. Annual vs. monthly toggle is visible with savings callout. No account creation required to view pricing.

2

Account Creation or Login

New users create an account (email + password or Google OAuth). Existing users authenticate. Account creation and plan selection are combined into a single form — avoid making the user click through an account wall before they see the payment screen.

3

Payment Details (Stripe Checkout or Elements)

Card number, expiry, CVC, and billing address collected via Stripe's hosted UI. Groundwork never sees raw card data. For contractors, a company name field is captured for invoice display. Stripe handles 3DS authentication where required by the card issuer. Show the trial period clearly: "Your card won't be charged until [date]."

4

Order Summary & Confirmation

Display: plan name, billing amount, trial end date (if applicable), and the cancellation policy in plain language. A single "Start Free Trial" or "Subscribe" CTA. No hidden fees. Tax (if applicable via Stripe Tax) is shown as a line item, not revealed on a confirmation screen.

5

Post-Checkout Onboarding

On successful subscription creation, redirect to an onboarding flow — not a generic dashboard. For contractors: prompt to create the first project and invite a homeowner. This converts the checkout moment directly into activation, improving trial-to-paid conversion. Receipt email sent in parallel via Stripe's receipt system.

Stripe Checkout vs. Stripe Elements

Approach Pros Cons Recommendation
Stripe Checkout (hosted) Zero PCI surface, rapid implementation, Stripe-maintained UX, built-in tax collection Less design control, external redirect (or modal), Stripe branding visible Use at MVP
Stripe Elements (embedded) Full design control, no redirect, native feel, custom styling More integration work, requires careful PCI-SAQ-A compliance handling Migrate post-PMF
Recommendation Launch with Stripe Checkout (hosted) for speed and PCI simplicity. Accept the minor UX tradeoff. Migrate to Stripe Elements when conversion rate optimization becomes a priority after product-market fit is established.

Payment Methods to Support

6 Refund Policy

A clear, fair refund policy reduces support burden and customer friction. For a SaaS product at early stage, erring toward generosity protects reputation and reduces chargebacks — chargebacks are significantly more expensive in time and Stripe standing than a refund.

Policy Summary

Scenario Policy Process
Cancel during trial No charge, no refund needed Automated — subscription deleted before trial_end fires
Cancel within 7 days of first charge Full refund, no questions asked Support request or self-serve via billing portal → Stripe refund API
Cancel mid-billing-period (after 7 days) No refund for current period; access continues until period end No action required — Stripe handles access via cancel_at_period_end
Annual plan, canceled within 30 days Prorated refund for unused months Support request → manual Stripe refund for remaining months
Annual plan, canceled after 30 days No refund; access continues until annual period end No action required
Duplicate charge Full refund of duplicate Support request → Stripe refund API within 24 hours
Unauthorized charge / fraud Full refund + account investigation Immediate refund to prevent chargeback; flag account for review
Service outage (> 4 hours) Prorated service credit at discretion Manual credit via Stripe balance adjustment; no automatic refund

Chargeback Prevention

7 Tax & Compliance

Good News: SaaS Stage Is Low-Complexity Because Groundwork is selling software subscriptions only — not processing renovation payments between parties — it sits firmly in the "standard SaaS" compliance category. There is no money-transmission licensing, no escrow obligation, and no marketplace operator liability. Stripe handles PCI compliance at the card-data layer. Groundwork's compliance surface is primarily sales tax on digital goods.

Sales Tax on SaaS (US)

SaaS is taxable in an increasing number of US states. The rules are inconsistent: some states treat SaaS as a taxable service, others as non-taxable software, and a few distinguish by use case. Managing this manually is impractical beyond a handful of states.

&#$
Stripe Tax
Recommended approach for automated sales tax collection and remittance

Stripe Tax integrates directly with Stripe Billing and handles:

  • Automatic nexus detection based on customer billing address
  • Correct tax rate lookup for SaaS in each jurisdiction
  • Tax amount displayed at checkout as a line item
  • Tax remittance reporting per state (Groundwork still files — Stripe provides the data)
  • Exemption certificate management (for B2B customers with resale certificates)

Cost: 0.5% of taxable transactions processed through Stripe Tax (capped per transaction). Minimal at early revenue levels; worth monitoring at scale.

Compliance Posture by Area

PCI DSS

Stripe is the card data environment. Groundwork operates under SAQ-A (no cardholder data stored or transmitted). Annual self-assessment questionnaire only.

Money Transmission

No money-transmission license required at SaaS stage. Groundwork collects subscription fees for its own services — this is ordinary commerce, not fund transfer between third parties.

KYC / AML

Not required for SaaS subscriptions. Stripe handles identity verification for its own compliance purposes. Groundwork has no separate obligation.

Sales Tax (US)

Medium complexity. Use Stripe Tax. Register in states where economic nexus thresholds are crossed ($100K revenue or 200 transactions). File returns quarterly or annually per state.

VAT / GST (International)

Not a day-one concern. If Groundwork expands to EU/UK/AU markets, VAT registration requirements apply. Stripe Tax handles VAT calculation in supported jurisdictions.

1099 Reporting

Not required at SaaS stage. 1099-K reporting obligations arise only when Groundwork processes payments on behalf of third parties (i.e., marketplace stage).

GDPR / Privacy (Payment Data)

8 Financial Reporting

Groundwork needs a small set of key SaaS metrics tracked from day one. These metrics drive fundraising conversations, pricing decisions, and product prioritization. They should be computed from Stripe data (supplemented by app-level cohort data) and surfaced in an internal dashboard.

Core SaaS Metrics

MRR
$—
Monthly Recurring Revenue. Sum of all active subscription values normalized to monthly. The primary health metric.
ARR
MRR × 12
Annualized view of MRR. Used in investor conversations and annual planning.
Net MRR Churn
%
MRR lost to cancellations and downgrades, offset by expansion MRR. Target: <2% monthly for SaaS.
Gross Logo Churn
%
Percentage of paying customers who cancel in a given month. Distinct from MRR churn. Target: <3% monthly.
ARPU
MRR / Cust.
Average Revenue Per User. Monitor for tier mix shifts and expansion opportunity.
LTV
ARPU / Churn
Lifetime Value. Crude estimate at early stage; refine as churn data matures.

MRR Movement Categories

Category Definition Stripe Data Source
New MRR Revenue from brand-new subscribers this month customer.subscription.created events where customer is new
Expansion MRR Revenue from existing customers upgrading to higher tier customer.subscription.updated with increased amount
Contraction MRR Revenue lost from existing customers downgrading customer.subscription.updated with decreased amount
Churned MRR Revenue lost from cancellations customer.subscription.deleted
Reactivation MRR Revenue from previously churned customers returning customer.subscription.created where customer previously had a deleted subscription

Reporting Infrastructure

At MVP, reporting is sourced from Stripe's built-in dashboard and periodic exports. As the business scales, a dedicated data pipeline becomes necessary:

Revenue Recognition Note Monthly subscriptions are recognized in the month of service. Annual subscriptions generate deferred revenue that is recognized ratably over 12 months. This distinction matters for GAAP reporting if Groundwork ever raises institutional capital. Stripe Revenue Recognition is a product that automates this, but it is only necessary once deferred revenue becomes material (roughly at $500K ARR or when investors require audited financials).

9 Implementation Approach

The following describes the capabilities required to run Groundwork's billing system, followed by a recommendation on which vendor delivers them. Framing this way ensures the capability requirements remain stable even if the vendor changes.

Required Billing Capabilities

Subscription Management

Create, update, pause, and cancel subscriptions. Support multiple plans and annual/monthly cadences. Handle mid-cycle upgrades with proration.

Hosted Payment Collection

Collect card details in a PCI-compliant hosted UI. Support 3DS authentication. No card data stored on Groundwork infrastructure.

Automated Invoicing

Generate invoices on each billing cycle. Email receipts automatically. Support invoice customization (company name, address, tax line items).

Dunning & Retry Logic

Configurable retry schedule on failed payments. Email notifications at each failure. Final state triggers subscription cancellation webhook.

Webhook Event Stream

Reliable event delivery for subscription state changes. Application logic must be driven by these events, not by polling.

Customer Portal

Self-serve billing portal where customers can update card, download invoices, switch plans, and cancel. Reduces support load significantly.

Tax Calculation

Automatic jurisdiction-based tax rate lookup and collection. Reporting exports for filing purposes.

Vendor Comparison

Capability Stripe Billing Paddle Lemon Squeezy
Subscription management Strong Strong Good
Hosted checkout Strong Strong Strong
Tax / VAT handling Add-on ($) Built-in (MoR) Built-in (MoR)
Global payment methods Excellent Strong Good
Customer billing portal Built-in Built-in Built-in
Webhook reliability Excellent Good Good
Marketplace / Connect Yes (Connect) Limited No
US contractor payouts (future) Yes Partial No
Documentation quality Best-in-class Strong Adequate
Transaction fees 2.9% + 30¢ 5% + 50¢ (MoR) 5% + 50¢ (MoR)
Stripe Tax add-on +0.5% taxable txn Included Included
Recommendation: Stripe Billing Stripe is the recommended primary processor. Rationale: (1) The future marketplace capability requires Stripe Connect, which is Stripe-native and would require a painful migration away from Paddle or Lemon Squeezy. (2) Stripe's documentation and developer ecosystem are mature — engineering velocity is higher. (3) At US-focused launch volumes, Stripe's pricing advantage over Merchant of Record (MoR) alternatives is meaningful. Stripe Tax closes the tax gap at modest incremental cost.
When Paddle or Lemon Squeezy Make Sense If Groundwork pursues aggressive international expansion before building marketplace functionality, a Merchant of Record setup (Paddle or LS) eliminates the operational burden of VAT registration in 50+ countries. Lemon Squeezy is simpler and well-suited for product-led growth at small scale. Paddle has a stronger enterprise feature set. Neither is compatible with a future marketplace payout model without a full re-platform.

Integration Architecture (Stripe)

// Groundwork billing data model (simplified)

User
  stripe_customer_id   // Stripe Customer object
  subscription_status  // active | trialing | past_due | canceled
  plan_id              // contractor_basic | contractor_pro | homeowner_pro
  current_period_end   // Unix timestamp from Stripe
  trial_end            // Unix timestamp, null if no trial
  cancel_at_period_end // boolean

// Webhook handler pattern
POST /webhooks/stripe
  verify signature (Stripe-Signature header)
  route by event.type:
    "invoice.paid"             → provision_or_renew_access(customer_id)
    "invoice.payment_failed"   → flag_payment_issue(customer_id)
    "customer.subscription.deleted" → downgrade_to_free(customer_id)
    "customer.subscription.updated" → sync_plan(customer_id, new_plan)
    "customer.subscription.trial_will_end" → send_trial_reminder(customer_id)
Idempotency is Non-Negotiable Stripe may deliver the same webhook event more than once. Every handler must be idempotent — processing the same event twice must produce the same result as processing it once. Store processed event IDs and skip duplicates. This prevents double-provisioning, double-sending receipts, and double-revoking access.

10 Pricing Page Specifications

The pricing page serves two audiences simultaneously: homeowners evaluating whether to invite their contractor, and contractors evaluating whether to subscribe. The page design must address both without confusing either.

Page Structure

1

Hero / Value Proposition

One-sentence pitch tailored to the current viewer's likely persona (default to contractor). Social proof element: "Trusted by X contractors across Y cities." No pricing numbers in the hero — drive scroll.

2

Persona Toggle

A segmented control: "I'm a Contractor" | "I'm a Homeowner." Toggling switches the tier cards displayed below. Contractors see Basic / Pro / Enterprise. Homeowners see Free / Pro. Reduces cognitive load by showing each persona only what is relevant to them.

3

Billing Cadence Toggle

Monthly | Annual, with "Save 17%" badge on Annual. Default to Monthly to show the lower number, not the annual commitment, for psychological accessibility. Annual should be selectable before proceeding to checkout.

4

Tier Cards

3 cards for contractors (Basic, Pro, Enterprise/Custom), 2 for homeowners (Free, Pro). Each card: tier name, price, primary value statement (one sentence), feature list (5–8 items), and a single CTA button. Most popular plan is visually elevated. Feature list uses checkmarks for included, dash or muted text for excluded.

5

Feature Comparison Table

A detailed, expandable table comparing all features across tiers. This is for decision-makers doing due diligence, not the primary conversion path. Placed below the cards so it does not slow down confident buyers.

6

FAQ Section

Target 6–8 questions. Must include: "Can I cancel anytime?", "What happens after my free trial?", "Do homeowners pay anything?", "What payment methods do you accept?", "Is my billing information secure?", "Can I switch plans later?"

CTA Copy Guidelines

Tier Primary CTA Secondary / Subtext
Homeowner Free "Get Started Free" "No credit card required"
Homeowner Pro "Start Free Trial" "14 days free, then $9.99/mo"
Contractor Basic "Start Free Trial" "14 days free, then $49/mo — cancel anytime"
Contractor Pro "Start Free Trial" "14 days free, then $149/mo — cancel anytime"
Contractor Enterprise "Talk to Sales" "Custom pricing for teams of 10+"

Trust Signals

11 Future: Marketplace Payment Processing

This Section Is Forward-Looking Nothing in this section is in scope for MVP. It is documented here so that future architectural decisions are made with awareness of what changes when Groundwork begins processing renovation payments between homeowners and contractors.

What Changes and Why It Matters

The SaaS model described in this document has Groundwork as a principal — it sells a service, collects subscription fees, and keeps the money. When Groundwork begins holding and disbursing renovation funds between homeowners and contractors, it becomes a payment intermediary. This is a fundamentally different legal and operational position.

Dimension SaaS Stage (Now) Marketplace Stage (Future)
Groundwork's role Principal — sells its own software Intermediary — facilitates payments between parties
Money transmission Not applicable Potentially applicable — requires legal review per state
PCI scope SAQ-A (minimal) Still SAQ-A if using Connect, but higher operational complexity
KYC / AML Not required Required for contractors receiving payouts above IRS thresholds
1099-K reporting Not required Required for contractors receiving $600+ via platform (post-2024 IRS rules)
Dispute handling Chargebacks between customer and Groundwork only Three-party disputes between homeowner, contractor, and Groundwork
Stripe product Stripe Billing Stripe Connect (Express or Custom) + Billing
Revenue model Fixed subscription fee Transaction fee (e.g., 1–3% of renovation value) on top of or instead of subscription
Fraud risk Standard card fraud risk Construction fraud risk (phantom invoices, scope disputes, advance-fee schemes)

Prerequisites Before Enabling Marketplace Payments

  1. Legal opinion on money transmission licensing. Some states (e.g., California, New York) have broad definitions of money transmission that may capture renovation payment facilitation. An attorney familiar with payments regulation must review before launch.
  2. Stripe Connect onboarding for contractors. Each contractor must complete Stripe's KYC process to receive payouts. This is a UX friction point — plan for drop-off and an onboarding funnel.
  3. Escrow / milestone release logic. The core product decision: who triggers release of funds? Homeowner approval, automatic on schedule, or Groundwork arbitration? Each choice has different liability implications.
  4. Dispute resolution process. What happens when a homeowner refuses to release a milestone payment? Groundwork needs a documented, fair process before the first payment is processed.
  5. 1099-K compliance tooling. Tax year end requires 1099-K issuance to contractors who received $600+. Stripe provides data; Groundwork must have a process to collect contractor tax IDs (SSN/EIN) and file.
  6. Insurance and liability review. Does Groundwork have any liability exposure if a renovation payment is processed and the work is not completed? Legal and product must align on the scope of Groundwork's role.

Stripe Connect Implementation Notes (When Ready)

Stripe Connect Express is the recommended starting point for marketplace payouts. It provides:

The transition from Billing-only to Billing + Connect on Stripe does not require a processor migration — it is additive. This is a key advantage of selecting Stripe at the SaaS stage.

The Right Time to Start Building Marketplace Payments Not when it is technically possible — when there is demonstrated demand from homeowners who want to pay through the platform AND contractors who want to receive through it, AND the business has sufficient legal and operational capacity to run it safely. Processing a renovation payment and having a dispute on the first transaction, without a resolution process, is an existential risk at early stage.