Laravel eCommerce Multi-Tenant Marketplace Table Rate Shipping module allows every tenant and their sellers to set custom superset rates and shipping rates from their own dashboard.
First, Multi-Tenant Marketplace Table Rate Shipping calculates the shipping from the destination country, region, zip code and product weight.
Moreover, every seller in the cart contributes their own share of the shipping cost.
Every superset, superset rate and shipping rate belongs to the tenant company that created it. As a result, one tenant never sees or uses the shipping data of another tenant.
Moreover, the module builds straight on the Laravel eCommerce Marketplace seller structure of Bagisto.
In addition, the tenant and the seller can both upload shipping information through CSV files, including product weight, zip code range, price, alphanumeric zip codes and shipping type.
This plugin works as an add-on for the Laravel e-Commerce SaaS Multi Vendor Module and the Laravel eCommerce SaaS module, so install both of them first.
Features of Multi-Tenant Marketplace Table Rate Shipping
The Multi-Tenant Marketplace Table Rate Shipping module offers the following features.
Tenant Features
- Every tenant company manages its own supersets, superset rates and shipping rates, so no tenant ever touches the data of another tenant.
- The tenant enables or disables the shipping method per sales channel from the configuration settings.
- Also, the tenant creates superset methods, that is, the shipping method groups, with a code, a name and a status.
- The tenant adds superset rates from the cart price range, either for themselves or for any seller.
- In addition, the tenant adds shipping rates from the country, region, zip code and weight range.
- The tenant also uploads a shipping CSV file on behalf of the sellers, simply by entering the seller id in the file.
- Both the tenant and the seller download the same sample CSV file before they start.
- Moreover, the tenant exports the shipping rate, superset and superset rate grids straight from the back-end.
- The grids support search, sort, filter, mass delete, and a mass status update for supersets.
- Finally, the admin ACL and seller ACL permissions control the access to every screen.
Seller and Checkout Features
- The sellers add superset rates and shipping rates for their own products from the seller dashboard.
- Sellers also add their shipping rates through a CSV import for table rates.
- The module calculates the shipping from the country, region, zip code and weight of the products of the seller.
- It then splits the shipping cost per seller, so every seller receives their own share of the shipping amount.
- Because the module combines one matched rate per item, a cart that carries products from several sellers still ships in one go.
- The tenant charges the shipping per unit or per order, and picks the type from the configuration.
- Table Rate Shipping supports both numeric zip code ranges and alphanumeric zip codes.
- During the checkout, the shipping rates populate from the CSV that the tenant or the seller uploaded.
- However, the module rejects overlapping and invalid weight ranges on create, update and CSV import.
- Finally, the seller confirms the order, creates an invoice and sets the tracking id for the order.
Installation of Multi-Tenant Marketplace Table Rate Shipping
Bagisto Version: v2.4.9
Marketplace Version: v2.4.9
Module Version: v2.4.9
Note: First install the Laravel eCommerce SaaS, Laravel eCommerce SaaS Multi Vendor and Marketplace Table Rate Shipping modules, because this module extends all three of them.
Note: Also, follow this Multi-Tenant Marketplace Table Rate Shipping guide for the installation exclusively, and skip the instructions of the Marketplace Table Rate Shipping README.
Step 1: Extract the Package
First, extract the downloaded extension package.
Then merge the packages directory into the root directory of your Bagisto project.
Step 2: Register the Service Providers
Next, open the following file: bootstrap/providers.php
Then add the following service providers inside the providers array.
Webkul\MarketplaceTableRateShipping\Providers\MarketplaceTableRateShippingServiceProvider::class, Webkul\MpTableRateShippingSaas\Providers\MpTableRateShippingSaasServiceProvider::class,
Note: Register the SaaS provider after the base Marketplace Table Rate Shipping provider, because it overrides the base models and the shipping helper on top of it.
Step 3: Configure Composer Autoload
After that, open the composer.json file.
Under the psr-4 section, add the following namespaces.
"Webkul\\MarketplaceTableRateShipping\\": "packages/Webkul/MarketplaceTableRateShipping/src", "Webkul\\MpTableRateShippingSaas\\": "packages/Webkul/MpTableRateShippingSaas/src"
Now regenerate the autoload files of Composer.
composer dump-autoload
Step 4: Register the Module With Concord
Bagisto registers every package in two places. Next, open the config/concord.php file.
Then add the module service provider of the base package inside the modules array.
Webkul\MarketplaceTableRateShipping\Providers\ModuleServiceProvider::class,
Note: This entry registers the superset, superset rate and shipping rate models with Concord.
Consequently, the multi-tenant module can swap those models for its own company aware versions.
Step 5: Install the Module
Finally, execute the following Artisan command.
php artisan mp-tablerate-shipping-saas:install
The command first runs the base Marketplace Table Rate Shipping migrations.
Then it runs the multi-tenant migrations that add the company column to the superset, superset rate and shipping rate tables.
After that, it publishes the module resources and clears the application cache.
Step 6: Seed the Demo Data (Optional)
The module also ships tenant aware demo data.
In short, the seeder creates five supersets, four price based superset rates and a set of zone and weight based shipping rates for every tenant and for each of its sellers.
php artisan db:seed --class="Webkul\MpTableRateShippingSaas\Database\Seeders\DatabaseSeeder"
Moreover, the seeders stay additive and idempotent. They never truncate a table, so a run on an existing store leaves the rates that you already configured there in place.
You can also seed a single tenant by passing its company id to the seeder.
That’s it, now just execute the project on your specified domain or entry point.
Super Admin Configuration for Multi-Tenant Marketplace Table Rate Shipping
After the installation of Multi-Tenant Marketplace Table Rate Shipping, the super admin can navigate to:
Super Admin Panel → Configure → Sales → Shipping Methods → Marketplace Table Rate Shipping
This section only informs, because it holds two read only fields:

