Multi-Vendor Marketplace
Turn your store into a marketplace — multi-vendor product listings, automatic commission calculation, and seller payout management.
Multi-Vendor Marketplace
The Multi-Vendor plugin transforms a single-vendor Stilmerce store into a full marketplace. Vendors apply, get approved, list their own products (or offer competing prices on shared products), and manage orders from a dedicated Seller Panel.
Requirements
- Stilmerce Core (any edition)
- A valid Multi-Vendor plugin license
- A separate subdomain for the seller panel (e.g.
seller.example.com) - Root SSH access to your server (required once for seller panel deployment)
Step 1 — Install the Plugin
- Purchase the plugin from stilgen.com
- Go to Admin → Plugins → Upload
- Upload
multi-vendor.zip - Click Install, then Activate
The plugin runs its database migrations automatically. You will see a warning in the server log:
⚠️ Seller panel not yet deployed.
Run: bash api/src/plugins/multi-vendor/setup-seller.shStep 2 — Deploy the Seller Panel
The seller panel (seller.example.com) is a separate Next.js application that must be deployed once on your server. The plugin ZIP includes a companion script that handles everything automatically.
Run the setup script
SSH into your server and run:
bash /var/www/stilmerce/api/src/plugins/multi-vendor/setup-seller.shReplace
/var/www/stilmercewith your actual install path if different.
The script will ask for two things:
| Prompt | Example |
|---|---|
| Seller domain | seller.example.com |
| SSL email | you@example.com (auto-detected if you already have Let's Encrypt) |
Everything else is read automatically from your existing install.
What the script does
- Deploys the pre-built seller app (no Node.js build required)
- Writes
seller/.env.production - Starts a
stilmerce-sellerPM2 process - Creates an Nginx virtual host for the seller domain
- Obtains an SSL certificate via Let's Encrypt
- Adds the seller domain to
CORS_ORIGINin the API config - Restarts the API
Total time: ~2 minutes.
DNS setup
Before running the script, point your seller subdomain to the server:
seller.example.com → A → <your server IP>Step 3 — Configure the Marketplace
After deployment, open Admin → Plugins → Multi-Vendor → Settings to configure:
| Setting | Description |
|---|---|
| Default Commission Rate | Platform commission on each sale (default: 10%) |
| Min Payout Amount | Minimum balance before a vendor can request payout (default: 100) |
| Return Reserve Rate | Percentage held back for potential returns (default: 5%) |
| Return Window Days | Days customers have to request a return (default: 14) |
| Payout Schedule | weekly or monthly |
| Auto Payout | Automatically process payouts without manual admin approval |
Vendor Onboarding
Vendors register through the seller panel (seller.example.com/seller) or can be invited by an admin.
Approval flow:
- Vendor submits application (business name, tax ID, IBAN, KYC documents)
- Admin reviews in Admin → Vendors
- Admin approves → vendor gains access to their seller dashboard
Commission Model
Commissions are calculated at order time using a 5-level priority chain:
- Vendor + Category specific rate
- Vendor store rate
- Vendor default rate
- Category global rate
- Platform default rate (10%)
Rates are locked in at purchase time — changing rates later does not affect past orders.
Seller Panel Features
Once deployed, vendors can:
- Manage their product catalog
- Set their own prices and stock levels on shared products
- View and process orders assigned to them
- Track commissions and payout history
- Request payouts when balance ≥ minimum threshold
- Manage store staff accounts
- Handle returns and disputes
Troubleshooting
Seller panel not loading after setup:
pm2 logs stilmerce-seller --lines 50CORS errors in the browser:
Make sure setup-seller.sh completed successfully. It adds the seller domain to CORS_ORIGIN in api/.env.production. Verify:
grep CORS_ORIGIN /var/www/stilmerce/api/.env.productionRe-running the setup script: The script is idempotent — safe to run again if something went wrong. It removes and re-creates the PM2 process.
SSL certificate renewal: Certbot auto-renews. To renew manually:
certbot renew --nginx