WordPress.org

Plugin Directory

Split Pay – Stripe Connect Split Payments & Multi-Vendor Marketplace for WooCommerce & FluentCart

Split Pay – Stripe Connect Split Payments & Multi-Vendor Marketplace for WooCommerce & FluentCart

Description

Split Pay is the leading WordPress split payments plugin powered by Stripe Connect. Automatically split payments between your platform and one or more connected Stripe accounts – perfect for multi-vendor marketplaces, vendor payouts, commission management, and business partner revenue sharing.

Split Pay works with WooCommerce and FluentCart – on their own or side by side – and with the Stripe gateways your store already uses. It handles the entire payment splitting workflow – payouts, refunds, chargebacks and retries – so you can focus on growing your store.

How It Works

Your store charges the customer on your Stripe platform account through its normal checkout. Once the charge succeeds, Split Pay uses the Stripe Connect Transfers API to route a percentage or fixed amount of the sale to one or more connected Stripe accounts. Every transfer is tied to the original charge and tagged split_pay=1 in Stripe, and an order’s transfers never add up to more than the customer paid. Order notes record each result, so every payout is traceable from your WordPress admin to the Stripe Dashboard.

Supported Platforms & Gateways

Split Pay transfers only from Stripe charges on your own platform account, using the platform secret key you save for each mode under Split Pay > Integrations; Payment Plugins needs its own matching key (see Installation). Non-Stripe payment methods and WooPayments are not split.

Who Is Split Pay For?

  • Multi-vendor marketplace owners who need automatic vendor payouts
  • Business partnerships where revenue is shared between parties
  • Supplier and vendor relationships with automated commission payments
  • Affiliate or referral storefronts that split sales with partners
  • Service platforms that distribute payments to service providers
  • Subscription businesses that share recurring revenue with vendors

Requirements

  • At least one supported e-commerce plugin: WooCommerce 7.9 or later, or FluentCart
  • A supported Stripe payment gateway configured for your chosen platform
  • A Stripe account with Stripe Connect enabled, and its platform secret key for each mode you use
  • HTTPS on your site for Stripe-hosted vendor onboarding

🆓 Free Features

% PERCENTAGE-BASED SPLIT PAYMENTS

Transfer a percentage of every sale to a single connected Stripe account. Define a global split percentage and every eligible payment is automatically divided – no manual payouts required. Works with WooCommerce and FluentCart.

💱 CURRENCY AGNOSTIC PAYMENTS

Accept payments in any currency supported by Stripe – USD, EUR, GBP, AUD, CAD, and 100+ more, including zero- and three-decimal currencies. When your Stripe account settles in a different currency from your store, Split Pay transfers and reverses in the settlement currency once Stripe has recorded the charge’s settlement.

💳 CARDS, WALLETS & NON-CARD PAYMENT METHODS

Split Pay splits the Stripe charge your gateway creates on your platform account: cards, wallets such as Apple Pay and Google Pay, and non-card methods such as iDEAL, SEPA Direct Debit, Bancontact and ACH. Bank debits are split once the charge succeeds. Capture-later payments, including in-person Stripe Terminal payments, are split when WooCommerce Stripe reports the capture; confirm your first Terminal order in its order notes.

🧾 ORDER FEE ROUTING

Send part or all of a positive WooCommerce order fee – such as a “Handling” fee – to a connected account. Match the fee by name on the Advanced tab and choose the percentage to transfer (100% by default). Partial refunds, even product- or shipping-only ones, also reverse part of the fee transfer, by their share of the order total.

↩️ AUTOMATIC REFUND HANDLING

When a refund is processed in WooCommerce, or received through FluentCart’s supported Stripe refund event, Split Pay automatically reverses each vendor’s share. Line-item and shipping refunds reverse the matching transfers; amount-only refunds reverse a proportional share. A WooCommerce refund recorded before an order’s first transfer is deducted from that transfer instead.

⚖️ CHARGEBACKS & FAILED BANK DEBITS

When a chargeback arrives through the WooCommerce Stripe Payment Gateway’s signed webhook or FluentCart’s Stripe webhook, Split Pay reverses the order’s vendor transfers in proportion to the disputed amount. A won dispute is noted on the order, and the vendor is not re-paid. Through that WooCommerce webhook, a bank-debit payment that fails after vendors were paid has its transfers reversed in full. Payment Plugins-only stores handle both in Stripe.

🔄 AUTOMATIC & MANUAL RETRIES

When every transfer on a WooCommerce order fails with an error that can clear on its own, Split Pay retries up to 3 times, 5 minutes apart. For anything else, fix the cause and use the “Retry Split Pay Transfers” order action – transfers already paid are never sent twice. FluentCart transfers recover automatically.

🏢 VENDOR CONNECT SHORTCODE & CONNECT LINKS

Place the [split_pay_vendor_connect] shortcode on any page so an eligible signed-in vendor can connect Stripe with one click through Stripe-hosted onboarding, or share a Test or Live Connect link from Connect Status. On Stripe platforms that allow only Accounts v2, vendors get an Accounts v2 recipient account with the Express Dashboard and must be signed in to your site to use a shared Connect link. Administrators see Stripe’s reason when onboarding fails.

🔗 CONNECT AN EXISTING STRIPE ACCOUNT

Connect a Stripe account that already exists – your own or a vendor’s – to your platform with Stripe Connect OAuth from Split Pay > Connect Status. It can be chosen as a recipient straight away.

🔧 INTEGRATIONS TAB WITH GUIDED SETUP

A four-step setup wizard takes a fresh install from platform key to readiness check. The Integrations tab detects WooCommerce, FluentCart and their Stripe gateways side by side, shows each gateway’s transfer-key source, and runs account sync and read-only webhook checks.

🧭 CONNECT STATUS

See every connected account’s readiness in Test and Live mode, refresh the list from Stripe, confirm which Test account and Live account belong together, and check when your store last received a Stripe event.

🩺 PLATFORM STATUS

Platform Status shows your Stripe connection with a readiness check, which of your store’s payment methods Split Pay can split, what Split Pay does automatically, and a read-only data integrity check. When Stripe’s events reach your WooCommerce Stripe webhook, it also lists failed vendor bank payouts and accounts disconnected from your platform, which get no transfers until you click Unblock.

🔁 SUBSCRIPTION RENEWALS

Compatible with the official WooCommerce Subscriptions plugin. Recurring renewal orders follow the same Split Pay transfer path and saved settings as ordinary WooCommerce orders, and FluentCart subscription renewals are split automatically.

🧩 PRODUCT ADD-ON RECIPIENTS

With Product Add-Ons Ultimate, assign a connected account to an add-on group and Split Pay sends each priced add-on in that group to its account as a separate transfer.

⏩ HIGH-PERFORMANCE ORDER STORAGE (HPOS) COMPATIBLE

Compatible with WooCommerce High-Performance Order Storage, legacy order storage, and the Cart and Checkout blocks.

🛡️ ROBUST SETUP VALIDATION & SAFETY

API-key format and platform-identity checks, incomplete-configuration warnings, aggregate transfer alerts, and connected-account country notices surface setup problems before live use. Transfers must match the order’s Test or Live mode, and standard WordPress updates refuse Split Pay packages older than 3.8.4.

⌨️ WP-CLI COMMANDS

