Description
Marketplace Admin
› Enter the Stripe secret key in addon settings
› Register the Stripe webhook in one click
› Enable subscription requirement per vendor plan
› Configure grace period, max retry attempts
› Set global trial cut-off date across all plans
› View all vendor subscriptions and payment history
› Receive notifications on vendor suspensions
› Register the Stripe webhook in one click
› Enable subscription requirement per vendor plan
› Configure grace period, max retry attempts
› Set global trial cut-off date across all plans
› View all vendor subscriptions and payment history
› Receive notifications on vendor suspensions
Vendor / Seller
› Subscribe to a vendor plan via Stripe
› Enjoy free trial days before first charge
› Benefit from promotional introductory pricing
› Payments auto-renew without manual action
› Access Stripe Billing Portal for self-service
› Update payment method to avoid suspension
› Reactivate automatically after successful retry
› Enjoy free trial days before first charge
› Benefit from promotional introductory pricing
› Payments auto-renew without manual action
› Access Stripe Billing Portal for self-service
› Update payment method to avoid suspension
› Reactivate automatically after successful retry
Stripe + CS-Cart
› Stripe customer created per vendor automatically
› Subscription products mapped to vendor plans
› Webhooks sync payment events in real time
› Successful invoice → payout recorded in CS-Cart
› Failed payment → grace period → auto-suspension
› Cancellation → vendor status set to Suspended
› All events logged in CS-Cart event log
› Subscription products mapped to vendor plans
› Webhooks sync payment events in real time
› Successful invoice → payout recorded in CS-Cart
› Failed payment → grace period → auto-suspension
› Cancellation → vendor status set to Suspended
› All events logged in CS-Cart event log
Stripe Recurring Billing Engine
Full lifecycle management — subscription creation, renewal, failure, cancellation, and reactivation
Stripe Customer Creation
When a vendor subscribes for the first time, a Stripe Customer object is created using the vendor's email and company ID metadata. The Stripe customer ID is stored in
ec_vendor_stripe_details and reused for all future billing.
Subscription Creation
Vendor plan is mapped to a Stripe subscription. The interval (monthly/yearly/one-time) and price are derived from the vendor plan data, with optional integration with
cp_vendor_plan_periods for period-based pricing overrides.
Auto-Renewal
Stripe automatically charges the vendor's saved payment method at the end of each billing cycle. No manual action required from vendor or admin. Successful payments are received via webhook and logged as CS-Cart payout records.
Billing Portal
Vendors access Stripe's hosted Billing Portal to update payment methods, download invoices, and manage their subscription — all without leaving CS-Cart's vendor panel. Admin redirects vendor to Stripe's secure portal URL.
Webhook Registration
Admin creates Stripe webhooks directly from the addon settings panel in one click. Webhook URL points to the CS-Cart front-end endpoint. List of existing webhooks and their status is displayed inline. Duplicate-prevention logic checks existing endpoints before creating.
Restricted API Keys
Supports Stripe restricted API keys (no broad account access needed). Validation uses safe API calls that don't require elevated permissions. API key is masked in Smarty template assignments to prevent accidental exposure in frontend.
3 Stripe Webhook Events Handled
Every critical billing event updates CS-Cart vendor status and sends email notifications automatically
invoice.paid
› Subscription ID and invoice URL extracted from payload
› Vendor identified via Stripe customer ID lookup
› Payment record inserted into
› Vendor status set to Active (reactivation if suspended)
› Subscription marked
› Reactivation email sent to vendor if they were suspended
› Payout record created in CS-Cart vendor payouts
› Vendor identified via Stripe customer ID lookup
› Payment record inserted into
ec_vendor_orders_of_subscription› Vendor status set to Active (reactivation if suspended)
› Subscription marked
is_cancel = N› Reactivation email sent to vendor if they were suspended
› Payout record created in CS-Cart vendor payouts
invoice.payment_failed
› Payment attempt count tracked from Stripe payload
› If below max attempts → warning email sent to vendor
› Remaining attempts count included in notification
› Grace period countdown shown in vendor dashboard
› On final failure → subscription marked cancelled
› Vendor status set to Suspended (if auto-suspend = Y)
› Admin notified of suspension (if notify admin = Y)
› If below max attempts → warning email sent to vendor
› Remaining attempts count included in notification
› Grace period countdown shown in vendor dashboard
› On final failure → subscription marked cancelled
› Vendor status set to Suspended (if auto-suspend = Y)
› Admin notified of suspension (if notify admin = Y)
customer.subscription.deleted
› Fired when subscription is cancelled or expires
› Subscription record set to
› Vendor status set to Suspended in CS-Cart
› Cancellation notification email dispatched to vendor
› Vendor must re-subscribe to regain marketplace access
› Event logged in CS-Cart general event log
› Subscription record set to
is_cancel = Y› Vendor status set to Suspended in CS-Cart
› Cancellation notification email dispatched to vendor
› Vendor must re-subscribe to regain marketplace access
› Event logged in CS-Cart general event log
Vendor Plans
Per-Plan Subscription Settings
Five new fields added to every vendor plan in CS-Cart. Each plan can have its own trial, promo offer, and subscription requirement independently configured.
Column
ec_require_subscription (char 0/1) on the vendor plan. When enabled, vendors on this plan must maintain an active Stripe subscription to continue selling on the marketplace. The admin sees a clear checkbox on the plan edit page.
Column
ec_trial_days (int). Number of free trial days before the first Stripe charge. Only granted to first-time subscribers. Set to 0 to disable. Respects the global trial cut-off date — if the global date is earlier, trial ends at the global date.
Charge a special introductory fee before regular recurring billing begins. Configurable via three sub-fields: promo price, promo duration (months), and promo type. Overrides free trial when both are set for the same plan.
Promotional & Trial Pricing
Flexible introductory pricing with two distinct modes and a global trial expiry gate
One-Time Promo (onetime)
Vendor pays a single upfront fee that covers the entire promotional period. After the promo duration (N months) expires, regular recurring billing starts automatically. Ideal for flat registration or setup fees.
Recurring Promo (recurring)
Vendor pays a reduced monthly rate during the promotional period before switching to the full regular price. Used for introductory discounts like "first 3 months at half price" marketing offers.
Free Trial Period
Plan-level trial days set the Stripe
trial_end timestamp. Trial is only granted to first-time subscribers (no existing active subscription). Trial ends at midnight of the last trial day to ensure the full day count.Global Trial End Date
A date picker in the addon settings defines a global cut-off: no free trial is granted to any vendor after this date, regardless of plan settings. When both plan-trial and global-date apply, whichever ends first is used.
Promo vs. Trial Priority: If a plan has both trial days and promotional offer enabled, the promotional offer takes priority and the trial is skipped. This allows plans to transition cleanly from trial-based acquisition to promo-fee-based acquisition campaigns without touching the trial field.
Failure Handling
Grace Period & Auto-Suspension
Configurable retry logic prevents abrupt suspensions. Vendors get warnings and multiple chances to update their payment method before anything drastic happens.
Grace Period (Days)
Number of days Stripe waits (and retries) before the addon considers the subscription failed. Default: 3 days. During this window, vendor's marketplace access remains active and Stripe handles payment retries automatically.
Max Payment Attempts
Choose 1 to 5 automatic retry attempts before triggering suspension. Default: 3 attempts. Each failure decrements the count visible in vendor warning emails. Stripe retries automatically on the schedule it calculates based on the invoice age.
Auto-Suspend on Failure
Toggle (default: Y). When enabled, after all retry attempts are exhausted the vendor's CS-Cart company status is automatically changed to Suspended. When disabled, vendor stays active but receives warning notifications.
Admin Suspension Notice
Toggle (default: Y). When a vendor is suspended, the marketplace admin receives a CS-Cart notification including the vendor name and email address. Helps admins track financially delinquent sellers and follow up manually if needed.
Vendor Payment Failure Email
Toggle (default: Y). Vendor receives an email warning on each failed payment attempt showing remaining attempts, a link to the invoice, and instructions to update their payment method via the Stripe Billing Portal.
Automatic Reactivation
When a vendor updates their payment method and Stripe successfully charges the next invoice, the
invoice.paid webhook fires and automatically reactivates the vendor account. A reactivation confirmation email is sent to the vendor.
Configuration
Addon Settings Reference
All settings in one section — from Stripe credentials to notification preferences and trial expiry control.
client_secret_key — Stripe API secret key (sk_live_... or sk_test_...). Stored in CS-Cart settings. Used for all Stripe API calls. Restricted keys are supported. The key is never passed to Smarty templates.
trial_end_date — An optional global date after which no new vendors receive a free trial. Rendered with a JS date picker in the settings page (
trial_end_date.tpl). Stored as a Unix timestamp.
grace_period_days — Default 3. How long to wait after payment fails before actioning a suspension. Stripe retries automatically during this window.
max_payment_attempts — Selectbox 1–5. Default 3 (Recommended). After this many failures, suspension (or review flag) is triggered. Value shown to vendor in warning emails.
auto_suspend_on_failure — Y/N. Default Y. Toggle whether failed payment → automatic company status change to Suspended. Disabling lets admin review before taking action.
notify_admin_on_suspension — Y/N (default Y)
notify_vendor_on_payment_failure — Y/N (default Y)
Independent toggles giving admins full control over which parties receive automated emails on payment events.
notify_vendor_on_payment_failure — Y/N (default Y)
Independent toggles giving admins full control over which parties receive automated emails on payment events.
Database Structure
3 new tables + 6 columns added to
vendor_plans — clean install and uninstall with full SQL rollback
ec_vendor_stripe_details
Maps Stripe customer IDs to CS-Cart vendors:
id int PK AUTO_INCREMENTvendor_stripe_id varchar(100) — Stripe cus_XXXemail varchar(255) — vendor emailcompany_id int(11) — CS-Cart company
ec_vendor_subscription_details
Active subscription tracking per vendor:
subscription_id varchar(255) — Stripe sub_XXXcompany_id int(11) — CS-Cart vendorinterval / interval_count — billing cycleplan_name — vendor plan nameis_cancel char(1) N/Y + statuscurrent_period_end int timestamp
ec_vendor_orders_of_subscription
Full payment history per subscription:
subscription_id — Stripe subscription IDinvoice varchar(500) — hosted invoice URLstatus varchar(25) — paid / failedtotal decimal(12,2) — amount chargedcompany_id + email + timestamp
6 Columns Added to
cscart_vendor_plansec_require_subscription
char(1) DEFAULT '0'
char(1) DEFAULT '0'
ec_trial_days
int(11) NOT NULL DEFAULT 0
int(11) NOT NULL DEFAULT 0
ec_enable_promo
char(1) DEFAULT '0'
char(1) DEFAULT '0'
ec_promo_price
decimal(12,2) DEFAULT 0.00
decimal(12,2) DEFAULT 0.00
ec_promo_duration
int(11) DEFAULT 1
int(11) DEFAULT 1
ec_promo_type
varchar(20) DEFAULT 'onetime'
varchar(20) DEFAULT 'onetime'
Admin Subscription Dashboard
Two dedicated pages in the CS-Cart backend and vendor panel for full visibility into subscriptions and payment history.
Subscription List (manage)
Paginated list of all vendor subscriptions with search and filter. Vendor admins see only their own subscription. Marketplace admin sees all. Columns: subscription ID, vendor, plan, interval, status, is_cancel, timestamp. Actions: cancel, delete, view payment history.
Payment History (orders)
Per-subscription view of all Stripe invoice payments. Sortable by timestamp, filterable by date period and status. Shows invoice URL (clickable link to Stripe-hosted invoice PDF), payment status, amount, and timestamp.
Webhook Manager
In-settings webhook management panel: shows list of all Stripe webhooks registered for the account (up to 100). Admin can create the webhook endpoint or delete existing ones. Duplicate prevention checks if the store URL is already registered.
Subscription Tab on Vendor Profile
A subscription tab injected into the vendor company edit page (via hooks). Shows current subscription status, subscription ID, plan, started date, next billing date, and quick actions: view history, open Stripe Billing Portal, cancel.
Subscription Required Banner
A front-end banner (
body_content.pre.tpl) is injected on the vendor admin dashboard when the vendor's plan requires subscription but they are not subscribed or have been suspended. Includes a "Reactivate Subscription" CTA.
Vendor Payout Integration
Every successful Stripe invoice creates a CS-Cart vendor payout record via
VendorPayouts::instance()->update(). The payout amount equals the invoice total. This ensures the marketplace financial ledger stays in sync with Stripe billing automatically.
Integrations
vendor_plans (Required)
Core dependency. Adds 6 new fields to the vendor plan edit form. Reads plan price, periodicity, and plan name to create corresponding Stripe subscription products and prices. The subscription requirement flag gates access for plan subscribers.
vendor_categories_fee (Required)
Listed as a required dependency. Used when processing vendor plan payments and ensuring category-based fee structures are properly reflected in subscription pricing. Must be installed and active alongside this addon.
cp_vendor_plan_periods (Optional)
When the
cp_vendor_plan_periods addon is active, pricing is resolved from the period-based price table (cp_vendor_plan_period_price), mapping period type (Y=yearly, M=monthly, O=onetime) to the matching Stripe interval. Vendors can also change plans — normally blocked when this addon is not present.
Compatibility & Technical Specifications
Version
1.0
Editions
Multi-Vendor & Ultimate
Addon ID
ec_vendor_subscription
DB Tables
3 new tables
Plan Columns
+6 on vendor_plans
Developer
Zclues Technologies
Stripe Recurring Billing
Stripe Billing Portal
Webhook Manager
Auto Webhook Registration
Free Trial Periods
Global Trial Expiry Date
One-Time Promo Fee
Recurring Promo Pricing
Grace Period Days
Max Retry Attempts
Auto-Suspend on Failure
Auto-Reactivation
invoice.paid Webhook
invoice.payment_failed
subscription.deleted Webhook
Subscription Dashboard
Payment History Per Vendor
Vendor Payout Sync
cp_vendor_plan_periods Support
Restricted API Key Support
Email Notifications
CS-Cart Event Log
Supplement Facts
Amount Per Serving
%Daily Value
| Compatible | Youpitheme | — |
* Daily Value not established.
Features
Compatible
- Unitheme
- Youpitheme
Comptabile versions
- 4.18.x ,
- 4.17.x ,
- 4.16.x ,
- 4.15.x
Cs-cart Core
- Multi-vendor
Improvement For
- Vendor
Reviews
No reviews found
Please sign in so that we can notify you about a reply