Skip to content

chore: remove all Stripe billing code and database schema#1069

Merged
brendan-kellam merged 4 commits intomainfrom
bkellam/remove-stripe-billing
Apr 1, 2026
Merged

chore: remove all Stripe billing code and database schema#1069
brendan-kellam merged 4 commits intomainfrom
bkellam/remove-stripe-billing

Conversation

@brendan-kellam
Copy link
Copy Markdown
Contributor

@brendan-kellam brendan-kellam commented Apr 1, 2026

Summary

  • Remove the entire Stripe billing integration including actions, server utils, webhook handler, and UI components (billing page, upgrade page, trial indicator, upgrade guard)
  • Remove StripeSubscriptionStatus enum and stripeCustomerId, stripeSubscriptionStatus, stripeLastUpdatedAt fields from the Org model with a database migration
  • Remove stripe, @stripe/react-stripe-js, and @stripe/stripe-js dependencies and all related env vars, error codes, and entitlements

Test plan

  • Verify the app builds and starts without errors
  • Verify settings pages load correctly without the billing nav item
  • Verify member invite/remove flows work without seat count adjustments
  • Verify onboarding completes without billing/checkout step
  • Run the database migration against a test database

🤖 Generated with Claude Code

Summary by CodeRabbit

Release Notes

  • Removed
    • Billing settings page and subscription management features
    • Trial status indicator from navigation menu
    • Upgrade and checkout flows
    • Stripe-based payment processing integration

brendan-kellam and others added 2 commits April 1, 2026 13:14
Billing was an enterprise entitlement that is no longer needed. This removes
the Stripe integration, billing UI, subscription management, and related
database fields.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
@github-actions

This comment has been minimized.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 1, 2026

License Audit

⚠️ Status: PASS

Metric Count
Total packages 2106
Resolved (non-standard) 8
Unresolved 0
Strong copyleft 0
Weak copyleft 26

Weak Copyleft Packages (informational)

Package Version License
axe-core 4.10.3 MPL-2.0
@img/sharp-libvips-darwin-arm64 1.0.4 LGPL-3.0-or-later
@img/sharp-libvips-darwin-arm64 1.2.4 LGPL-3.0-or-later
@img/sharp-libvips-darwin-x64 1.0.4 LGPL-3.0-or-later
@img/sharp-libvips-darwin-x64 1.2.4 LGPL-3.0-or-later
@img/sharp-libvips-linux-arm 1.0.5 LGPL-3.0-or-later
@img/sharp-libvips-linux-arm 1.2.4 LGPL-3.0-or-later
@img/sharp-libvips-linux-arm64 1.0.4 LGPL-3.0-or-later
@img/sharp-libvips-linux-arm64 1.2.4 LGPL-3.0-or-later
@img/sharp-libvips-linux-ppc64 1.2.4 LGPL-3.0-or-later
@img/sharp-libvips-linux-riscv64 1.2.4 LGPL-3.0-or-later
@img/sharp-libvips-linux-s390x 1.0.4 LGPL-3.0-or-later
@img/sharp-libvips-linux-s390x 1.2.4 LGPL-3.0-or-later
@img/sharp-libvips-linux-x64 1.0.4 LGPL-3.0-or-later
@img/sharp-libvips-linux-x64 1.2.4 LGPL-3.0-or-later
@img/sharp-libvips-linuxmusl-arm64 1.0.4 LGPL-3.0-or-later
@img/sharp-libvips-linuxmusl-arm64 1.2.4 LGPL-3.0-or-later
@img/sharp-libvips-linuxmusl-x64 1.0.4 LGPL-3.0-or-later
@img/sharp-libvips-linuxmusl-x64 1.2.4 LGPL-3.0-or-later
@img/sharp-wasm32 0.33.5 Apache-2.0 AND LGPL-3.0-or-later
@img/sharp-wasm32 0.34.5 Apache-2.0 AND LGPL-3.0-or-later AND MIT
@img/sharp-win32-arm64 0.34.5 Apache-2.0 AND LGPL-3.0-or-later AND MIT
@img/sharp-win32-ia32 0.33.5 Apache-2.0 AND LGPL-3.0-or-later
@img/sharp-win32-ia32 0.34.5 Apache-2.0 AND LGPL-3.0-or-later AND MIT
@img/sharp-win32-x64 0.33.5 Apache-2.0 AND LGPL-3.0-or-later
@img/sharp-win32-x64 0.34.5 Apache-2.0 AND LGPL-3.0-or-later AND MIT
Resolved Packages (8)
Package Version Original Resolved Source
@react-grab/cli 0.1.23 UNKNOWN MIT GitHub repository (github.com/aidenybai/react-grab) — LICENSE file confirms MIT
@react-grab/mcp 0.1.23 UNKNOWN MIT GitHub repository (github.com/aidenybai/react-grab) — LICENSE file confirms MIT
codemirror-lang-elixir 4.0.0 UNKNOWN Apache-2.0 GitHub repository (github.com/livebook-dev/codemirror-lang-elixir) — package.json license field and LICENSE file confirm Apache-2.0
lezer-elixir 1.1.2 UNKNOWN Apache-2.0 GitHub repository (github.com/livebook-dev/lezer-elixir) — package.json license field and LICENSE file confirm Apache-2.0
map-stream 0.1.0 UNKNOWN MIT GitHub repository (github.com/dominictarr/map-stream) — GitHub license API identifies MIT
memorystream 0.3.1 UNKNOWN MIT npm registry metadata — licenses array contains {"type":"MIT"}
valid-url 1.0.9 UNKNOWN MIT GitHub LICENSE file (github.com/ogt/valid-url) — standard MIT license text confirmed
posthog-js 1.345.5 SEE LICENSE IN LICENSE Apache-2.0 GitHub LICENSE file (github.com/PostHog/posthog-js) — Apache License 2.0 text confirmed

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 1, 2026