Audit and recover from the command line with wp spp verify-integrity, wp spp dump-transfer-log and wp spp retry-failed-transfers (with --dry-run).

🔌 DEVELOPER HOOKS & FILTERS

WordPress hooks and filters are available for transfer metadata, recipient selection, calculations, account creation, and custom integrations.

⭐ PRO Features

🔀 SPLIT PAYMENTS ACROSS MULTIPLE VENDOR ACCOUNTS

Split payments across multiple connected Stripe accounts simultaneously. Pay as many vendors, suppliers, or service providers from one order as you need and configure individual transfer amounts for each connected account, globally or per product. Works with both WooCommerce and FluentCart orders.

🔍 PRODUCT-LEVEL COMMISSION RATES

Set transfer percentages globally or override them at the product level. For example, split all sales at 10% globally, but set Product A at 20% and Product B at 5%. Available for both WooCommerce and FluentCart products.

📊 GLOBAL & PRODUCT-LEVEL FIXED AMOUNT TRANSFERS

Configure fixed transfer amounts globally or per product. Transfer $5 from every order, or set $10 per unit of Product X and $25 per unit of Product Y. Mix and match with percentage-based splits across your store.

🍒 VARIABLE PRODUCT SUPPORT

Full support for WooCommerce variable products. Set unique transfer values, transfer types, and connected accounts for each product variation, or set them once on the parent product and apply them to every variation.

🚢 SHIPPING FEE TRANSFERS

Transfer a percentage or fixed amount of shipping fees to connected vendor accounts, globally or per product. On WooCommerce, each product’s shipping share is weighted by quantity, so the shares add up to exactly the shipping you collected; on FluentCart, each rule uses the full shipping total, so keep your rules within it.

💸 TAX TRANSFERS

For WooCommerce orders, transfer 100% of each product’s tax to its connected accounts, or a share that matches the product’s transfer. Full control over how tax revenue is distributed.

🎟️ COUPON-ADJUSTED TRANSFERS

Calculate transfers on the discounted line total, so a coupon reduces the vendor’s share instead of the platform absorbing the whole discount.

🧮 SEQUENTIAL GLOBAL SPLITS

For WooCommerce orders, take fixed product-level transfers off first, then apply each global row in turn to the amount left. Off by default.

💳 OPTIONAL STRIPE FEE ALLOCATION

For WooCommerce card payments, optionally deduct the charge’s exact Stripe processing fee proportionally across all connected-account transfer legs. Off by default. While it is on, non-card payments such as iDEAL and SEPA, and any payment whose Stripe fee isn’t recorded yet, stop before any transfer, to be retried or paid by hand.

🗺️ FIELD-VALUE ROUTING

For WooCommerce orders, send a product’s transfer to a different connected account based on what the customer chose in a product or checkout field – for example, their nearest store. Split percentages and amounts never change.

⏳ DELAYED TRANSFERS

Hold WooCommerce vendor transfers until the order is marked Completed – ideal for physical goods, made-to-order products and services. Released transfers are still paid from the original charge, and refunds recorded while a transfer is held are left out of it. With Stripe-fee allocation on, a refund made through Stripe during the hold stops the order’s transfers; pay those vendors by hand.

🧾 RECLAIM REFUND SHORTFALLS

When a refund reversal fails because a vendor’s Stripe balance is too low, Split Pay records the shortfall as outstanding debt and deducts it from that vendor’s future transfers. Balances appear per account, mode and currency on Platform Status, with a one-click write-off.

📃 TRANSFER DASHBOARD & CSV EXPORT

The Transfers tab in your WordPress admin displays a complete history of all split payment transactions across all integrations, with links to each Stripe transfer and charge. Filter by source (WooCommerce / FluentCart), search, and export to CSV for accounting, reporting, or reconciliation.

🕜 BULK EDITOR FOR PRODUCTS

Manage transfer settings for hundreds or thousands of products with a spreadsheet-style bulk editor. Supports both WooCommerce and FluentCart products. Filter by category, product name, SKU, or attributes – then update transfer values and connected accounts in bulk, or append a recipient to many WooCommerce products with a preview of every change.

🏢 VENDOR ONBOARDING ADMIN CONTROLS

Let vendors register through your site’s existing WordPress registration form with a “Register as a Vendor” checkbox, or add them yourself under Users. Vendors connect Stripe from their own dashboard page, with your own title and instructions. Grant additional WordPress roles vendor access, and choose whether vendor accounts are created as Standard or Express Stripe accounts (Accounts v2-only platforms always get the Express Dashboard).

🤖 VENDOR AUTOMATION

Optionally, when a vendor finishes Stripe onboarding, create a WooCommerce product for them at your vendor share and give them a downloadable payment QR code (also available through the [split_pay_vendor_qr] shortcode). Pair it with a Name Your Price plugin to accept any-amount payments. Optionally email vendors when they are paid and customers when their money is sent, and customize the order-received message.

✉️ TRANSFER CONFIRMATION EMAILS & STRIPE METADATA

Send the store administrator a transfer confirmation email after a WooCommerce order’s first successful transfers, detailing every split payment amount, links to transfers in the Stripe Dashboard, and any failures that occurred. Optionally include order details in each transfer’s Stripe metadata for reporting and reconciliation.

🏪 WCFM MARKETPLACE INTEGRATION

Give WCFM vendors a “Connect with Stripe” button in their dashboard, link their products to their connected account automatically at a default vendor share, and take each vendor’s rate from WCFM membership tiers or commission rules. Link a vendor to a Stripe account created outside Split Pay. In Reconcile or Guard mode, Split Pay blocks WCFM’s scheduled and order-status automatic withdrawals so vendors aren’t paid twice (manual withdrawals stay available), and can mark WCFM order lines paid once its transfer succeeds.

🍺 DOKAN SUPPLIER VENDOR TRANSFERS

Pay a second “supplier” vendor on the same sale while Dokan Stripe Express pays the listing vendor – a true three-way split from one payment. Split Pay can reuse vendors’ Dokan Stripe Express connections so they connect once, and gives Dokan vendors a Stripe Payouts page in their dashboard.

🌱 WEBSITE & PRICING

📕 DOCUMENTATION

💬 SUPPORT

Compatibility

  • WooCommerce Bundles – Each bundle is split once, on its parent line, so nothing is transferred twice
  • Advanced Product Fields & Name Your Price – Splits use the price the customer actually paid
  • WPML, Polylang & WooCommerce Multilingual – Translated orders pay the vendor set on the original product
  • WordPress Multisite – Supports multisite installations, including network activation

GAUCHO PLUGINS PORTFOLIO

Third-party services

This plugin connects to the following external services.

Stripe (stripe.com) — Split Pay sends order, charge, transfer, refund and connected-account data to Stripe whenever it creates, retries or reverses a transfer, onboards or connects a vendor account, or syncs your connected accounts, using the Stripe keys you enter. Stripe Services Agreement and Privacy Policy.

Freemius (freemius.com) — used for PRO licence activation and updates. On the free plugin, diagnostic data (your name and email, plugin, WordPress and PHP versions, site language and URL, and optionally your plugin and theme list) is sent only if you opt in on the activation screen. With a paid licence, only the licence key, product and WordPress versions and the site URL are sent for activation and updates. Freemius Terms, Privacy Policy and data practices.

Screenshots