- Version – shows the installed version of the module.
- Info – describes the module as the multi-tenant SaaS table rate shipping extension for Bagisto.
Note: The super admin does not manage the operational settings of the shipping method. Instead, every tenant enables and configures the method inside its own store, as the next section shows.
Tenant Configuration of Multi-Tenant Marketplace Table Rate Shipping
To configure Multi-Tenant Marketplace Table Rate Shipping, the tenant can navigate to:
Admin Panel → Configure → Sales → Shipping Methods → Marketplace Table Rate Shipping
Then the tenant fills in the configuration:

- Title: Here the tenant defines the title for the shipping method. Of course, the tenant must fill it in whenever the method stays enabled.
- Description: Enter the description that the checkout shows with the shipping method.
- Type: Here the tenant selects the shipping type from the dropdown, either Per Unit or Per Order. Per Unit multiplies the matched rate by the item quantity, while Per Order charges the matched rate once for the item.
- Status: Finally, update the module status to enable or disable it.
Note: The Title, Description and Type settings work per channel, and the Title and Description also work per locale. Therefore, the tenant can configure them separately for every channel and language.
Note: While the status stays disabled, neither the tenant nor the seller can reach the table rate shipping screens, and the method never appears at the checkout.
Now the tenant can manage the table rate shipping for the marketplace sellers from the Table Rate Shipping menu, as the below image shows.
In short, the menu holds Supersets, Superset Rates and Shipping Rates.

Note: Each of these three screens carries its own ACL permission, and so do the create, edit and delete actions inside them.
As a result, a tenant can grant a staff role the access to only a part of the module.
Multi-Tenant Marketplace Table Rate Shipping Supersets
First, the tenant adds the superset methods under Multi-Tenant Marketplace Table Rate Shipping.
In other words, a superset groups the shipping methods that both the tenant rates and the seller rates attach to.

After clicking on the Add Superset button, the following page appears.
Here, the tenant fills in the general settings:

