Laravel Marketplace Stripe Payment Gateway allows the customer to make the payment using Stripe payment.
With the help of this module customer’s payment automatically splits between the seller and the admin.
NOTE:-Before buying this module, you have to visit stripe.com to check whether this payment gateway is available in your country or not.
**Note: “Laravel eCommerce Marketplace Stripe Payment Gateway” is an addon of “Laravel Multi-Vendor Marketplace Extension”.
This addon will work on a Multi-Vendor Marketplace extension-based website.
Check a brief overview of the plugin –
Features of Stripe Connect
- Seller self-onboarding through Stripe Connect OAuth — the seller clicks a button inside the panel and Stripe hosts the whole KYB flow.
- Two payout modes, Manual Payout and Auto Payout, switchable from the admin configuration.
- Admin payout desk — a dedicated Stripe Payment Requests screen with payable order, unpaid total, commission, and unpaid seller stats.
- Single and mass pay — pay one request instantly or queue one transfer job per unpaid request from the mass action.
- Idempotent settlement — the transfer API runs only when no marketplace transaction exists yet, which prevents double payouts on retries.
- Country control — an allow-list blocks sellers from connecting when their country is not listed; leaving it empty permits every transfer-supported country.
- Seller autonomy — sellers connect and revoke Stripe access themselves; revoking stays locked while payout requests are pending.
- Payout visibility for sellers — Stripe orders show as Requested until the admin settles them, and the seller can no longer raise a manual request for such orders.
Requirements
-
- Bagisto: v2.4.x
-
- Marketplace: v2.4.x
Installation
Unzip the extension package and merge the “packages” folder into the project root directory.
Go to the composer.json file and add the following line under ‘psr-4’:
"Webkul\\StripeConnect\\": "packages/Webkul/StripeConnect/src"
Run the following command:
composer dump-autoload
Go to the bootstrap/providers.php file and add the following line inside the array:
Webkul\StripeConnect\Providers\StripeConnectServiceProvider::class,
Run the following commands to complete the setup:
php artisan marketplace-stripe:install
That’s it! Now execute the project on your specified domain.
Stripe Connect Setup
To connect the seller using Stripe Connect, add the following redirect URI in your Stripe account:
PROJECT_URL/marketplace/stripe/connect/retrieve/token
Webhook Setup
Set up webhooks in Stripe:
- Test Mode: https://dashboard.stripe.com/test/workbench/webhooks
- Live Mode: https://dashboard.stripe.com/workbench/webhooks
- Add a new destination
- Select events:
-
- payment_intent.canceled
-
- payment_intent.succeeded
-
- Select Webhook endpoint
Set the webhook URL as:
https://your_domain/api/stripe/webhook/payment-intent
Copy the signing secret and set it in:
Admin → Configuration → Sales → Payment Methods → Payment Intent Webhook Secret
How To Get The API Keys from the Stripe
To get the API Keys you can use Stripe website. First you’ll need to Sign in to the stripe account.
Go to https://dashboard.stripe.com/login then enter your login details.
Step 1:- From the left sidebar, click on Developers >> API Keys to get your Publishable Key and Secret Key. You can toggle between Test Mode and Live Mode as required.
Step 2:- Copy the Publishable Key (pk_test / pk_live) and Secret Key (sk_test / sk_live) from the API Keys section.
Step 3:- Now click on Settings >> Connect >> Settings. Here you will find your Client ID.
Step 4:- In the same Connect Settings page, scroll to the Redirect URLs section and add your redirect URL like https://example.com/marketplace/stripe/connect/retrieve/token. Make sure the URL matches exactly.
Step 5:- Ensure that OAuth for Standard Accounts is enabled in the Connect settings if you are using Stripe Connect.
StripeConnect Bagisto Configuration
The module inherits the standard Stripe gateway section from the admin package (Status, Title, Description, Logo, API keys, Sandbox toggle, Sort order) and appends the three marketplace payout fields onto it. The image below shows the whole Stripe block as rendered in our running demo.

Client ID
This text field holds the Client ID of your Stripe Connect platform (ca_...). It is not channel based, so one value applies to the whole store. Both the admin payout routes and the seller onboarding route depend on it. When the field is empty, the seller panel shows “Client ID not set by admin” instead of the Connect button.
Payout Mode
The Payout Mode select toggles between Manual Payout and Auto Payout. In manual mode the invoice listener creates a payment request per connected seller and the admin settles it from the payment request screen. In contrast, autopay removes the admin’s clicking entirely — the transfer fires the instant the invoice saves and the request flips to paid. Manual is the default.
Allowed Seller Countries
The multiselect uses Stripe’s CountrySpec data to list every country the platform can transfer to. Choose the countries whose sellers may connect — the connect button hides for sellers outside the list and shows a “not supported in your country” note. Leaving the field empty allows all transfer-enabled countries.
Step-by-Step Configuration Walkthrough
- First, log in to the admin panel and open Sales → Payment Methods.
- Next, mark the Stripe method as Active and fill in its Title, Description, and logo.
- Then, toggle the Sandbox switch and paste the matching test or live Secret Key and Publishable Key.
- Afterwards, paste your Stripe Connect platform Client ID into Client Id.
- Next, choose Manual Payout or Auto Payout from the Payout Mode dropdown.
- Then, pick the Allowed Seller Countries or leave the field empty for unrestricted access.
- Finally, save the form and confirm the new fields appear at the bottom of the Stripe block.
Stripe Connect Admin View
The module adds a Marketplace → Sales → Stripe Payment Requests screen. With that in mind, here is how the settlement desk looks in our demo: four statistics cards — Payable Orders, Unpaid, Total Commission, and Unpaid Sellers — lead the page, and a datagrid follows with every request joined to the order, marketplace order, transaction, and seller record. Each row shows order ID, date, order status, customer name and email, gross amount, seller total invoiced, seller, shop, and the amount already paid.
Stripe Payment Requests