Installation

  1. In WordPress, go to Plugins > Add New Plugin, search for “Split Pay” and click Install Now – or upload the plugin ZIP under Plugins > Add New Plugin > Upload Plugin.
  2. Click Activate to enable the plugin. To be guided from platform key to readiness check, open Split Pay > Platform Status and click Resume the four-step setup wizard. Split Pay opens the wizard by itself only if no supported Stripe gateway or FluentCart is active when you activate.
  3. Navigate to Split Pay > Integrations and, under Your Stripe platform key, save the secret key of your Stripe platform account (with Stripe Connect enabled) for each mode you use.
  4. If you use Payment Plugins for Stripe WooCommerce, click Advanced on its row under Payment gateways on the same tab, and save the matching platform-account secret key for each enabled mode. Payment Plugins does not use the key from step 3. Until its own key is saved, readiness, account sync and the row-level check stay incomplete, and normal order transfers, delayed releases, guarded retries and store-initiated refunds can fall back to Payment Plugins’ own same-mode gateway secret.
  5. Connect your recipients with the [split_pay_vendor_connect] shortcode, a Connect link, or Connect an existing Stripe account. Then open Split Pay > Connect Status, click Refresh from Stripe, and confirm each recipient is ready in the mode you use.
  6. On Split Pay > Global Transfer Settings, choose the connected account and transfer value, then click Save Changes. This tab also holds the tax, email, metadata, coupon, delayed-transfer and refund-reclaim options. With PRO, set product rules on each product’s Split Pay Plugin tab.
  7. Rarely used settings – advanced transfer options, fee routing, field-value routing, and Reset / reconnect Split Pay accounts – are on Advanced, the last Split Pay settings tab.
  8. Process a Stripe Test-mode payment and verify the transfer in the order notes and your Stripe Dashboard before enabling live use.
  9. Check our documentation for detailed setup guides and configuration options.

FAQ

What is Split Pay and how does it work?

Split Pay is a WordPress plugin that uses the Stripe Connect Transfers API to automatically split payments between your Stripe platform account and one or more connected Stripe accounts. It works with WooCommerce and FluentCart. When a customer makes a purchase, the payment is collected by your platform and a configured percentage or fixed amount is transferred to each connected vendor account, tied to that charge.

What plugins are required for Split Pay to work?

Split Pay requires at least one supported e-commerce plugin with a Stripe payment gateway. Supported combinations include: WooCommerce (7.9 or later) with the WooCommerce Stripe Payment Gateway, WooCommerce with Payment Plugins for Stripe WooCommerce, or FluentCart with its built-in Stripe integration. You can run multiple platforms and gateways simultaneously. Other Stripe gateway plugins can reach Split Pay’s universal adapter when the order’s charge is on your platform account, but that setup isn’t supported; WooPayments and non-Stripe gateways are never split.

Can I use Split Pay to build a multi-vendor marketplace?

Yes! Split Pay is designed to power multi-vendor marketplaces on WooCommerce or FluentCart. Vendors connect their own Stripe accounts with the [split_pay_vendor_connect] shortcode or a Connect link, and every eligible payment is split automatically. With the Pro version, you can pay several vendors per order, set product-level commissions, let vendors register on your site, automate vendor products and emails, and integrate with WCFM or Dokan.

Does Split Pay work with WCFM Marketplace or Dokan?

Yes, with Split Pay Pro. With WCFM, vendors get a “Connect with Stripe” button in their WCFM dashboard, their products are linked to their connected account automatically, and each vendor’s rate can come from WCFM membership tiers or WCFM commission rules. To keep vendors from being paid twice, the Reconcile and Guard modes block WCFM’s scheduled and order-status automatic withdrawals (WCFM’s manual withdrawals stay available), and Split Pay can mark WCFM order lines paid once its transfer succeeds. With Dokan Stripe Express, Split Pay pays a second “supplier” vendor on the same sale while Dokan pays the listing vendor. The free version detects both marketplace plugins but doesn’t run their automation.

What payment methods are supported for split payments?

Split Pay splits the Stripe charge a supported gateway creates on your platform account, so you can use the methods your gateway and Stripe account offer: cards, wallets such as Apple Pay and Google Pay, and non-card methods such as iDEAL, SEPA Direct Debit, Bancontact and ACH. Bank debits that settle after checkout are split once the charge succeeds. With the WooCommerce Stripe Payment Gateway’s “Capture charge immediately” turned off, an authorised payment – including an in-person Stripe Terminal payment – is split when it is captured in WooCommerce, or in the Stripe Dashboard once WooCommerce Stripe’s charge.captured webhook reaches your store; confirm the first Terminal order’s transfer in its order notes. Non-Stripe methods such as bank transfer, cheque, cash on delivery and PayPal are not split, and neither is WooPayments. Split Pay > Platform Status lists which of your store’s methods Split Pay can split. With Stripe-fee allocation (Pro) turned on, non-card payments stop before any transfer. Verify every payment method you enable in Stripe Test mode before relying on it.

Does Split Pay work with WooCommerce Subscriptions?

Yes, Split Pay is fully compatible with the official WooCommerce Subscriptions plugin. When a subscription renewal payment is processed, the same split payment transfer is automatically triggered – so recurring revenue is shared with your connected vendors or partners on every billing cycle. FluentCart subscription renewals are split the same way.

Can I set different commission rates for different products?

Absolutely. A global percentage is free; with Split Pay Pro, you can also set fixed amounts globally and override percentages or fixed amounts at the product level. You can even set different transfer values for each variation of a variable product. Mix percentage-based and fixed-amount commissions across your entire product catalog.

How do vendors connect their Stripe account to my store?

Place the [split_pay_vendor_connect] shortcode on any page; an eligible signed-in vendor uses its “Connect with Stripe” button to start Stripe-hosted onboarding. You can also copy a Test or Live Connect link from Split Pay > Connect Status (each link works for 7 days). On Stripe platforms that allow only Accounts v2, Split Pay creates the vendor’s account as an Accounts v2 recipient account with the Express Dashboard, and a vendor must be signed in to your site to use a shared Connect link. Split Pay Pro adds vendor registration on your site, a vendor dashboard page for connecting Stripe, additional vendor roles, and a “Connect with Stripe” button inside WCFM and Dokan vendor dashboards.

Can I connect a Stripe account that already exists?

Yes. On Split Pay > Connect Status, the “Connect an existing Stripe account” card uses Stripe Connect OAuth. In Stripe, turn on OAuth for Standard accounts and add the redirect URI shown on the card, then save your Test and Live client IDs (they start with ca_), click Connect existing account, and approve the connection in Stripe. The account is listed under Connected accounts and can be chosen as a recipient. With Pro, you can also link a WCFM vendor to it.

Can I hold vendor payouts until an order ships?

Yes, with Split Pay Pro. Turn on “Delay transfers until order is marked Completed (WooCommerce)” on Global Transfer Settings. Split Pay holds the transfers when the order is paid and creates them from the original charge when the order reaches WooCommerce’s Completed status. A refund you record on the order while it is held is left out of the released transfer. With Stripe-fee allocation on, a refund made through Stripe while the order is held stops that order’s transfers; pay those vendors by hand in Stripe. Keep enough balance in your platform Stripe account until then. FluentCart orders are not delayed.

Does Split Pay handle refunds automatically?

