RestroPRO SaaS DocsUpdate Guidev2_0_0

Version 2.0.0

We’re excited to introduce Version 2.0.0, a major update that enhances usability, customization, and performance. The highlight of this release is multi-payment gateway support, centralized plan management, and flexible pricing.

Multiple Payment Gateways

v2.0.0 (08-Jan-2026)

  • ✅ Multiple payment gateway support (foundation added)
  • ✅ Stripe is the first supported gateway
  • ✅ All plans managed from Super Admin portal
  • ✅ Customers can upgrade or downgrade plans
  • ✅ Multiple currency support
  • ✅ Free trial plans and plan-level discounts
  • ✅ More gateways (Pay***, Raz***, Pay***) coming in next versions

Update Guide

Step 1: Update DB

1.1 Create the payment_gateways table

This table tracks manage all payment gatewayand their credentials.

CREATE TABLE `payment_gateways` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `gateway_name` varchar(50) NOT NULL,
  `credentials` text,
  `status` tinyint(1) DEFAULT '1',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uq_gateway_name` (`gateway_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

1.2 Create the plans table

This table all plans releted details.

CREATE TABLE `plans` (
  `id` int NOT NULL AUTO_INCREMENT,
  `title` varchar(95) DEFAULT NULL,
  `payment_gateway` varchar(200) NOT NULL,
  `payment_gateway_product_id` varchar(255) NOT NULL,
  `is_recommended` tinyint(1) DEFAULT '0',
  `is_trial` tinyint(1) DEFAULT '0',
  `trial_days` int DEFAULT NULL,
  `features_description` text,
  `features` text,
  `yearly_discount` int DEFAULT NULL,
  `discount` int DEFAULT NULL,
  `created_at` datetime DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `is_deleted` tinyint(1) DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `stripe_product_id` (`payment_gateway_product_id`)
) ENGINE=InnoDB AUTO_INCREMENT=79 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

1.3 Create the plan_prices table

This table all plans prices with currency, amount releted details.

CREATE TABLE `plan_prices` (
  `id` int NOT NULL AUTO_INCREMENT,
  `plan_id` int NOT NULL,
  `country` varchar(500) NOT NULL,
  `currency` varchar(10) NOT NULL,
  `frequency` enum('monthly','yearly') NOT NULL,
  `amount` int NOT NULL,
  `payment_gateway_price_id` varchar(100) DEFAULT NULL,
  `is_active` tinyint(1) DEFAULT '1',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `symbol` varchar(500) NOT NULL,
  `is_default` tinyint(1) DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `plan_id_idx` (`plan_id`),
  CONSTRAINT `fk_plan_prices_plan` FOREIGN KEY (`plan_id`) REFERENCES `plans` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=123 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

1.4 Add following column into tenants table

ALTER TABLE `tenants`
ADD COLUMN `payment_customer_id` varchar(255) DEFAULT NULL,
ADD COLUMN `hasTrial` tinyint DEFAULT NULL,
ADD COLUMN `isTrialPlan` tinyint DEFAULT '0',
ADD COLUMN `payment_gateway_product_id` varchar(255) DEFAULT NULL,
ADD COLUMN `payment_gateway_price_id` varchar(255) DEFAULT NULL,
ADD COLUMN `token_version` int DEFAULT '1',
ADD COLUMN `stripe_next_price_id` varchar(255) DEFAULT NULL;

1.5 Add following changes into subscription_history table

ALTER TABLE `subscription_history`
MODIFY COLUMN `status`
ENUM(
  'created',
  'updated',
  'plan_changed',
  'downgrade_scheduled',
  'cancelAtPeriodEnd',
  'cancelled'
) DEFAULT NULL;

Step 2: Update Backend Code

  • Replace the existing backend files with the latest version from the v2.0.0 release.
  • Run any required migrations or seeders to initialize inventory-related tables.
  • Follow the original RestroPRO setup guide for any new .env or configuration updates.

Step 3: Update Frontend Code

  • Replace existing frontend code with the updated files from the v2_0_0 branch.
  • Clear local storage/cache and rebuild the frontend for the changes to reflect.
  • Confirm visibility of the new Plans and Payment Gateways sections in the superadmin admin panel.

Feature Usage Notes

  • Plan Management: Use the Superadmin panel to create, edit, and manage subscription plans, including pricing, currency, and billing frequency per country.
  • Assign Pricing: Set default and country-specific pricing for each plan. Make sure at least one price per plan is marked as default.
  • Payment Gateway Integration: Configure payment gateways (such as Stripe) and link their product and price IDs to your plans for automated billing.
  • Tenant Subscriptions: Tenants are now linked to payment gateway customer IDs and price IDs for seamless upgrades, downgrades, and renewals.
  • Trial Management: Utilize the new trial fields to define trial periods and statuses for each tenant and plan.
  • Token Versioning: The new token_version field in tenants will help in securely managing authentication tokens after major plan or payment changes.

💡 Always verify both backend and frontend updates are complete to ensure smooth functionality for your billing and payment workflows in v2.0.0.