- Code: Here the tenant sets the code of the superset. It takes up to 20 characters, and it must stay unique.
- Name: Enter the name of the superset. The customer then sees this name as the shipping method title at the checkout.
- Status: Enable it to activate the superset, because the rate forms only list the active supersets.
Lastly, the tenant saves the superset with the Save Superset button.
As the below image shows, the tenant finds the list of all supersets here. The grid lists the ID, Code, Name and Status of each superset, and every column supports search, sort and filter.

By selecting a superset, the tenant can easily update or delete it from the drop-down.
Moreover, the tenant can select several supersets together to activate them, deactivate them, or delete them in one action, and then export the grid.
Superset Rates
After the tenant adds the superset methods, they add the superset rates under the Superset Rates section.
A superset rate charges the shipping from the cart price range, so it never looks at the weight or the zip code.

After clicking the Add Superset Rate button, the following page appears.
Then the tenant fills in the superset rate details as follows:

- Price From – Set the minimum price of the cart to use this shipping set.
- Price To – Set the maximum price of the cart for this shipping set.
- Superset Method – Select the superset that this rate belongs to. Of course, the dropdown lists only the active supersets.
- Shipping Type – Select the Fixed option to enter the shipping price, or select the Free option to allow free shipping.
- Seller Name – Either select the seller name or the admin, so the tenant can create the rate on behalf of any of their sellers.
- Price – Set the shipping method price for this set. The Fixed type needs a price, while a price of zero saves the rate as Free.
The superset rate grid lists the ID, Price From, Price To, Shipping Type, Shipping Method, Seller Name and Price columns, and each one supports search, sort and filter.
Moreover, the tenant can edit a rate, delete rates one by one or in bulk, and export the grid.
Once the tenant sets the superset rates, they move forward to the shipping rate section under the next tab.
Shipping Rates
As a tenant, you see all the shipping rates that you already set up. Moreover, you add new rates easily with the “Add Shipping Rate” option.

The shipping rate grid supports search, sort and filter on every column.
It lists ID, Seller Name, Shipping Method, Country, Region, Zip From and Zip To.
Additionally, it lists Weight From, Weight To, Price, Numeric Zip Code and Zip Code.
In addition, the tenant can edit, delete, mass delete and export the rates.
Add Shipping Rate
While adding a shipping rate, the tenant fills in the following details:
- Superset Method – Select the superset that this rate belongs to.
- Seller Name – Select the seller that you create the rate for, or leave it empty for the products of the tenant.
- Country – Select the country from the list.
- Region Code – Enter the region code of the available region.
- Weight From – Set the minimum weight value to allow this shipping method.
- Weight To – Then set the maximum weight value for this shipping method.
- Zip From – Enter the first zip code.
- Zip To – Next, enter the last zip code.
- Price – Set the cost of this shipping method.
- Numeric Zip Code – Select “Yes” to enter a numeric zip code, or select “No” to enter an alphanumeric zip code.
- Alphanumeric Zip Code – Finally, enter the alphanumeric zip code whenever you select “No” for the Numeric Zip Code option. Otherwise, enter the numeric zip code.
Example – You can select Numeric Zip as “Yes” when you provide the shipping for a zip code range.
However, a place like Canada supports alphanumeric zip codes (H3Z 2Y7).
There you select Numeric Zip as “No”, then enter the alphanumeric zip code you want to show the shipping for.
Validation: The module validates the weight range on every create, update and import. Weight From must stay smaller than Weight To.
Furthermore, the module rejects a new rate whenever its weight range overlaps a rate that already exists for the same seller, superset and zip range.
Bulk Import and Export
Bulk Import: You can also upload many shipping rates at once through a CSV file. This works for the rates of the tenant as well as for the rates of a specific seller.
First, download the sample CSV template from the “Import” pop-up.

After clicking on Import, the below pop-up appears. Here the tenant uploads the file and downloads a sample CSV template.

Note: The uploader accepts only the files with a .csv extension.
Export Data: Finally, the tenant exports the data of the table with the export button.
Updating Data In Sample Format
The tenant sets the shipping rates easily in the CSV below. In short, the grid of shipping rates above mirrors the columns of the CSV.