Yes. When you process a full or partial refund in WooCommerce, or FluentCart delivers its supported Stripe refund event, Split Pay calculates each vendor’s share and reverses it from the connected account. WooCommerce line-item and shipping refunds reverse the matching transfers, and a refund recorded before an order’s first transfer is deducted from that transfer instead. Reversals use the amount actually transferred, and detailed order notes preserve the result. If an order fee is routed to a connected account, a partial refund also reverses part of that fee transfer in proportion to the order total, even when it refunds only products or shipping. With Pro, a shortfall caused by a low vendor balance can be reclaimed from that vendor’s future transfers.

What happens when a customer disputes a payment?

On WooCommerce, when the chargeback event reaches your store through the WooCommerce Stripe Payment Gateway’s webhook (saved with its signing secret), Split Pay reverses the order’s vendor transfers in proportion to the disputed amount, never more than is left on a transfer. If you win the dispute, Split Pay adds an order note and does not re-pay the vendor; send that transfer from your Stripe Dashboard if the vendor should be paid. If a bank-debit payment fails after vendors were paid, the order’s transfers are reversed in full. FluentCart chargebacks are reversed through FluentCart’s own Stripe webhook. If your WooCommerce store takes payments only through Payment Plugins, reverse chargebacks and failed bank debits in Stripe yourself.

What happens if a transfer fails?

Split Pay logs the failure and adds a note to the order. When every transfer on a WooCommerce order fails with an error that can clear on its own, Split Pay retries up to 3 times, 5 minutes apart. Otherwise, fix the cause and use the “Retry Split Pay Transfers” order action from the order edit screen – transfers already paid are skipped, so no vendor is paid twice. Don’t retry an order whose vendor you already paid by hand in Stripe; Split Pay can’t see that payment. If your Stripe account settles in a different currency from your store and an order’s first transfer went out before Stripe recorded the charge’s settlement, Stripe rejects it; use Retry Split Pay Transfers on the order a little later. When the WooCommerce Stripe Payment Gateway’s signed webhook reports a late payment, a WooCommerce order cancelled before its charge succeeded is still split. FluentCart transfers recover automatically, and wp spp retry-failed-transfers --order=<id> retries from WP-CLI.

Who pays the Stripe processing fee?

By default, your platform account pays Stripe’s processing fee and vendors receive their full configured amount; transfers can use up to the whole captured charge. With Split Pay Pro, optional Stripe-fee allocation deducts the charge’s exact fee from the vendor transfers of WooCommerce card payments, in proportion to each vendor’s share. It is off by default; orders already in progress keep their saved payout behavior, and refunds use only the fee-adjusted amount actually transferred. While it is on, non-card payments such as iDEAL and SEPA Direct Debit, and any payment whose Stripe fee isn’t recorded yet, stop before any transfer. On an order that isn’t held, Retry Split Pay Transfers then pays each vendor’s full share and your platform covers the fee; a held order stops again on every Retry until you turn fee allocation off.

Can I transfer shipping fees and taxes to vendor accounts?

Yes. Split Pay Pro allows you to transfer a percentage or fixed amount of shipping fees to connected vendor accounts. On WooCommerce, you can also transfer 100% of each product’s tax or distribute taxes proportionally based on each product’s transfer value – giving you full control over how fees and taxes are shared with vendors. WooCommerce order fees, such as a handling fee, can be routed to a connected account in the free version.

Is Split Pay compatible with WooCommerce High-Performance Order Storage (HPOS)?

Yes, Split Pay is fully tested and compatible with WooCommerce HPOS (High-Performance Order Storage) and the Cart and Checkout blocks. Whether you’re using legacy post-based storage or HPOS tables, split payments work reliably.

Can I export my transfer history?

Yes, with Split Pay Pro. The Transfers tab in your WordPress admin dashboard shows a complete log of all split payment transactions across all integrations. You can filter by source (WooCommerce or FluentCart), search for specific transfers, and export the full dataset to CSV for accounting, bookkeeping, or reconciliation. In the free version, each transfer is recorded in the order notes and in your Stripe Dashboard.

What is the minimum transfer amount?

Split Pay’s default runtime minimum is one smallest currency unit (for example, $0.01 USD). Stripe may apply additional currency- or account-specific limits, so confirm its current requirements for your setup.

Can I split payments to Stripe accounts in different countries?

Cross-border Connect availability is determined by Stripe for specific platform and connected-account countries. Split Pay does not override those rules; confirm eligibility in Stripe’s Connect documentation before relying on cross-border transfers.

Is there a bulk way to manage transfer settings for many products?

Yes. Split Pay Pro includes a spreadsheet-style bulk editor for WooCommerce and FluentCart products. Filter products by category, name, SKU, or attributes, then update transfer values and connected accounts for many products at once, or append a recipient to many WooCommerce products with a preview of every change. It’s designed for stores with hundreds or thousands of products.

Does Split Pay work with WooCommerce Bundles or other product types?

Split Pay supports simple and variable WooCommerce products. For WooCommerce Bundles, it processes the parent bundle line and skips child lines to prevent double counting; configurations that place the payable amount only on individually priced child lines are not supported. For FluentCart, Split Pay supports products with multiple variations.

Can I use multiple Stripe gateways at the same time?

Yes. Split Pay can run the official WooCommerce Stripe gateway, Payment Plugins, and FluentCart Stripe together. Official WooCommerce Stripe uses the default platform key; FluentCart inherits that key unless you save an override. For Payment Plugins, save its matching gateway-specific transfer key for every enabled mode. Normal order transfers, delayed releases, guarded retries, and store-initiated refunds can fall back to Payment Plugins’ own same-mode gateway secret when that field is empty, but readiness, account sync, and the row-level check require the explicit transfer key. The Integrations tab shows the effective source for each gateway.

Does Split Pay work without WooCommerce?

Yes. Split Pay works with FluentCart as a standalone integration. You do not need WooCommerce installed if you are using FluentCart with its built-in Stripe payment gateway. Delayed transfers, sequential splits, Stripe-fee allocation, tax transfers, fee routing, field-value routing, failed bank-debit reversals, Vendor Automation and the Transfer Confirmation email apply to WooCommerce orders only.

Can I install an earlier version of Split Pay?

The standard WordPress update flow refuses any Split Pay package older than 3.8.4, and any package it cannot verify. Your settings, routing, connected accounts and transfer history stay if you switch. Before you do, read the downgrade guide: it lists the queued work, held orders and payments to finish or handle in Stripe first. Don’t install a version older than 3.8.4 by FTP or ZIP upload: the guard can’t stop those routes.

What happens to my data if I uninstall Split Pay?

Deactivating keeps everything. Uninstalling removes Split Pay’s settings and saved Stripe keys but keeps your transfer history, connected-account records, vendor debt records and product-level splits, so a reinstall can reuse them. To delete the transfer history, connected-account and vendor debt records as well, turn on Delete stored account and transfer data on uninstall under Uninstall behavior on Global Transfer Settings before you delete the plugin; product-level splits stay on your products either way. Uninstalling never cancels a Pro subscription.

Where can I find documentation and setup guides?

Full documentation including setup guides, configuration tutorials, webhook setup instructions, and troubleshooting is available at docs.splitpayplugin.com. For plugin support, visit the WordPress.org support forum.

Reviews

