=== Split Pay – Stripe Connect Split Payments & Multi-Vendor Marketplace for WooCommerce & FluentCart ===
Contributors: gauchoplugins, brandonfire, freemius
Donate link: https://splitpayplugin.com
Tags: stripe connect, split payments, multi-vendor marketplace, vendor payout, woocommerce marketplace
Requires at least: 5.2.3
Tested up to: 7.0
Stable tag: 3.7.5
Requires PHP: 7.4
License: GPLv3
License URI: https://www.gnu.org/licenses/gpl-3.0

Split payments between multiple Stripe Connected Accounts using Stripe Connect. Works with WooCommerce and 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 multiple e-commerce platforms including **WooCommerce** and **FluentCart**, with support for multiple Stripe payment gateways per platform. Whether you're building a multi-vendor marketplace, managing supplier payments, running an affiliate storefront, or sharing revenue with business partners, Split Pay handles the entire payment splitting workflow so you can focus on growing your store.

### How It Works

Split Pay uses the **Stripe Connect Transfers API** to automatically route a percentage or fixed amount of every sale to one or more connected Stripe accounts. It integrates with the Stripe payment gateway configured in your e-commerce platform — transfers appear in the Stripe Dashboard and are fully trackable from your WordPress admin.

### Supported Platforms & Gateways