- seller_id: The id of the seller inside the marketplace.
- superset_code: The code of the superset that the rate belongs to. Of course, it must match an existing superset.
- country: The destination country for the shipping rate.
- region: Geographical region or area.
- zip_from: Starting zip code of the range.
- zip_to: Ending zip code of the range. Fill it in whenever you fill in zip_from.
- price: The cost of the shipping service.
- weight_from: Minimum weight for the shipping rate.
- weight_to: Maximum weight for the shipping rate.
- is_zip_range: Marks the zip code as a numeric range (Yes/No).
- zip_code: Specific alphanumeric zip code, so use it when is_zip_range says No.
Note: The country code must follow the official ISO-2 (alpha-2) two-letter country codes.
CSV Rows for the Tenant and the Sellers
If you leave the seller_id empty, the tenant uploads this CSV file as their own table rate shipping.
However, when they want to upload the table rate shipping CSV for any of the marketplace sellers, they enter the id of the seller in the seller_id column of the downloaded CSV file.
The module validates every row on its own.
Therefore, it skips a row when a field goes missing or turns invalid, when the superset code does not exist, when the weight range breaks the rules, or when the rate overlaps an existing one.
After the upload, the tenant sees which rows the import created and which rows failed, each one with its row number, so they can correct the file and upload it again.
Note: Above all, the shipping rates take priority over the superset rates.
Seller Dashboard for Multi-Tenant Marketplace Table Rate Shipping
Inside Multi-Tenant Marketplace Table Rate Shipping, the seller finds the Shipping Rates and Superset Rates options under the navigation bar, as the below image shows.
Of course, a seller only ever sees and manages their own rates.

Note: The seller ACL permissions that the tenant grants control both menus, together with the create, edit and delete actions inside them.
Seller Superset Rates
By hitting Superset Rates, the seller opens the new page as the below image shows.

The grid lists the ID, Price From, Price To, Shipping Type, Shipping Method, Superset Code and Price of every rate. Moreover, the seller can edit, delete or mass delete them.
After hitting Add Superset Rate, the sellers create their own shipping methods.
A new window appears, so the seller enters all the required shipping details and then clicks the Save Superset Rate button.

- Price From – Set the minimum price of the cart to use this shipping set.
- Price To – Then set the maximum price of the cart for this shipping set.
- Superset Method – Enter the shipping method name for this set.
- Shipping Type – Select the Fixed option to enter the shipping price, or select the Free option to drop the shipping price.
- Price – Finally, set the shipping method price for this set.
Please Note: The sellers can only use the superset methods that their tenant created.
Seller Shipping Rates
By clicking on Shipping Rates, the seller opens the new page as the below image shows.

Here the seller downloads the sample file, uploads their CSV, or adds a shipping rate for their products manually.
Similarly, the grid lists the ID, Shipping Method, Country, Region, Zip From, Zip To, Weight From, Weight To, Price, Numeric Zip Code and Zip Code columns.

Seller CSV Format
The below image shows the CSV format for the seller upload. Because the module assigns every imported row to the seller who uploads the file, the seller never fills in a seller id.

- country: The destination country for the shipping rate.
- region: Geographical region or area.
- zip_from: Starting zip code of the range.
- zip_to: Then the ending zip code of the range.
- price: The cost of the shipping service.
- weight_from: Minimum weight for the shipping rate.
- weight_to: Maximum weight for the shipping rate.
- superset_code: A code that marks the shipping service category.
- is_zip_range: Marks the zip code as a numeric range (Yes/No).
- zip_code: Specific alphanumeric zip code, so use it when is_zip_range says No.
Note: The country code must follow the official ISO-2 (alpha-2) two-letter country codes.
IS Zip Range (Numeric Zip Code) – Select “Yes” to enter a numeric zip code, or select “No” to enter an alphanumeric zip code.
Zip Code (Alphanumeric Zip Code) – Enter the alphanumeric zip code whenever you select “No” for the Numeric Zip Code option. Otherwise, enter the numeric zip code.
After the upload, the seller sees the values in the same format as the CSV file.
Moreover, the seller can edit or delete any existing record from the grid, while the upload reports every failed row with its row number.

