Setting up the Multi-Vendor Marketplace
The Multi-Vendor Marketplace extension turns your TitanCart store into a marketplace where independent vendors sell their own products under your storefront. It adds vendor accounts, a self-service application flow, per-vendor public storefronts, commission control, and automatic payouts to vendors through Stripe Connect.
This guide takes about twenty minutes. Two things to know before you start:
- Marketplace is included with TitanCart Pro. There is no separate license key to buy or enter.
- Vendor payouts run on Stripe. You need Stripe working as a payment gateway, and only orders paid by card through Stripe pay vendors automatically. See step 4.
1. Turn the marketplace on
Marketplace ships with TitanCart Pro, so activating the plugin is all the licensing it needs. Under TitanCart → Extensions → Installed Extensions you will see it marked Included in Pro with no key field — your Pro subscription is the credential.
- Go to TitanCart → Settings → Marketplace.
- Switch Enable marketplace features on.
Note: the master switch is the only control gated on entitlement. On a store that is not on Pro the settings form is locked and a “License required” banner appears in its place. Turning the switch back off later hides every marketplace surface and pauses the vendor cron jobs, but keeps all of your marketplace data — switch it on again to resume.
2. Choose your marketplace mode
Still under Settings → Marketplace, pick the mode that matches what your vendors sell. Mode drives the product fields vendors fill in and the way listings are presented:
- Digital marketplace — extension stores, template and plugin marketplaces, asset stores. Listings carry a live preview link, compatibility, version, last-updated label and a files-included list.
- Physical marketplace — handmade goods, art, niche physical goods. Listings carry lead time, made-to-order, materials and dimensions.
You can switch mode at any time. Both modes share the same underlying data, so nothing is lost — only the customer-facing surfaces change.
Important — digital mode limits every product to one per order. A digital marketplace sells licenses, and a license is bought once, so while the marketplace is enabled and the mode is Digital, TitanCart caps the maximum quantity of every product in the catalogue at 1. Shoppers who try to add a second copy are told the item is already in their cart. Turn the marketplace off, or switch to Physical, and the cap is lifted again from every product that has no marketplace listing data of its own. If you sell ordinary physical goods alongside a digital marketplace, this is the setting to think about first.
3. Set your marketplace defaults
The remaining settings on the same page:
- Marketplace name — shown on the shop archive header, the account section and “powered by” footers. Leave it blank to use your site title.
- Accent color — a hex value used by marketplace presentation surfaces: primary buttons, sidebar highlights, grid accents.
- Default brand — the brand label applied to products with no brand attribute of their own.
- Default commission rate (%) — the percentage your platform keeps on every vendor sale. At
10, the platform keeps 10% and the vendor keeps 90%. It applies to every vendor who has no override of their own (see step 7).
Note: the commission rate is clamped to a range of 0–100, and anything that is not a number falls back to 10. Set it deliberately so every vendor knows their cut up front.
4. Connect Stripe — the platform side
Vendor payouts use the Separate Charges and Transfers model on Stripe Connect: the customer’s payment is charged to your platform Stripe account, and the marketplace then transfers each vendor’s share to their own connected account. There are two pieces of setup, and the second one is easy to miss.
4a. Stripe must be live as a payment gateway
Set Stripe up under Settings → Payment Gateways first, and confirm it takes a real payment. The marketplace uses that same connection to create the charges and fire the transfers — it does not hold Stripe API keys of its own.
4b. Add the Stripe Connect webhook
Vendor onboarding state — whether a vendor has finished verification, whether Stripe will let them receive money — reaches your store through a second, separate Stripe webhook. Without it your vendors will complete Stripe’s forms and their Payouts tab will never update.
- In the Stripe Dashboard, go to Developers → Webhooks and add an endpoint pointing at
https://your-store.com/wp-json/titancart/v1/webhooks/stripe/connect. - Subscribe it to
account.updatedandaccount.application.deauthorized. - Copy that endpoint’s signing secret (it starts with
whsec_). - Back in TitanCart, open Settings → Payment Gateways → Stripe and paste it into Stripe Connect Webhook Signing Secret. Save.
Note: this is a different secret from the payment-events webhook secret already on that screen. Stripe issues one signing secret per endpoint, and keeping them separate is Stripe’s own recommendation. TitanCart refuses unsigned Connect events rather than trusting them, so if the field is empty every Connect event is rejected and vendor status silently stops updating.
Which payments pay vendors
Vendor transfers are fired by a successful Stripe card payment. Orders paid with PayPal, Venmo, Square, Authorize.Net, cash on delivery or any offline method create no vendor transfer — the money lands in your account and you would have to settle with the vendor yourself. If your marketplace depends on automatic payouts, make Stripe the payment method your shoppers actually use.
5. Let customers apply to become vendors
Once the marketplace is enabled, any logged-in customer who is not already a vendor sees a Become a Vendor entry in their My Account area. The application asks for:
- Store Display Name (required) — the public name shoppers see on their products and vendor page.
- Store URL Slug (optional) — their storefront address at
/vendors/their-slug/. Left blank, it is generated from the display name. - Business Email (required) — pre-filled from their account email; used for Stripe correspondence and order alerts.
- About Your Store (optional) — a short bio for their public vendor page, editable later.
Phone, website and address are not asked for at this stage — vendors add those to their profile after approval.
Submitting the form creates a vendor record with a Pending status and emails your store admin address that a new application is waiting. Until you approve it the vendor cannot sell, and their storefront URL returns a normal “not found” page, so unapproved vendors are never indexed by search engines.
6. Review and approve vendor applications
Open TitanCart → Vendors to see every vendor and their status. Click through to a vendor for the full record — profile, contact details, lifecycle timestamps, Stripe Connect state and the running history of admin decisions.
- New — a record created by an administrator that has not been submitted as an application.
- Pending — applied, awaiting your review.
- Active — approved; they can list products and sell.
- Suspended — temporarily blocked, for example during a policy review. Their record and their products are preserved.
- Disabled — switched off. This is the end state for both a declined application and an offboarded vendor.
To approve an applicant, open their record and set the status to Active. Declining means moving them to Disabled — there is no separate “rejected” state.
Note: disabling a vendor also hides all of their products. Suspending does not — use Suspend when you expect the vendor to come back. Disabled is treated as a final state, but it is not a one-way door: the vendor record carries a Recover action that returns them to Active, and it asks for a written reason so the reversal is recorded in their history.
The applicant is emailed automatically when you approve or decline — that is, on the move out of Pending. Later status changes, such as suspending an active vendor, do not send the vendor an email; tell them yourself if you want them to know.
7. Set commission rates
Every vendor inherits the default commission rate from step 3. When one vendor needs a different split:
- Open the vendor’s record under TitanCart → Vendors.
- In the Commission section, enter the platform’s percentage for this vendor and click Save rate. The readout underneath confirms the split — for example, “Effective: platform keeps 20%, vendor keeps 80% of each sale.”
- To remove an override and send the vendor back to the site default, click Clear override. The readout returns to the default rate, marked (site default).
The rate in force when an order is placed is the rate that order pays out at, so changing a vendor’s percentage never rewrites the money on orders they have already earned.
8. Vendors connect Stripe to get paid
After you approve a vendor, they connect their own bank details through Stripe. From My Account → Payouts:
- They click Connect with Stripe.
- Stripe’s hosted onboarding opens, where they verify their identity and bank account. TitanCart creates a Stripe Express account for them, and asks Stripe only for the ability to receive transfers — a shorter form than a full card-processing account would need.
- When they return, the Payouts tab shows their status. If they stopped part-way the button becomes Continue onboarding, and if Stripe still wants documents it becomes Complete verification in amber. Once Stripe clears them the status reads Active and the button disappears.
Note: a vendor must finish Stripe onboarding before they can receive transfers. A vendor who has not connected is simply skipped when payouts run — every other vendor on that order is still paid normally. Nothing is queued for them retroactively, so chase unconnected vendors before their first sale rather than after.
Alongside Payouts, an active vendor gets Vendor Dashboard, My Products, Sales and Vendor Profile in their account area. If their account is also linked to a WordPress login they will see a Vendor Panel in the WordPress admin sidebar, which is the same set of tools in the admin interface.
9. Vendors add products
Active vendors manage their own catalogue from their vendor area — adding products, prices, images and the categories you have made available. They see and edit only their own products; you can edit any of them. Their products appear on your storefront and on their public vendor page at /vendors/their-slug/, and /vendors/ lists every active vendor.
Each product also gets a Market tab for the listing details your marketplace shows:
- Listing icon — marketplace cards show an icon rather than a photo, so pick one here (photos still appear on the product page itself).
- Custom fields — up to twelve free-form name and value rows, for anything the built-in fields do not cover. “Support included → 6 months included” is a typical one. They appear with the rest of the product details.
- Mode fields — live preview URL, compatibility, version, last updated and files included in digital mode; lead time, made to order, materials and dimensions in physical mode.
Shoppers can also rate the seller: on a product that belongs to an active vendor, the review form gains an optional Rate the seller star picker, and those ratings build the vendor’s own rating on their storefront.
10. How payouts work
Payouts are automatic. When an order is paid by card through Stripe:
- The full payment is charged to your platform Stripe account.
- For each vendor whose products are in the order, the marketplace works out the vendor’s share from their commission rate and transfers it to their connected Stripe account.
- Every transfer is recorded against the order and the vendor, and tagged so that Stripe returns the original transfer rather than making a second one if the payment notification is redelivered. A vendor cannot be paid twice for the same order.
- If a transfer does not complete — a network failure, a Stripe rejection — the record stays visible instead of vanishing, and an hourly job retries anything that was interrupted in flight. Transfers Stripe actively refused are left alone for you to look at rather than retried in a loop.
- Vendors see their earnings and payout history on their Payouts tab.
A mixed cart containing both your own products and several vendors’ products is split correctly: your platform keeps its own products’ revenue plus the commission on each vendor sale, and each vendor receives their share.
11. Refunds on a marketplace order
When you refund an order that paid vendors, the vendor’s share is clawed back from their connected account so your platform balance is not left carrying it. Attribution follows the line: whoever’s item is refunded is the one who loses the money. Refunding one of your own products takes nothing from any vendor.
Refund from Sales as you would any order, and refund by line item wherever you can. A partial refund issued as a lump sum, with no indication of which line it belongs to, cannot honestly be attributed to a vendor — TitanCart records the refund to the customer and skips the clawback rather than guessing, leaving you to settle it with the vendor. A full refund needs no line detail, since every line is included by definition.
How to verify on Stripe’s side
When something looks wrong, the Stripe Dashboard is the place to confirm it. Log in to your platform account, not the vendor’s.
- Is the vendor’s account really connected? Go to Connect → Accounts. Each vendor TitanCart created is an Express account, and it carries a metadata entry
titancart_vendor_idholding the vendor’s id in your store — useful when two vendors have similar names. Open the account and check that payouts are enabled and that Stripe is not waiting on documents. - Did the webhook arrive? Under Developers → Webhooks, open your Connect endpoint and read its recent deliveries. A
401onaccount.updatedmeans the signing secret in TitanCart does not match this endpoint — recopy it. No deliveries at all means the endpoint URL is wrong or the events are not subscribed. - Did the vendor actually get paid? Look under Payments for the customer’s charge, then at Connect → Transfers for the transfers made from it. Transfers belonging to one TitanCart order share a transfer group named
tc_order_followed by the order id, so you can see the whole split for an order in one view. - Was a refund clawed back? A clawback appears as a reversal on the original transfer, not as a separate payment.
- Is the platform account itself ready? Connect has to be enabled on your Stripe account, and your platform profile completed, before Stripe will let you create vendor accounts at all. Stripe will say so on the Connect page if it is not.
Troubleshooting
- The marketplace settings are locked — the store is not entitled to Pro. Marketplace is included with TitanCart Pro and needs no key of its own; check your core subscription under TitanCart → Extensions → Installed Extensions, where the extension should read Included in Pro.
- Shoppers cannot buy more than one of anything — the marketplace is enabled in Digital mode, which caps every product at one per order. Switch to Physical, or turn the marketplace off, to lift it.
- A customer does not see “Become a Vendor” — confirm the marketplace is enabled, the person is logged in, and they are not already a vendor. A pending or suspended vendor sees no vendor menu items at all.
- A vendor’s storefront shows “not found” — their status is New, Pending, Suspended or Disabled. Only Active vendors have a public storefront.
- A vendor finished Stripe onboarding but their Payouts tab still says not connected — the Connect webhook is missing or its signing secret is wrong. Work through step 4b, then check the endpoint’s deliveries in the Stripe Dashboard.
- A vendor was not paid on an order — check, in order: was the order paid by card through Stripe (no other payment method pays vendors automatically); had the vendor completed Stripe onboarding at the time of the order; and does Stripe show a transfer for that order’s transfer group.
- The commission split looks wrong — check the Commission section on the vendor’s record. If the readout says (site default) the vendor is using the rate from Settings → Marketplace.
- A vendor’s products all disappeared — the vendor was disabled, which hides their products. Use Recover on their record to bring them back to Active.
See also
- Stripe setup (required for vendor payouts)
- Payment gateways overview
- Activating a license key
- How extensions work in TitanCart