31 Aogositra 2026
I had to get help with a specific action for my needs , and reached out to Brandon . He spent so much time and put so much effort into it, it was amazing. I'd still be struggling if it wasn't for him. this is why each review is 5 stars.
27 Jolay 2026
I have used split pay plugin with my marketplace site and it works great. Absolutely it does something which Dokan does not have for the payment solution. Their customer support is excellent and very quick in replies. They also go above and beyond to help if you need small changes in the plugin to adjust or open to take feedback. Absolutely recommend.
01 Novambra 2024
I had some questions regarding the plugin. I scheduled a meeting with Brandon and he walked me through my issues and questions. 100% would recommend this plugin!
17 Oktobra 2024
I was having some issues getting the plugin to work correctly, so I reached out to support. I did not expect that the founder and CEO would be the person helping me. They took over 30 minutes of their day to help me get everything working – some of which had to do with my stripe account and not even their plugin – and they still assisted me with that. Very happy with the plugin, and blow away by the support.
16 Oktobra 2024
Just added this to my woocommerce site on Salient theme, a couple days ago. Worked really well! Going to save me and my partners a ton of time and hopefully reduce potential accounting headaches. Even more impressed with the level of support and responsiveness we received from plugin developers. Keep up the great job!
Read all 21 reviews

Contributors & Developers

“Split Pay – Stripe Connect Split Payments & Multi-Vendor Marketplace for WooCommerce & FluentCart” is open source software. The following people have contributed to this plugin.

Contributors

“Split Pay – Stripe Connect Split Payments & Multi-Vendor Marketplace for WooCommerce & FluentCart” has been translated into 10 locales. Thank you to the translators for their contributions.

Translate “Split Pay – Stripe Connect Split Payments & Multi-Vendor Marketplace for WooCommerce & FluentCart” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

3.8.7

  • Added (PRO): optional “Split product shipping by shipping class” setting on the Advanced tab, off by default. When on, each shipping class’s Flat rate charge goes to that class’s products instead of every product getting its quantity share of the order’s shipping. Code that changes shipping prices can report what it charged each class with the spp_shipping_class_charges filter.
  • Fixed: a refund recorded while an order’s transfers are held no longer ends with a note saying the money operation is incomplete.

3.8.6

  • Updated Freemius SDK to the latest version.

3.8.5

  • Fixed: iDEAL, SEPA and other non-card Stripe payments split again (3.8.4 stopped them).
  • Fixed: a refund recorded before Split Pay first tries to send an order’s transfers (for example while a PRO delayed transfer is held) is now deducted from those transfers, on every store.
  • Fixed: a declined card no longer writes a false “reversing all vendor transfers” note or queues failing retries, and a declined attempt can no longer reverse the transfers paid by a later successful retry.
  • Fixed: payments authorised with WooCommerce Stripe’s “Capture charge immediately” turned off are now split when they are captured (for example when the order moves to Processing or Completed, including in-person Stripe Terminal payments). If you already paid a vendor by hand for an authorised order, settle that before capturing it.
  • Fixed (FluentCart): the Transfers tab and Bulk Editor search work on stores without WooCommerce.
  • Fixed: the Bulk Editor no longer drops a saved recipient that is missing from the synced account list when you save.
  • Fixed (PRO, Dokan): only store managers can set a product’s Supplier Vendor.
  • Added: vendor onboarding works on new Stripe platforms that no longer allow Accounts v1 account creation; administrators now see Stripe’s reason when onboarding fails, and Split Pay’s messages are written to WooCommerce > Status > Logs (source “split-pay”).
  • Added: connect an existing Stripe account to your platform from Split Pay > Connect Status (Stripe Connect OAuth).
  • Added (PRO, WCFM): link a vendor to a Stripe account created outside Split Pay; an optional setting (off by default; Reconcile or Guard only) marks a vendor’s WCFM order line paid once Split Pay’s transfer for it succeeds.
  • Added: vendor payment emails name the products paid for; Platform Status explains what Split Pay does automatically.
  • Changed: advanced transfer options, fee routing, field-value routing and “Reset / reconnect Split Pay accounts” are on the new Advanced tab (the last Split Pay settings tab). Saved settings are unchanged.
  • Important: Retry now also pays orders 3.8.4 left unpaid. If you already paid that vendor yourself in Stripe, don’t retry the order.

Full documentation.

3.8.4

  • Added (PRO): optional Stripe-fee sharing, sequential splits, bulk recipient additions, and WCFM vendor controls.
  • Improved transfer retries, account matching, and settings recovery.
  • Existing settings are preserved; new optional features are off by default. Standard WordPress updates cannot downgrade below 3.8.4.

Full documentation.

3.8.3

  • Fixed: existing sites upgrading from 3.8.0/3.8.1 keep an interactive settings tab – the verified platform identity is backfilled on upgrade from the saved platform key (the same read-only Stripe check “Run readiness check” performs), and “Run readiness check” now persists a verified identity instead of only reporting it. Previously the Global Transfer Settings tab could stay grayed out after the upgrade until the key was saved again.
  • Fixed: re-activating the plugin after an uninstall that kept your data no longer logs “Duplicate column name” database notices; existing table columns are detected before each schema step runs.
  • Compat: WordPress 7.1 compatibility (Tested up to: 7.1).
  • Note: 3.8.3 also contains everything listed under 3.8.2 below – the 3.8.2 candidate was certified but never published.