Seller Adds a Shipping Rate
The seller also adds a shipping rate with the Add Shipping Rate button, and then the next page appears as the below image shows.

- Superset Methods – Select the superset method.
- Country – Then select the country from the list.
- Region Code – Enter the region code of the available region.
- Weight From – Set the minimum weight value to allow this shipping method.
- Weight To – Next, set the maximum weight value for this shipping method.
- Zip From – Enter the first zip code.
- Zip To – Then enter the last zip code.
- Price – Set the cost of this shipping method.
- Numeric Zip Code – Select “Yes” for a numeric zip code, or select “No” for an alphanumeric zip code.
- Alphanumeric Zip Code – Finally, enter the alphanumeric zip code whenever you select “No” for the Numeric Zip Code option.
Of course, the same weight validations apply to the seller. The weight range must stay valid, and it must not overlap a rate that the seller already created for the same superset and zip range.
Multi-Tenant Marketplace Table Rate Shipping Calculation
At the checkout, Multi-Tenant Marketplace Table Rate Shipping resolves the rates of every cart item separately, against the seller that owns the item and the delivery address of the customer.
- First, the module matches the items of the tenant against the rates of the tenant, and the items of a seller against the rates of that seller.
- Then it gives the priority to the shipping rates, and it falls back to the superset rates afterwards. If no shipping condition matches, the default free shipping and flat rate shipping appear.
- When the tenant picks Per Unit, the module multiplies the matched rate by the item quantity. However, when the tenant picks Per Order, it charges the matched rate once for that item.
- Finally, the module records the contribution of each item against its own seller, so every order of a seller carries its own share of the shipping amount.
Note: For fetching the shipping rates, the item must satisfy both the weight and the zip code. Otherwise, the shipping rate never appears.
Carts With Products From Several Sellers
Every seller configures their rates against their own superset. Therefore, a cart that spans two sellers rarely holds one superset that covers all of its items.
In short, this module handles that case as follows:
- A superset that produced a rate for every item in the cart appears as its own shipping option, exactly as it does in a single seller cart.
- However, when no single superset covers the whole cart, the module combines one matched rate per item into a single shipping option, so the multi-seller cart still ships.
- The combined option then appears under one shipping method name, and its total adds up the rate that each item contributes.
- Finally, if even one item finds no matching rate, the table rate method stays hidden instead of quoting a total that silently drops that item.
Instances For Superset Rates
Case 1 → Seller 1 and Seller 2 both hold products that lie in the superset rates.
Seller 1 Product – Price Range Satisfied
Seller 2 Product – Price Range Satisfied
Result – The checkout then adds and displays both superset rates.
Case 2 → Seller 1 lies in the superset rates, while Seller 2 does not.
Seller 1 Product – Price Range Satisfied
Seller 2 Product – Price Range Not Satisfied
Result – Only the superset rates of Seller 1 appear.
Case 3 → Seller 2 lies in the superset rates, while Seller 1 does not.
Seller 1 Product – Price Range Not Satisfied
Seller 2 Product – Price Range Satisfied
Result – Only the superset rates of Seller 2 appear.
Case 4 → Neither seller holds products that lie in the superset rates.
Seller 1 Product – Price Range Not Satisfied
Seller 2 Product – Price Range Not Satisfied
Result – Instead, the default free shipping and flat rate shipping appear.
Instances For Shipping Rates
Case 1 → Seller 1 and Seller 2 both hold products that lie in the shipping rates.
Seller 1 Product – Weight and Zip Range Satisfied
Seller 2 Product – Weight and Zip Range Satisfied
Result – The checkout then adds and displays both shipping rates.
Case 2 → The shipping rates of Seller 1 lie in range, while the rates of Seller 2 do not.
Seller 1 Product – Weight and Zip Range Satisfied
Seller 2 Product – Weight and Zip Range Not Satisfied
Result – Only the shipping rates of Seller 1 appear.
Case 3 → The shipping rates of Seller 2 lie in range, while the rates of Seller 1 do not.
Seller 1 Product – Weight and Zip Range Not Satisfied
Seller 2 Product – Weight and Zip Range Satisfied
Result – Only the shipping rates of Seller 2 appear.
Case 4 → Neither seller holds products that lie in the shipping rates.
Seller 1 Product – Weight and Zip Range Not Satisfied
Seller 2 Product – Weight and Zip Range Not Satisfied
Result – Instead, the default free shipping and flat rate shipping appear.
Customer Order With Multi-Tenant Marketplace Table Rate Shipping
As the below image shows, the customer adds two products to the cart from different sellers.

