Skip to content

Require cards before Cloud trials with separate OpenVPM billing - #344

Merged
evangauer merged 5 commits into
mainfrom
codex/card-required-trials
Oct 1, 2026
Merged

evangauer merged 5 commits into
mainfrom
codex/card-required-trials

Conversation

@evangauer

@evangauer evangauer commented Oct 1, 2026 •

Copy link
Copy Markdown
Owner

Hosted signup now collects payment details through Stripe Checkout before starting a 14-day free trial, with no subscription charge today and clear automatic billing and cancellation terms.

Hosted deployments can configure a separate subscription account for new clinics. Persist billing ownership and route retries, portals, quantity sync, usage meters and signed subscription events to that account; existing subscriptions retain their original account. Webhook updates are scoped to account ownership. Self-hosting remains free and fully unlocked with hosted billing disabled, and shared demos remain ungated.

Pending-trial signup, verification email, login and Plan & Billing explain when the trial starts and how to resume checkout. Migration 0106 adds nullable billing ownership while preserving existing rows. The documented environment variables are optional placeholders, and the read-only preflight checks account identity, prices, usage meters, cancellation portal and dedicated webhook.

Validation:

  • PR and merged-main CI pass build/type-check/tests, production dependency audit, migration integrity and RLS isolation; PR CodeQL passes.
  • Open-source release verifier passes (1,493 tracked files). Direct credential scans find no setup-session credentials or live Stripe secret keys; private test artifacts are excluded. The merged Git tree matches the reviewed candidate.
  • Disposable local database with full migrations/RLS plus real Stripe test mode: registration grants no trial before card collection; canceled Checkout and verified-email login lead to billing; retry saves a fake test card and genuine signed events activate exactly 14 days; the invoice is $0; correct licensed and usage prices attach; portal cancellation is scheduled at trial end.
  • Invalid signatures are rejected, event replay is idempotent, and an event for the new account leaves a legacy clinic unchanged. Payment-method conversion is recorded without a positive-payment conversion.
  • Matching marketing disclosures: https://github.com/evangauer/openvpm-www/pull/30 (checks pass).

Deployment requires applying migration 0106 before this app revision and configuring the full account-specific environment group. Preserve the original account credentials for existing subscriptions and clinic client payments. Automatic tax requires verified account-specific registrations. Rollback after adoption must retain persisted account routing and the corresponding credentials.

@vercel

vercel Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

3 Skipped Deployments
Project Deployment Actions Updated
openvpm Ignored Ignored Preview Oct 1, 2026 6:25pm UTC
openvpm-app Ignored Ignored Preview Oct 1, 2026 6:25pm UTC
openvpm-docs Ignored Ignored Preview Oct 1, 2026 6:25pm UTC

Request Review

@evangauer
evangauer marked this pull request as ready for review October 1, 2026 19:32
@evangauer
evangauer merged commit b3e7617 into main Oct 1, 2026
10 checks passed
@evangauer
evangauer deleted the codex/card-required-trials branch October 1, 2026 19:32
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