* **WooCommerce** with [WooCommerce Stripe Payment Gateway](https://wordpress.org/plugins/woocommerce-gateway-stripe/) (official)
* **WooCommerce** with [Payment Plugins for Stripe WooCommerce](https://wordpress.org/plugins/woo-stripe-payment/)
* **FluentCart** with FluentCart's built-in Stripe integration

Each gateway is configured independently on the Integrations tab with its own platform secret keys, webhook syncing, and connected account management.

### 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](https://wordpress.org/plugins/woocommerce/) or [FluentCart](https://fluentcart.com/)
* A Stripe payment gateway plugin configured for your chosen platform
* Your Stripe platform secret key (entered in the Integrations tab per gateway)
* Minimum transfer amount of $1 per Stripe limitations
* Transfers between Stripe accounts in the same country/region (cross-border support coming soon)

---

## 🆓 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 payment is automatically divided — no manual payouts required. Works with WooCommerce and FluentCart.

### 💱 CURRENCY AGNOSTIC PAYMENTS
Accept payments in any currency supported by Stripe. Split payment calculations happen automatically regardless of your store currency — USD, EUR, GBP, AUD, CAD, and 100+ more.

### 🔧 INTEGRATIONS TAB WITH GUIDED SETUP
The Integrations tab auto-detects your installed e-commerce plugins and Stripe gateways. Configure platform secret keys, sync webhooks, and manage connected accounts per gateway — all from one place. Supports WooCommerce (two Stripe gateways) and FluentCart simultaneously.

---

## ⭐ PRO Features

### 🔀 SPLIT PAYMENTS ACROSS MULTIPLE VENDOR ACCOUNTS
Split payments across multiple connected Stripe accounts simultaneously. Onboard unlimited vendors, suppliers, or service providers and configure individual transfer amounts for each connected account. Works with both WooCommerce and FluentCart orders.

### 🏢 VENDOR ONBOARDING & SELF-REGISTRATION
Invite vendors directly or let them self-register through a dedicated vendor registration page. Vendors connect their Stripe account to your platform with a single click — no technical configuration needed. Assign any WordPress user role as a vendor role for maximum flexibility.

### 🔍 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%. Fine-grained commission control for every product in your catalog — available for both WooCommerce products and FluentCart products.

### 📊 GLOBAL & PRODUCT-LEVEL FIXED AMOUNT TRANSFERS
Configure fixed transfer amounts globally or per product. Transfer $5 from every sale, or set $10 for Product X and $25 for Product Y. Mix and match with percentage-based splits across your store.

### 🃏 COMBINE PERCENTAGES AND FIXED AMOUNTS
Use percentage-based commissions for some products and fixed-amount payouts for others — all in the same store. Transfer $10 from Product X sales and 25% from Product Y sales simultaneously.

### 🍒 VARIABLE PRODUCT SUPPORT
Full support for WooCommerce variable products. Set unique transfer values, transfer types, and connected accounts for each product variation. Percentages and fixed amounts can be combined across variations.

### 🔁 WOOCOMMERCE SUBSCRIPTIONS SUPPORT
Fully compatible with the official [WooCommerce Subscriptions](https://woocommerce.com/products/woocommerce-subscriptions/) plugin. Every recurring subscription payment automatically triggers the same split payment transfer — so recurring revenue is shared with your connected vendors or partners on every billing cycle.

### 🚢 SHIPPING FEE TRANSFERS
Transfer a percentage or fixed amount of shipping fees to connected vendor accounts. Ideal for marketplaces where vendors handle their own product fulfillment and shipping.

### 💸 TAX TRANSFERS
Transfer 100% of collected taxes to connected vendor accounts, or transfer partial taxes proportionally based on product-level transfer values. Full control over how tax revenue is distributed.

### 💳 ALL STRIPE PAYMENT METHODS SUPPORTED
Works with every payment method available through your Stripe gateway — credit cards, debit cards, Apple Pay, Google Pay, SEPA, iDEAL, Bancontact, and more. Supports the official WooCommerce Stripe Payment Gateway, Payment Plugins for Stripe WooCommerce, and FluentCart Stripe. Deferred payment methods automatically wait for settlement before transferring.

### ↩️ AUTOMATIC REFUND HANDLING
When a refund is processed in WooCommerce, Split Pay automatically reverses the proportional transfer amounts to each connected vendor account. Supports both full and partial refunds with detailed order notes.

### 🔄 RETRY FAILED TRANSFERS
Encountered a failed transfer? Use the "Retry Transfers" order action to reprocess transfers directly from the order edit screen. No need to manually recreate transfers in Stripe.

### 📃 TRANSFER DASHBOARD & CSV EXPORT
The Transfers tab in your WordPress admin displays a complete history of all split payment transactions across all integrations. Filter by source (WooCommerce / FluentCart), search, paginate, and export to CSV for accounting, reporting, or reconciliation.

### ⏩ HIGH-PERFORMANCE ORDER STORAGE (HPOS) COMPATIBLE
Fully tested and compatible with WooCommerce High-Performance Order Storage. Rest assured that all your split payment transfers work reliably at scale with the latest WooCommerce architecture.

### 🕜 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 with source identification. Filter by category, product name, SKU, or attributes — then update transfer values and connected accounts in bulk.

### ✉️ TRANSFER CONFIRMATION EMAILS
Automatically send transfer confirmation emails detailing every split payment amount, links to transfers in the Stripe Dashboard, and any failures that occurred. Keep stakeholders informed on every transaction.

### 🛡️ ROBUST SETUP VALIDATION
API key format validation, incomplete configuration warnings, high transfer percentage alerts (97%+), and connected account country mismatch detection. Catch configuration issues before they affect your payments.

### 🔌 DEVELOPER-FRIENDLY WITH HOOKS & FILTERS
Extensive WordPress filter hooks for customizing transfer behavior — modify transfer metadata, override connected accounts, adjust calculations, and integrate with custom workflows. Full documentation available for developers.

---

### 🌱 [WEBSITE & PRICING](https://splitpayplugin.com/)
### 📕 [DOCUMENTATION](https://docs.splitpayplugin.com/)
### 💬 [SUPPORT](https://wordpress.org/support/plugin/bsd-woo-stripe-connect-split-pay/)

---

### Compatibility

* **WooCommerce** — Full integration with WooCommerce orders, products, and admin
* **FluentCart** — Full integration with FluentCart orders, products, and SPA admin
* **WooCommerce Stripe Payment Gateway** — Official Stripe gateway for WooCommerce
* **Payment Plugins for Stripe WooCommerce** — Alternative Stripe gateway for WooCommerce
* **FluentCart Stripe** — FluentCart's built-in Stripe payment integration
* **WooCommerce Subscriptions** — Recurring split payments for subscription products
* **WooCommerce HPOS** — High-Performance Order Storage fully supported
* **WooCommerce Bundles** — Split payments work with bundled products
* **Advanced Product Fields** — Compatible with custom product field plugins
* **WordPress Multisite** — Supports multisite installations

---

### Roadmap:

* Cross-border Stripe Connect transfer support (currently same country/region only).

---

## GAUCHO PLUGINS PORTFOLIO

**[Payment Page](https://wordpress.org/plugins/payment-page/)**: Start accepting payments in a beautiful payment form in less than 60 seconds

**[Split Pay Plugin](https://wordpress.org/plugins/bsd-woo-stripe-connect-split-pay/)**: Split WooCommerce payments across multiple connected Stripe accounts. 

**[Login for Stripe Customer Portal](https://wordpress.org/plugins/login-stripe-customer-portal/)**: Create an Account login area for your Stripe customers. 

**[Gyta Buyback](https://wordpress.org/plugins/gyta-buyback/)**: Create a trade-in / buyback business using WooCommerce. 

**[Version Info](https://wordpress.org/plugins/version-info/)**: Show WP, PHP, MySQL & Web Server Versions in the WP-Admin Dashboard.

**[China Payments Plugin](https://wordpress.org/plugins/wp-stripe-global-payments/)**: Accept WeChat Pay and Alipay payments from Chinese customers.   

**[Blocked in China](https://wordpress.org/plugins/blocked-in-china/)**: Check if your website is available in the Chinese mainland.  

**[Speed in China](https://wordpress.org/plugins/speed-in-china/)**: Check your website’s speed in the Chinese mainland.
== Installation ==

1. Upload `bsd-split-pay-stripe-connect-woo.zip` through the **Plugins > Add New > Upload** menu in WordPress.
2. Click **Activate** to enable the plugin.
3. Navigate to **Split Pay > Integrations** to configure your gateway settings.
4. For each detected Stripe gateway, enter your platform secret key (test and/or live) and click "Sync Connected Accounts."
5. Go to **Split Pay > Global Transfer Settings** to add connected accounts and set your global transfer percentage or fixed amount.
6. Process a test payment to verify your split payment configuration.
7. Check out our [documentation](https://docs.splitpayplugin.com) for detailed setup guides and configuration options.

== Frequently Asked Questions ==

= 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 automatically transferred to the connected vendor account(s).

= 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 with the [WooCommerce Stripe Payment Gateway](https://wordpress.org/plugins/woocommerce-gateway-stripe/), WooCommerce with [Payment Plugins for Stripe WooCommerce](https://wordpress.org/plugins/woo-stripe-payment/), or [FluentCart](https://fluentcart.com/) with its built-in Stripe integration. You can run multiple platforms and gateways simultaneously.

= 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. With the Pro version, you can onboard multiple vendors, allow them to self-register and connect their Stripe accounts, set product-level commissions, and automatically split every payment across vendor accounts.

= What payment methods are supported for split payments? =

Split Pay supports every payment method available through your Stripe gateway, including credit cards, debit cards, Apple Pay, Google Pay, SEPA Direct Debit, iDEAL, Bancontact, and more. It works with the official WooCommerce Stripe Payment Gateway, Payment Plugins for Stripe WooCommerce, and FluentCart Stripe. Deferred payment methods automatically wait for settlement before the transfer is processed.

= 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.

= Can I set different commission rates for different products? =

Absolutely. With Split Pay Pro, you can set transfer percentages or fixed amounts globally and then override them 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 WooCommerce store? =

Vendors can self-register through a dedicated vendor registration page or be invited by the store admin. Once registered, vendors see a "Connect with Stripe" button on their dashboard page. Clicking it initiates the Stripe Connect onboarding flow — no technical setup required from the vendor. You can assign any WordPress user role as a vendor role.

= Does Split Pay handle refunds automatically? =

Yes. When you process a full or partial refund in WooCommerce, Split Pay Pro automatically calculates the proportional transfer amount and reverses it from each connected vendor account. Detailed notes about the reversal are added to the order for a complete audit trail.

= What happens if a transfer fails? =

If a transfer fails due to a Stripe error or configuration issue, Split Pay logs the failure and adds a note to the order. With Pro, you can use the "Retry Transfers" order action to reprocess failed transfers directly from the order edit screen — no need to log into the Stripe Dashboard.

= 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. You can also transfer 100% of collected taxes or distribute taxes proportionally based on each product's transfer value — giving you full control over how fees and taxes are shared with vendors.

= 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). Whether you're using the legacy post-based storage or the new HPOS tables, split payments work reliably.

= Can I export my transfer history? =

Yes. 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.

= What is the minimum transfer amount? =

The minimum transfer amount is $1 (or equivalent in your currency), which is a limitation set by Stripe. Transfer amounts below this threshold cannot be processed.

= Can I split payments to Stripe accounts in different countries? =

Currently, Stripe Connect transfers can only be made between accounts in the same country or region, though payments can be accepted in any Stripe-supported currency. Cross-border transfer support is on our roadmap for a future release.

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

Yes. Split Pay Pro includes a spreadsheet-style bulk editor that lets you filter products by category, name, SKU, or attributes, and then update transfer values and connected accounts for multiple products at once. It's designed for stores with hundreds or thousands of products.

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

Yes. Split Pay is compatible with WooCommerce Bundles and supports simple, variable, and third-party product types. For FluentCart, it supports all FluentCart product types including products with multiple variations. The plugin integrates at the order level, so it works with most product configurations.

= Can I use multiple Stripe gateways at the same time? =

Yes. Split Pay supports running multiple Stripe gateways simultaneously. For example, you can have the official WooCommerce Stripe Payment Gateway and Payment Plugins for Stripe WooCommerce both active, along with FluentCart's Stripe integration. Each gateway is configured independently with its own platform secret keys on the Integrations tab.

= Does Split Pay work without WooCommerce? =

Yes. As of v3.7.0, 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.

= 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](https://docs.splitpayplugin.com/). For plugin support, visit the [WordPress.org support forum](https://wordpress.org/support/plugin/bsd-woo-stripe-connect-split-pay/).

== Screenshots ==

* Multiple Connected Accounts — Split payments across multiple vendor Stripe accounts
* Product-level Transfers — Set unique commission rates per product
* Transfer Shipping Fees — Route shipping revenue to vendor accounts
* View Transfers — Track all split payment transactions in your WordPress admin
* Onboarding Vendors — Vendors connect their Stripe account with one click

== Changelog ==

= 3.7.5 =
* Fixed: vendors are never paid — or refunded — twice, even when a payment or refund notification arrives more than once.
* Fixed: orders no longer get stuck in "Pending payment" after a successful card payment.
* Fixed: a refund now reliably reverses the vendor's payout, including on FluentCart orders.
* 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, a faster Transfers tab, a more resilient payment-notification handler, plus 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 on the product tab even when the account isn't in the synced-accounts list (orphan option shown).
* Fixed: Migrations no longer warn/fatal under wp-cron or CLI on some hosts.

= 3.7.3 =
* Fixed: `WC_Stripe_Logger::log()` fatals on Payment Plugins-only sites (namespaced 3.7.0 code paths now guarded).
* Fixed: Percentage splits on Name Your Price / customer-chosen-price orders use the paid line subtotal, not the catalog base price.
* Fixed: Vendor selection on the product Split Pay tab persists when percentage and amount are left empty.
* Fixed: Transfers tab empty while Stripe transfers succeeded (`stripe_mode` and related columns now written; `migration-373` backfills 3.7.0+ rows).

= 3.7.2 =
* Fixed: Removed blocking "above 97%" confirm popup on product save (could cancel saves).
* New: 97% / 100% aggregate transfer warnings show as dismissible admin notices instead.

= 3.7.1 =
* Compat: Tested up to WordPress 7.0.
* Fixed: `WC_Stripe_Logger::log()` fatals on Payment Plugins-only sites (legacy class paths guarded).

= 3.7.0 =
* New: FluentCart support.
* New: Integrations tab (per-gateway keys, webhook sync, account sync).
* New: Top-level Split Pay admin menu.
* New: Payment Plugins for Stripe WooCommerce gateway support.
* New: `[split_pay_vendor_connect]` vendor onboarding shortcode.
* New: Delayed Transfers (PRO) — hold transfers until order is Completed.
* New: Transfer log source column (WooCommerce / FluentCart).
* New: `spp_integrations`, `spp_register_integrations`, `spp_product_data_tab_classes` hooks.
* Improved: Activates with FluentCart only (WooCommerce not required).
* Improved: Shared connected accounts across integrations; unified TransferEngine for WC shipping/tax/product transfers.
* Fixed: Multi-account global percentage math restored to pre-3.7.0 behaviour.
* Fixed: Activation no longer requires the official WooCommerce Stripe gateway.
* Fixed: Transfer order notes use the order currency symbol.

= 3.6.4 =
* Fix webhook sync failing when stored endpoint IDs are stale, deleted, or mode-mismatched.
* Added URL-based fallback to find the correct webhook endpoint automatically.
* Fixed scoping bug with API key in live mode webhook sync path.

= 3.6.3 =
* Fix to multiple product transfers.
* Fix PEWC (Product Extra Options) transfer to use instance-based Stripe client.
* Freemius update.

See our full changelog in our [documentation](https://docs.splitpayplugin.com/support/changelog).
== Upgrade Notice ==

= 3.7.4 =
Critical stability + data-loss-prevention release. Fixes a long-standing class of bug that silently erased product Split Pay settings (vendor + percentage/amount + shipping) on product saves that didn't include the SPP tab's fields — affects simple products AND product variations AND every release from 3.7.0 back through earlier 3.6.x. Includes an automatic one-time recovery migration that reconstructs erased settings from the transfer log for every product that ever had a successful Stripe transfer, a perpetual per-product Recover button on every product Split Pay tab for on-demand future recovery, and closes the last 18 admin `\WC_Stripe_Logger::log()` call sites that could fatal under Payment Plugins' Stripe gateway. Strongly recommended for all 3.6+ installs.

= 3.7.3 =
Fixes a 3.7.2 fatal on sites using Payment Plugins' Stripe gateway, a Name-Your-Price percentage calculation regression, a vendor-save regression on the product Split Pay tab, and a Transfers admin tab visibility regression introduced in 3.7.0. Strongly recommended for all 3.7.x users.