After clicking the “Proceed To Checkout” button, the customer reaches the below page.
There the customer mentions all the required information as the below image shows, and then clicks the continue button to proceed further.

Here, the customer selects the table rate shipping method and then clicks the “Continue” button to proceed further.
In short, the shipping cost on the screen adds up the share of every seller in the cart.

Note: In the Multi-Tenant Marketplace Table Rate Shipping module, the shipping rate follows the product weight of the seller and the delivery address of the customer.
Finally, the customer completes the order with the Place Order button, and then a thank you screen appears as in the below image.

Once the customer places the order successfully, they can easily check the details of their orders under their account, together with the total shipping charges as below.

Seller Order Management
If the tenant sets the “Seller Can Create Invoice” option to “Yes” and also the “Seller Can Create Shipment” option to “Yes”, then the seller manages the orders from the front-end.
Once the customer places the order, the seller finds that order in their Order List with a pending status, as the below image shows.

After clicking on the Eye Icon, the seller checks the order information together with the shipping address, shipping method and payment method, as the below image shows.
After that, the seller clicks the Invoice button to generate the invoice.

Here the seller creates the invoice for the order of the customer and assigns the quantity. Then they click the Create button to generate the invoice.

Once the seller generates the invoice successfully, they generate the shipment for the order with the Ship button.
Here the seller provides the Carrier Title and Tracking ID, and then selects the Product Ordered Source. Finally, the seller clicks the Create Shipment button to complete the order.

Data Isolation in Multi-Tenant Marketplace Table Rate Shipping
Above all, Multi-Tenant Marketplace Table Rate Shipping stays safe to run on a SaaS installation that serves many companies at once:
- Supersets, superset rates and shipping rates each carry the company that they belong to, and the module stamps that company on every record a tenant store creates.
- Moreover, the module scopes every query of a tenant store to that tenant, so a tenant and its sellers only ever see their own supersets and rates.
- The superset code stays unique inside a company rather than across the whole installation. Therefore, tenants never compete for the same codes.
- When the super admin removes a company, Bagisto also removes its supersets, superset rates and shipping rates.
- Finally, each tenant enables the carrier and sets its title, description and type for its own channels, independently of the other tenants.
Benefits of Multi-Tenant Marketplace Table Rate Shipping
In short, Multi-Tenant Marketplace Table Rate Shipping brings the following benefits to a SaaS marketplace:
- Gives every tenant a complete, self-managed shipping matrix
- Hides the shipping data of one tenant from every other tenant
- Lets sellers price their own delivery without depending on the tenant
- Charges realistic shipping from weight, zip code and destination
- Keeps multi-seller carts shippable with a single combined option
- Gives every seller order the correct share of the shipping amount
- Speeds up the setup with CSV import, sample files and demo data
- Supports scalable SaaS marketplace operations, so it fits every Laravel development roadmap
Support
That concludes the User Guide for the Laravel eCommerce Multi-Tenant Marketplace Table Rate Shipping module.
For any questions, technical issues, or assistance, feel free to contact us at: [email protected]
You can also raise a support ticket through our help desk: https://bagisto.uvdesk.com/en or through the Webkul help desk.
Besides, you can read more guides on the Webkul blog, explore our other Laravel extensions, and browse the complete Bagisto extensions range.
Finally, you can also hire Laravel developers for your custom Laravel projects.
Current Product Version - v2.4.9
Supported Framework Version - Bagisto v2.4.9
Be the first to comment.