3.8.2

  • Fixed: new WooCommerce products with an untouched Split Pay row no longer emit PHP warnings, and blank product rows continue to use the global product transfer.
  • Security: Product Add-Ons recipient settings now save only from an authorized group edit; autosaves, unrelated posts, missing fields, and invalid nonces leave the saved recipient unchanged.
  • Improved: background migrations now use the available public Action Scheduler APIs. The verified minimums are WordPress 6.1, WooCommerce 7.9, and PHP 7.4; WooCommerce 10.9 is also verified.
  • Added (PRO): field-value routing – route a product’s transfer to a different connected account based on the value the customer selected for a product field (e.g. WooCommerce Custom Fields, Advanced Product Fields) or a checkout/order-meta field. Configure the field identifier and value account rules on the new Field-value routing card under Global Transfer Settings; split percentages and amounts are never changed, and values without a rule keep the product’s configured account.
  • Fixed: tax routed to vendors from coupon-discounted WooCommerce orders now uses WooCommerce’s post-discount line tax, preventing the pre-discount tax from inflating a split.
  • Fixed: WooCommerce refunds for orders settled in a different currency now size transfer reversals in the settlement currency’s minor units.
  • Fixed: cross-currency transfer notes, vendor emails, failed-payout logs, and Transfers rows now show settlement amounts in the correct currency and minor-unit scale. Mixed transfer batches also remain visibly failed when another recipient was paid successfully.
  • Fixed: FluentCart products whose saved recipient slots are all blank remain eligible for the configured global split instead of silently paying no recipient.
  • Fixed: removing the final connected account from a product or variation now stays removed after Update and reload instead of restoring the previous recipient.
  • Fixed: connected-account database upgrades now reconcile and verify the current schema without rewriting existing merchant routing rows or marking a failed upgrade complete.
  • Fixed: product-settings recovery now restores only one unambiguous, positive WooCommerce product transfer. Legacy, global, add-on, FluentCart, and ambiguous rows can no longer become product routes, including fixed-zero routes that suppress a valid global split.
  • Fixed: WordPress.org language packs now use the plugin directory’s registered text domain so translations can load correctly.
  • Fixed: unavailable multi-account preview controls are now non-interactive in Free and expired-license views.
  • Improved: Connect Status, settings, integrations, and onboarding now use one consistent readiness check. Product-only routing counts as configured, incomplete recipients remain visible with clear warnings, and readiness views no longer contact Stripe.
  • Fixed: Stripe platform keys are now identity- and permission-checked before either settings screen can replace a saved key. Rejected keys and provider errors keep the previous key and state; failed readbacks restore the previous snapshot or show a blocking warning when restoration cannot be confirmed. Key changes, account sync/reset actions, and active transfer/refund work now share a per-site lock so one request cannot mix two generations of platform state. Secret fields now use blank password inputs with accessible reveal controls and clear typed values on every terminal path. Repeated Save Changes clicks can no longer race duplicate settings writes.
  • Fixed: fee-routing rules now save through the Global Transfer Settings page’s single native Save Changes action instead of a separate button that could silently leave the rules unsaved.
  • Fixed: fixed-amount shipping splits on product variations remain effective across 3.8.1 upgrades. Split Pay now keeps the legacy and modern variation amount keys synchronized, while preserving existing 3.8.1 values until each variation is saved again.
  • Fixed: FluentCart transfers now use Stripe’s settlement currency for cross-currency charges, keep global shipping independent from product routing, and retain charge-bound idempotency state through retries. Partial refunds use the current refund amount, and unexpected failures remain safely retryable.
  • Fixed: WooCommerce retries now match already-paid global, product, shipping, and add-on legs across the complete plan before sending new money. Valid same-recipient retries no longer trip a false divergence stop, while a genuinely changed payout remains fail-closed.
  • Fixed: transfer-log amounts now preserve three-decimal currencies such as KWD without truncation. The database upgrade widens all eight money columns in place and verifies the resulting definitions before enabling debt-ledger transactions.
  • Fixed: expired-license and stale admin forms no longer erase stored fixed, shipping, or product-routing values that the browser could not submit. FluentCart bulk edits also preserve fixed shipping when that field was not submitted.
  • Fixed: status/readiness indicators, the Transfers mode switcher, and the Bulk Editor category search now expose accessible contrast, state, and labels in wp-admin.
  • Security: legacy privileged AJAX actions now return HTTP 403 for insufficient permissions and reject invalid nonces explicitly instead of ending with an ambiguous HTTP 200 response.
  • Security: successful transfer emails no longer write full email and order objects to the PHP debug log.
  • Fixed: uninstall now removes every Split Pay option and ephemeral dismissal. Destructive cleanup also removes each opted-in site’s financial tables; shared Split Pay vendor metadata is removed on single-site installs or when every multisite site opts in. Product-level split values remain attached to products.
  • Fixed: “Retry Split Pay Transfers” was blocked on every store running 3.8.1 with “the amount already transferred for this order’s charge could not be verified with Stripe just now.” The retry’s double-pay safety check asked Stripe a question the current Stripe API no longer answers (filtering the transfer list by source charge), so verification failed every time and the fail-safe refused every retry. The check now reads the transfers created since the charge and matches them itself. The fail-safe itself is unchanged: if the already-transferred amount can’t be fully verified, nothing is ever sent.
  • Fixed: an order whose products have no Split Pay recipient configured no longer logs a scary “every transfer attempt failed” note. When there is simply nothing to transfer, the order note now says so plainly and the order is marked processed, so it is never mistaken for a failure or picked up by the auto-retry.
  • Fixed: Dokan Stripe Express orders whose transaction ID is already a Stripe charge can now use Retry Split Pay Transfers without treating that charge as a PaymentIntent. Source-charge limit errors now show charge-headroom guidance unless Stripe explicitly reports a currency mismatch, and only genuine live/test destination mismatches raise the persistent mode-mismatch notice.
  • Fixed: the Dokan vendor Stripe Payouts page now uses Dokan’s standard dashboard wrapper, preventing its content from overlapping the vendor navigation on desktop or mobile.
  • Fixed: when a retry safety stop cannot verify Stripe transfer headroom, every retry attempt fails, or an extension throws unexpectedly, the order remains visibly failed and retryable instead of receiving a false completion note. A running automatic retry can still queue its single deduplicated successor.
  • Fixed: a transfer or reversal delayed by another Split Pay money/settings operation is now recovered through a bounded, deduplicated background retry instead of being silently missed. Replays keep the original idempotency identity, and an incomplete reversal is never marked finished.
  • Fixed: distinct equal-amount FluentCart refunds now use distinct stable reversal identities, so a second legitimate refund cannot be mistaken for a replay of the first.
  • Improved (WCFM Marketplace): with “derive each vendor’s share from their WCFM commission” enabled, a per-vendor commission override entered under WCFM’s “Percent + Fixed” mode with the fixed field left blank is now honored. Previously only the plain “Percent” mode was read, so those vendors fell back to the global/manual percentage and the log warned it could not resolve their rate.
  • Improved (WCFM Marketplace): with automatic product linking enabled, a vendor’s product created or edited from the WordPress admin now links to the vendor’s connected Stripe account even when Split Pay’s product tab is never opened – matching what already happened for products saved from the vendor’s own dashboard. Existing manual splits are never changed.
  • Fixed (WCFM Marketplace): when the WCFM integration is enabled, Guard and Reconcile no longer filter WCFM settings or mark commission rows from a single transfer callback. They block only WCFM’s scheduled and order-status automatic withdrawals. Orders paid by WCFM’s Stripe Split or Wirecard checkout gateway stop Split Pay before any Stripe lookup and persist as a clean no-op, preventing a duplicate payout; manual withdrawals remain available and are disclosed in status.
  • Improved: when the “Retry Split Pay Transfers” safety-stop can’t verify the amount already transferred, the order note now links straight to your Stripe API keys and reminds you to check that the key isn’t restricted (it must be allowed to read Charges and Transfers) – so a restricted key surfaces as an actionable fix instead of an endless “try again.”
  • Improved (WCFM Marketplace): the Integrations status now warns when a connected vendor account hasn’t finished Stripe onboarding (its Transfers capability is off), with a link to your Stripe Connect accounts – so you see it before an order rather than only when a payout is skipped.

