Mauricio Siu 95b2712c26 fix(billing): pick a plan for the trial and warn before it expires
Trials were always Hobby, so a trial user who wanted Startup had to go
through Checkout, which created a second subscription on the same
customer. Seven days later Stripe cancelled the trial sub and the webhook,
matching only on customer id, zeroed serversQuantity and deactivated the
servers of someone who was already paying.

The trial now starts on the plan the user chooses and switching plans
mutates that same subscription, so a customer never holds two.

- startFreeTrial takes a tier; TRIAL_SERVER_LIMIT becomes TRIAL_SERVER_LIMITS
  (Hobby 1 server, Startup 3)
- onboarding offers both plans with a trial and a subscribe button
- billing exposes Switch to Startup/Hobby during the trial and hides the
  checkout CTAs and server steppers that would create a second subscription
- upgradeSubscription caps the server count to the plan's included servers
  while trialing and skips proration, which emitted an orphan invoice
- webhook treats trialing as active instead of disabling servers, and
  guards invoices that carry no subscription
- getBillingStatus reports hasPaymentMethod, so the banners stop asking for
  a card once one is on file
- new cloud-only daily job emails trial users without a payment method at 3
  and 1 days left, deduped through subscription metadata claimed before the
  send so concurrent replicas cannot double-send
2026-09-18 02:35:27 -06:00
2026-08-27 01:15:17 -06:00
2025-06-02 01:09:48 -06:00

Dokploy - Open Source Alternative to Vercel, Heroku and Netlify.

Join us on Discord for help, feedback, and discussions!

Discord Shield

Dokploy is a free, self-hostable Platform as a Service (PaaS) that simplifies the deployment and management of applications and databases.

✨ Features

Dokploy includes multiple features to make your life easier.

  • Applications: Deploy any type of application (Node.js, PHP, Python, Go, Ruby, etc.).
  • Databases: Create and manage databases with support for MySQL, PostgreSQL, MongoDB, MariaDB, libsql, and Redis.
  • Backups: Automate backups for databases to an external storage destination.
  • Docker Compose: Native support for Docker Compose to manage complex applications.
  • Multi Node: Scale applications to multiple nodes using Docker Swarm to manage the cluster.
  • Templates: Deploy open-source templates (Plausible, Pocketbase, Calcom, etc.) with a single click.
  • Traefik Integration: Automatically integrates with Traefik for routing and load balancing.
  • Real-time Monitoring: Monitor CPU, memory, storage, and network usage for every resource.
  • Docker Management: Easily deploy and manage Docker containers.
  • CLI/API: Manage your applications and databases using the command line or through the API.
  • Notifications: Get notified when your deployments succeed or fail (via Slack, Discord, Telegram, Email, etc.).
  • Multi Server: Deploy and manage your applications remotely to external servers.
  • Self-Hosted: Self-host Dokploy on your VPS.

🚀 Getting Started

To get started, run the following command on a VPS:

Want to skip the installation process? Try the Dokploy Cloud.

curl -sSL https://dokploy.com/install.sh | bash

For detailed documentation, visit docs.dokploy.com.

Github Sponsors

Contributors 🤝

Contributors

📺 Video Tutorial

Watch the video

🤝 Contributing

Check out the Contributing Guide for more information.

Languages
TypeScript 99.1%
Go 0.5%
CSS 0.2%