Step-by-Step Guide
- First, expand Marketplace → Sales in the admin sidebar and open Stripe Payment Requests.
- Next, read the stats cards to gauge how many payouts are waiting and how much commission the settlement already earned.
- Then, scan the grid rows — paid requests show the Already Paid label, unpaid ones show a Pay button.
- After that, track an order to its detail page with the view icon when you need the original invoice.
- Finally, filter or sort by date, status, customer, seller, or shop to narrow the backlog.
Paying a Single Request
The Pay action on an unpaid row runs the payout synchronously, so the admin receives immediate feedback. The payout job verifies the request still shows To Pay, finds the matching marketplace order, then creates a real Stripe Transfer to the seller’s connected account and records the seller transaction in the same pass. Consequently, the transaction row appears only after the transfer completes. The screenshot below shows the green “Payment transfer successfully” toast right after settling the request for order SC100002.

Step-by-Step Guide
- First, open Stripe Payment Requests and find the row whose status still shows To Pay.
- Next, click Pay on that row.
- Then, wait for the Stripe transfer to complete against the seller’s linked account.
- Finally, confirm the success toast and the Already Paid label on the row, plus the transaction recorded on the order page.
Mass Payout
Instead of paying row by row, select several unpaid requests and hit the Pay mass action. The mass pay endpoint queues one ProcessStripePayout job per unpaid request, and a response previews the number of queued transfers before the queue worker starts.
Step-by-Step Guide
- First, tick the checkboxes of every unpaid payment request you want to settle.
- Next, click the Pay button from the mass actions toolbar.
- Then, confirm the message that reports how many transfers were queued.
- Finally, let the queue worker run the one-transfer-per-job scripts, then refresh the grid to see the paid labels.
Stripe Connect Seller View
Connecting a Stripe Account
Sellers reach their onboarding surface from Settings → Stripe Connect inside the seller panel. Similarly, control stays entirely on the seller: a Connect With Stripe button opens the Stripe Connect hosted authorization, the callback exchanges the code for an access token, and the module stores the publishable key plus the connected account ID. The screenshot below is the fresh, not-yet-connected screen of a demo seller.


Step-by-Step Guide
- First, sign in to the seller panel and open Settings → Stripe Connect.
- Next, make sure the admin enabled Stripe and set a client ID; otherwise the notice explains why the button is missing.
- Then, click Connect With Stripe and complete the Stripe-hosted onboarding for your account.
- Afterwards, return to the panel — the callback stored your access token and account ID, and the screen flips to the connected state.
- Finally, go back to selling; the platform now captures your payout share from Stripe orders automatically.
Connected Account & Revoking Access
Once connected, the same screen exchanges the Connect button for a Revoke Your Stripe Accounts Access button plus a storefront-style confirmation. Meanwhile, the guarded revoke flow protects both sides: sellers with pending payout requests cannot revoke — the button disables and the helper message explains that the control stays locked while payment requests are pending, so the platform can still settle owed money.

Step-by-Step Guide
- First, reopen Settings → Stripe Connect to review the connected state.
- Next, check the revoke button — a disabled one plus a pending-payout message means the platform still owes you money.
- Then, click Revoke Your Stripe Accounts Access when no requests are pending.
- Finally, confirm the confirmation prompt, then watch the deauthorization call remove the stored seller token.
Payout Status in the Seller Orders Grid
Stripe orders behave differently from normal marketplace orders on the seller side. Therefore, the seller grid communicates settlement state clearly: a completed Stripe order whose transfer has not yet settled shows its payout as Requested, and the seller cannot press any “request payment” action because the admin already claims that transfer on the seller’s behalf. The screenshot below shows the seller order grid with the two awaiting rows flagged Requested.

Step-by-Step Guide
- First, open Orders in the seller panel.
- Next, look for the rows carrying the Requested payout label — those are completed Stripe orders awaiting settlement.
- Then, check whether the Request Payment action is missing for those rows; the module suppressed it on purpose.
- Finally, wait for the admin to settle the request, after which the order shows as paid.
Conclusion
Ultimately, StripeConnect Bagisto turns a single Stripe account into a full split-payout engine. Sellers connect once through hosted onboarding, orders feed payout requests automatically, and the admin settles them with real transfers — one at a time or in bulk — while an idempotency guard keeps every payout unique. The seller grid keeps everyone informed with the Requested status, and country controls make the feature safe to roll out across regions. If you are growing a marketplace on Bagisto and want payouts to feel native, this module is the missing link between checkout and seller trust.
Hope it will be helpful for you or if you have any issue feel free to raise a ticket at https://bagisto.uvdesk.com/en/
Current Product Version - v 2.4.9
Supported Framework Version - Bagisto v2.4.9
Be the first to comment.