3.8.1

  • Fixed: the Connected Stripe Account selector on Global Transfer Settings could show “[object Object]” instead of the business name on some sites (typically sites cloned from a template, or where another plugin loads its own copy of the dropdown library). The name and its Live/Test indicators now render correctly everywhere.
  • Fixed: the Transfer Confirmation email’s “Tax Transfer to” line displayed the product commission percentage instead of the tax transfer percentage – the transferred amount was always correct; only the label was wrong. It now shows the correct percentage (100% when Tax Transfer is set to “All”).
  • Fixed: vendor Stripe accounts connected in Test mode now register in Split Pay. Completing the test-mode connect link records the account immediately, and “Refresh from Stripe” now reads the same keys the connect link used, so a test-connected account no longer stays “Not connected.”
  • Added: a “Reset / reconnect accounts” control so you can clear and re-sync your connected accounts without uninstalling the plugin. “Refresh from Stripe” now also prunes accounts that no longer exist in Stripe, so deleted/phantom accounts disappear cleanly.
  • Fixed: the Connect Status “some vendors aren’t connected in both modes” warning no longer appears on stores that only use Live mode (or only Test) – it now only asks for the modes you actually have a platform key for.
  • Fixed: the vendor onboarding page now shows a clear, actionable message instead of a raw Stripe error (“Connect platforms cannot create new accounts…”) when the saved key is scoped to a connected account rather than a platform account.
  • Fixed: the WCFM “double-pay risk” banner is now mode-aware – it confirms when Guard mode is neutralizing WCFM’s payouts instead of always alarming, and reports WCFM’s true payout configuration. Added a clear notice when the WCFM integration is off but its settings have been changed.
  • Added: set the Connected Account, Transfer Amount and Shipping Transfer Value once at the product level for a variable product and have them applied to every variation automatically – any per-variation values you set still take precedence. Clearer section labeling in the variation editor, and an inline hint when a product’s vendor isn’t connected to Stripe yet.
  • Added: Split Pay now honors a vendor’s WCFM per-vendor commission override (not just membership-tier plans) when the WCFM commission source is enabled.
  • Fixed: an order that WooCommerce auto-cancelled (for example, an unpaid order cancelled by the hold-stock timer) but whose card was charged later now has its vendor split completed, instead of the transfer being silently missed. Paid-but-cancelled orders are also flagged and can be retried manually.
  • Fixed: per-product shipping transfers now apportion the order’s shipping charge across its line items by quantity, so each product routes only its own quantity-weighted share and every item’s share adds up to exactly the shipping you collected – a cent-level correction on orders with more than one line item. The product Shipping Transfer fields now explain how the share is calculated, and the shipping field’s “Global Transfer Value” link label is corrected to “Global Shipping Transfer Value”.
  • Fixed: vendor self-onboarding via the [split_pay_vendor_connect] shortcode and the “Connect with Stripe” button now use the same platform key you save on the Integrations tab. This resolves cases where onboarding failed outright with “Could not start Stripe onboarding” (admin) or a “$config must be a string” error (vendor).
  • Fixed: per-product shipping transfers are now calculated by Split Pay itself instead of depending on a WooCommerce Analytics helper – so stores with the Analytics feature turned off now get the correct per-item shipping share instead of $0.00.
  • Fixed: refunding shipping now reverses the correct portion of each vendor’s shipping transfer. Previously a shipping-only refund could reverse too little (and a goods-only refund too much) because shipping and product transfers were reversed by the same overall ratio.
  • Fixed: line-item refunds now reverse the correct vendor transfer even for WPML/Polylang-translated products, parent-level splits on variable products, and WCML variations – cases where the ordered product differs from the one the split was configured on, which previously could reverse nothing.
  • Fixed: retrying transfers on an order is now double-pay-safe. A retry seeds its ceiling from Stripe’s own record of what was already sent for the charge (rather than the local log, which can under-count), and if a recomputed payout no longer matches what a vendor was already paid, the retry stops before sending anything and leaves an order note to reconcile.
  • Added: when a vendor transfer is planned but can’t be sent – for example a per-product shipping transfer below Stripe’s $1 minimum, or an add-on with no connected account – Split Pay now records the reason in the order notes and shows an honest “N of M transfers sent” badge instead of a green all-clear.
  • Added: a dedicated “split-pay” log under WooCommerce Status Logs (with a “View log” link on the Transfers tab), so transfer activity and any skipped legs are readable even when WooCommerce-Stripe’s own logging is off.
  • Changed: the Stripe webhook status is now verified against Stripe rather than a cached flag, so a store whose webhook endpoint was removed no longer shows a false “configured” checkmark. The Connect Status tab now shows each mode’s webhook health and when its last event was received.
  • Changed: corrected admin guidance that incorrectly implied Stripe fees cap transfers at about 97% of a sale. Split Pay routes transfers on the charge (source_transaction), so up to 100% can go to vendors; the notice now explains this. The genuine over-100% validation error is unchanged.
  • Added: a pre-flight warning when product splits total 100% (or more) while “Adjust transfers for coupons” is off, so a coupon can’t quietly push planned transfers past what the order actually charged. Notice only – payouts are unchanged.
  • Added: optional order-fee routing. Map a WooCommerce order fee by name to a connected account (with a percentage, default 100%) on the Global Transfer Settings tab, and Split Pay routes that fee to the vendor alongside the product splits. Off by default and ignored entirely when unconfigured; negative/zero fees are never transferred; fees route ex-tax.
  • Fixed: “Sync connected accounts” on the Integrations tab now pulls in both your Test and Live vendors in one click whenever you have a key saved for both modes. Previously it only ever looked at the mode your store was currently switched to, so a live store whose vendors had onboarded in test just reported “Synced 0” with no hint that they existed. The result now tells you how many were found in each mode, and if one mode can’t be reached the other still syncs.
  • Added: choose the type of Stripe connected account vendors get when they onboard – Standard (default) or Express – under Vendor Onboarding. Express gives vendors the Stripe-hosted Express Dashboard and suits platforms configured for Express; both use Stripe-hosted onboarding. Existing accounts are unaffected, and developers can select Custom or adjust other supported Accounts v1 creation parameters via the spp_account_create_args filter.
  • Fixed: FluentCart refunds now reverse the vendor’s Split Pay transfers. The refund webhook handler required a payload field FluentCart never sends, so refunds never clawed anything back – the merchant absorbed every refund while the vendor kept their split. Full refunds reverse each transfer in full; partial refunds reverse each vendor’s share of that specific refund (never double-counting earlier partials). If a partial refund’s amount can’t be determined from Stripe, nothing is reversed and an order note tells you to reverse manually – the safe direction.
  • Added: FluentCart chargebacks now reverse vendor transfers automatically. A dispute that withdraws funds reverses each vendor’s share of the disputed amount at creation; a dispute inquiry (no funds withdrawn) only adds a note, and if it later closes as lost the reversal runs then. Winning a dispute leaves an explanatory note. One dispute can never reverse twice, and a re-delivered webhook is ignored.
  • Changed: the webhook buttons are now read-only checks. “Check Webhook” (Stripe Configuration) and the Integrations-tab checks look only for this site’s enabled WooCommerce Stripe endpoint on the selected key. Split Pay no longer adds transfer.* events to any webhook endpoint: nothing consumed them (transfers are order-driven), the Integrations sync edited every endpoint on the Stripe account including other sites’ endpoints, and on WooCommerce Stripe the modification caused the gateway to rebuild its endpoint (rotating the webhook secret) on its next plugin update. Events previously added are harmless and are cleaned up by WooCommerce Stripe itself over time.
  • Fixed: the Connect Status “Last Stripe event received” reading always showed “No events recorded yet” – it read a WooCommerce Stripe option name that has never existed. It now reads the gateway’s real webhook-monitoring timestamps.
  • Fixed: the automatic transfer retry no longer pays vendors on an order that was fully refunded while the retry was waiting. A refunded order now goes through the same charge-payability check as cancelled/failed orders, which refuses to send anything when the charge shows a refund.

3.8.0

Behavior changes when updating – please read before upgrading a live store:
* Transfers now fire for ANY order that carries a Stripe charge from your platform account, whichever Stripe-backed gateway took the payment – previously only the official WooCommerce Stripe gateway and Payment Plugins for Stripe triggered transfers. Charges that are not in your platform account are detected and skipped with a clear order note, so a transfer is never misfired. If you use a third-party Stripe gateway and have been paying those vendors manually, stop after updating – Split Pay handles those orders now.
* FluentCart subscription renewals are now split automatically (details below) – recurring charges pay the vendor their configured percentage with no setting change.
* Per-product shipping transfers and Product Extras (PEWC) add-on transfers now actually fire when configured – both were silently broken in earlier releases. If you configured them in the past, those transfers begin with this update.
* The Transfer Confirmation email (enabled by default, but silently broken since 3.7.0) resumes sending; disable it in settings if you no longer want it.
* The WCFM and Dokan marketplace integrations are fully OPT-IN: nothing changes on a marketplace site until you turn on the integration’s master switch on the Integrations tab.

  • Added: a first-run setup wizard that walks a new install from zero to its first automatic transfer – enter your Stripe platform key, confirm your platform account, sync connected accounts and set a default split, then a readiness check – reachable on activation and from the Get Started links.
  • Added: WCFM Marketplace integration (opt-in – enable it on the Integrations tab) – vendors who register through WCFM are automatically given the Split Pay vendor role, so Stripe Connect onboarding triggers with no admin action and their splits run.
  • Added: a “Connect with Stripe” button right inside the WCFM vendor dashboard, and new vendor products are auto-linked to that vendor’s connected Stripe account (with a one-click back-fill for products created before the vendor connected).
  • Added: optionally drive each vendor’s payout percentage from their WCFM membership tier (transfer % = 100 – the plan’s commission %), resolved automatically at order time and updated whenever a vendor upgrades or downgrades – no per-product edits.
  • Added: a Marketplaces section on the Integrations tab showing WCFM status, how many vendors are connected, products linked, and an always-on double-pay safety check with selectable coexistence modes (warn / reconcile / guard).
  • Added: Vendor Automation (PRO, opt-in) – automatically create a product for each vendor the moment they finish Stripe onboarding, assigned to their connected account at a configurable vendor share percentage. Works hands-off with Name Your Price plugins so customers can pay any amount.
  • Added: Vendor payment QR codes (PRO, opt-in) – each vendor gets a downloadable QR code linking to their product, shown on their dashboard and via the new [split_pay_vendor_qr] shortcode. Generated in the browser, no external services.
  • Added: Transaction emails (PRO, opt-in) – notify the vendor when a transfer to their account succeeds and/or the customer when their money has been sent.
  • Added: Customizable order-received message (PRO, opt-in) for orders containing split-pay products, with a {vendor_name} placeholder.
  • Added: spp_vendor_onboarding_completed and spp_vendor_disconnected action hooks for developers.
  • Improved: every payout Split Pay creates is now tagged in Stripe with metadata (split_pay=1), so the plugin’s own transfers can be identified with certainty during reconciliation and reporting.
  • Fixed: the front-end [split_pay_vendor_connect] flow now confirms onboarding completion when the vendor returns from Stripe – previously vendors kept seeing the “Resume Stripe Onboarding” state until an admin-side sync.
  • Added: visibility for failed vendor bank payouts – if a vendor’s automatic Stripe payout to their bank bounces (closed or invalid account, etc.), Split Pay now records it and lists it on the Platform Status tab so you can ask the vendor to fix their bank details. The transferred funds are not lost (they return to the vendor’s Stripe balance) and Split Pay takes no money action; previously a bounced payout was completely invisible.
  • Added: FluentCart subscription renewals are now split, not just the first order – every recurring renewal charge automatically pays the vendor their configured percentage, using the same per-product split settings already in place. Each renewal is paid exactly once, and PayPal renewals are left untouched.
  • Added: automatic refund reclaim (PRO, opt-in) – when a refund reversal fails because the vendor’s Stripe balance is too low, Split Pay records the unreversed amount as outstanding debt, then deducts it from that vendor’s future transfers until cleared. Balances are shown per connected account, mode and currency on the Platform Status tab, with a one-click write-off; tracking is per-currency and per-mode, idempotent, and never over-charges a vendor. Off by default.
    • Fixed: a single un-renderable transfer record can no longer white-screen the admin. Each row in the Transfers (and other admin) tables now renders inside a safety net – if one row hits an unexpected error it is replaced with a small “could not be displayed” placeholder and logged, while the rest of the table loads normally, instead of taking down the whole page with a fatal.
  • Fixed: on stores running both WooCommerce and FluentCart, a WooCommerce refund could reverse a FluentCart vendor’s transfer when the two platforms’ independent order-id sequences collided on the same number – refund reversals are now strictly scoped to the platform the refund belongs to.
  • Fixed: coupon discounts are now applied to vendor transfers from WooCommerce’s stored, post-discount line totals. Edge cases such as two or more stacked coupons, or a coupon later edited or whose type was translated (e.g. by WPML), can no longer cause a transfer to be computed on more than the discounted amount actually captured.
  • Fixed: orders placed in a secondary language reliably pay the vendor configured on the original product, with an added WooCommerce Multilingual variation-link fallback for cases where WPML’s own resolver isn’t available at order time.
  • Fixed: a genuinely live connected account is no longer mislabeled “TEST-mode account, unavailable in LIVE mode” after upgrading – account modes are now repaired automatically from your own transfer history, with no Stripe key required.
  • Improved (safety): a built-in ceiling guarantees the sum of all vendor transfers for an order can never exceed the captured charge, preventing partial-payout failures from any misconfiguration.
  • Improved: accidental duplicate vendor rows (the same vendor at the same rate on one product or variation) are collapsed when you save, preventing double payouts, with a dismissible heads-up.

3.7.5.1

  • Fixed: orders no longer get stuck in “Pending payment” after a successful card payment – the Stripe payment notification is now matched to the order even before WooCommerce records the charge.
  • Fixed: a refund now reliably reverses the vendor’s payout, including on FluentCart orders.
  • Improved: the Stripe payment-notification handler is more resilient to incomplete or repeated events.

3.7.5

  • Fixed: vendors are never paid – or refunded – twice, even when a payment or refund notification arrives more than once.
  • Added: automatic payout reversal if a delayed bank payment (ACH/SEPA) fails after vendors were already paid.
  • Improved: clearer test-vs-live mode handling, reliable vendor-split saving, and a faster, more dependable Transfers tab.
  • Improved: compatibility with other Stripe plugins, accessibility, security, and complete data cleanup on uninstall (incl. multisite).

3.7.4

  • Fixed: Product Split Pay settings (vendor, percentage / amount, shipping) no longer get silently erased on saves that don’t include the Split Pay tab fields (variable parent save, REST/API saves, third-party product saves, etc.).
  • Fixed: Same erasure protection for product variations; vendor-only variation saves no longer wipe the selected vendor.
  • Added: One-time upgrade migration rebuilds erased product settings from the transfer log (skips products that already have a vendor).
  • Added: Perpetual per-product “Recover Split Pay settings from transfer log” tool on the WooCommerce product Split Pay tab (optional force-overwrite).
  • Fixed: Per-product Recover panel is visible on the Split Pay tab (wrapper no longer uses WooCommerce’s reserved panel class; now spp-recovery-wrap).
  • Fixed: Admin paths no longer fatal with WC_Stripe_Logger::log() when only Payment Plugins’ Stripe gateway is installed.
  • Fixed: Transfers tab no longer fatals when a logged payment method doesn’t map to an active gateway object.
  • Fixed: Saved vendor stays visible …