Walkthrough

This pull request removes Stripe billing integration from the application, including environment variables, database schema columns, billing-related server actions, UI components, entitlements, and associated utilities across configuration, database, shared types, and web application code.

Changes

Cohort / File(s) Summary
Configuration and Environment
.env.development, packages/shared/src/env.server.ts, CHANGELOG.md
Removed Stripe environment variable placeholders and configuration schema entries; updated changelog with removal entry.
Database Schema
packages/db/prisma/schema.prisma, packages/db/prisma/migrations/20260401200619_remove_stripe_billing/migration.sql
Removed stripeCustomerId, stripeSubscriptionStatus, stripeLastUpdatedAt columns from Org table and dropped StripeSubscriptionStatus enum type.
Billing Features Module
packages/web/src/ee/features/billing/stripe.ts, packages/web/src/ee/features/billing/actions.ts, packages/web/src/ee/features/billing/serverUtils.ts, packages/web/src/ee/features/billing/components/*
Removed entire billing module including IS_BILLING_ENABLED and stripeClient exports, server actions for subscription management, seat adjustment utilities, and all billing UI components (checkout, upgrade cards, manage subscription button, billing email card).
Type Definitions and Constants
packages/shared/src/entitlements.ts, packages/web/src/lib/errorCodes.ts, packages/web/src/lib/serviceError.ts, packages/web/src/lib/constants.ts
Removed "billing" entitlement, Stripe-related error codes (STRIPE_CHECKOUT_ERROR, STRIPE_CLIENT_NOT_INITIALIZED, etc.), corresponding ServiceError factories, and ENTERPRISE_FEATURES/TEAM_FEATURES constants; removed Checkout step from OnboardingSteps enum.
Settings and Navigation UI
packages/web/src/app/[domain]/settings/billing/page.tsx, packages/web/src/app/[domain]/settings/layout.tsx, packages/web/src/app/[domain]/settings/members/components/inviteMemberCard.tsx, packages/web/src/app/[domain]/settings/members/page.tsx, packages/web/src/app/[domain]/components/navigationMenu/index.tsx, packages/web/src/app/[domain]/components/navigationMenu/trialIndicator.tsx
Removed billing settings page, trial indicator component, billing nav item, and isBillingEnabled prop from invite card; simplified navigation menu and member invite logic.
Layout and Routing
packages/web/src/app/[domain]/layout.tsx, packages/web/src/app/[domain]/components/upgradeGuard.tsx, packages/web/src/app/[domain]/upgrade/page.tsx
Removed subscription-based gating from main layout, deleted UpgradeGuard component and upgrade page route.
Server Actions and API
packages/web/src/actions.ts, packages/web/src/features/userManagement/actions.ts, packages/web/src/lib/authUtils.ts, packages/web/src/app/api/(server)/stripe/route.ts
Simplified onboarding to remove billing checks and subscription status updates; removed billing seat increment/decrement logic from user management; deleted Stripe webhook handler API route.
Dependencies and Mocks
packages/web/package.json, packages/web/src/__mocks__/prisma.ts
Removed Stripe npm packages (@stripe/react-stripe-js, @stripe/stripe-js, stripe) and stripe:listen script; removed Stripe-related fields from MOCK_ORG.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

Possibly related PRs

  • PR #190: Adds Stripe billing integration (inverse of this PR, affecting same DB schema, env vars, and billing-related code paths)
  • PR #888: Modifies packages/shared/src/entitlements.ts to adjust entitlements list membership
  • PR #376: Touches onboarding flow by rewriting OnboardingSteps and related completion logic

Suggested labels

sourcebot-team

Suggested reviewers

  • msukkari
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely summarizes the main change: removing all Stripe billing code and database schema. It is specific, directly related to the changeset, and accurately reflects the primary objective of the PR.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch bkellam/remove-stripe-billing

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
packages/db/prisma/migrations/20260401200619_remove_stripe_billing/migration.sql (1)

4-15: Please verify these Stripe columns are empty before rollout.

This removes the only local org→Stripe mapping (stripeCustomerId) and the last known subscription state. If any Org rows are still populated, later cancellation/refund/reconciliation becomes manual. Please archive/export non-null rows first, or explicitly gate the migration on these columns being empty.

Read-only preflight query
SELECT COUNT(*) AS orgs_with_stripe_data
FROM "Org"
WHERE "stripeCustomerId" IS NOT NULL
   OR "stripeSubscriptionStatus" IS NOT NULL
   OR "stripeLastUpdatedAt" IS NOT NULL;
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@packages/db/prisma/migrations/20260401200619_remove_stripe_billing/migration.sql`
around lines 4 - 15, The migration drops Org columns stripeCustomerId,
stripeLastUpdatedAt, stripeSubscriptionStatus and must be gated by a preflight
that verifies those columns are empty; add a pre-migration check (using the
provided SELECT COUNT(*) query against the Org table) and fail the migration if
the count > 0, or add an explicit data-export/archive step to persist any
non-null rows before running ALTER TABLE/ DROP TYPE; reference the Org table and
the three column names (stripeCustomerId, stripeSubscriptionStatus,
stripeLastUpdatedAt) so the migration script or deployment pipeline enforces the
check or performs the export and only proceeds when verified.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In
`@packages/db/prisma/migrations/20260401200619_remove_stripe_billing/migration.sql`:
- Around line 4-15: The migration drops Org columns stripeCustomerId,
stripeLastUpdatedAt, stripeSubscriptionStatus and must be gated by a preflight
that verifies those columns are empty; add a pre-migration check (using the
provided SELECT COUNT(*) query against the Org table) and fail the migration if
the count > 0, or add an explicit data-export/archive step to persist any
non-null rows before running ALTER TABLE/ DROP TYPE; reference the Org table and
the three column names (stripeCustomerId, stripeSubscriptionStatus,
stripeLastUpdatedAt) so the migration script or deployment pipeline enforces the
check or performs the export and only proceeds when verified.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ce2b2266-a82d-4d3c-b6f9-c4bced4dd257

📥 Commits

Reviewing files that changed from the base of the PR and between 17f1b7f and da00676.

📒 Files selected for processing (33)
  • .env.development
  • CHANGELOG.md
  • packages/db/prisma/migrations/20260401200619_remove_stripe_billing/migration.sql
  • packages/db/prisma/schema.prisma
  • packages/shared/src/entitlements.ts
  • packages/shared/src/env.server.ts
  • packages/web/package.json
  • packages/web/src/__mocks__/prisma.ts
  • packages/web/src/actions.ts
  • packages/web/src/app/[domain]/components/navigationMenu/index.tsx
  • packages/web/src/app/[domain]/components/navigationMenu/trialIndicator.tsx
  • packages/web/src/app/[domain]/components/upgradeGuard.tsx
  • packages/web/src/app/[domain]/layout.tsx
  • packages/web/src/app/[domain]/settings/billing/page.tsx
  • packages/web/src/app/[domain]/settings/layout.tsx
  • packages/web/src/app/[domain]/settings/members/components/inviteMemberCard.tsx
  • packages/web/src/app/[domain]/settings/members/page.tsx
  • packages/web/src/app/[domain]/upgrade/page.tsx
  • packages/web/src/app/api/(server)/stripe/route.ts
  • packages/web/src/ee/features/billing/actions.ts
  • packages/web/src/ee/features/billing/components/changeBillingEmailCard.tsx
  • packages/web/src/ee/features/billing/components/checkout.tsx
  • packages/web/src/ee/features/billing/components/enterpriseUpgradeCard.tsx
  • packages/web/src/ee/features/billing/components/manageSubscriptionButton.tsx
  • packages/web/src/ee/features/billing/components/teamUpgradeCard.tsx
  • packages/web/src/ee/features/billing/components/upgradeCard.tsx
  • packages/web/src/ee/features/billing/serverUtils.ts
  • packages/web/src/ee/features/billing/stripe.ts
  • packages/web/src/features/userManagement/actions.ts
  • packages/web/src/lib/authUtils.ts
  • packages/web/src/lib/constants.ts
  • packages/web/src/lib/errorCodes.ts
  • packages/web/src/lib/serviceError.ts
💤 Files with no reviewable changes (29)
  • packages/web/src/app/[domain]/settings/layout.tsx
  • packages/web/src/app/[domain]/settings/members/page.tsx
  • packages/web/src/app/[domain]/components/upgradeGuard.tsx
  • packages/web/src/lib/serviceError.ts
  • packages/web/src/app/[domain]/components/navigationMenu/index.tsx
  • packages/web/src/lib/authUtils.ts
  • packages/shared/src/entitlements.ts
  • .env.development
  • packages/web/src/mocks/prisma.ts
  • packages/web/src/ee/features/billing/components/enterpriseUpgradeCard.tsx
  • packages/web/package.json
  • packages/web/src/features/userManagement/actions.ts
  • packages/web/src/ee/features/billing/stripe.ts
  • packages/web/src/lib/constants.ts
  • packages/web/src/app/[domain]/layout.tsx
  • packages/db/prisma/schema.prisma
  • packages/web/src/ee/features/billing/components/manageSubscriptionButton.tsx
  • packages/web/src/lib/errorCodes.ts
  • packages/web/src/ee/features/billing/components/teamUpgradeCard.tsx
  • packages/web/src/ee/features/billing/components/upgradeCard.tsx
  • packages/web/src/ee/features/billing/components/checkout.tsx
  • packages/shared/src/env.server.ts
  • packages/web/src/app/[domain]/upgrade/page.tsx
  • packages/web/src/app/[domain]/components/navigationMenu/trialIndicator.tsx
  • packages/web/src/ee/features/billing/components/changeBillingEmailCard.tsx
  • packages/web/src/app/api/(server)/stripe/route.ts
  • packages/web/src/app/[domain]/settings/billing/page.tsx
  • packages/web/src/ee/features/billing/serverUtils.ts
  • packages/web/src/ee/features/billing/actions.ts

@brendan-kellam brendan-kellam merged commit c875d7b into main Apr 1, 2026
10 checks passed
@brendan-kellam brendan-kellam deleted the bkellam/remove-stripe-billing branch April 1, 2026 20:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant