In the context of B2B, it's really important to understand the two types of pricing available to customers:
Price type
Tax setup
Gross
The pricing will include tax. For example, if the price is $20.00, this price will include any tax calculations
Net
The pricing will exclude tax. For example, if the price is $20.00, this price will exclude any tax calculations
B2B customers typically make payments in one of these ways:
either with tax included (Gross Pricing)
or tax excluded (Net pricing)
How SparkLayer handles pricing
SparkLayer will always output the prices in the Net amounts, regardless of the tax status you set on your website. In effect, when you upload your B2B pricing via SparkLayer, the customer will see the exactly the same prices on your website.
ο»Ώ
When the customer then proceeds through the checkout, they will then see the tax calculations added.
ο»Ώ
How SparkLayer calculates tax
Simply put, SparkLayer calculates tax based on the setup you have on your website and you can see full information for specific platforms below.
ποΈ Using Shopify
π Other platforms
Before starting, there are two important resources to review:
Your specific Shopify store set up: by visiting this link, you can see how your tax is setup
Shopify help guides: Shopify how their own guides on setting up tax, please see here.
Broadly speaking, Shopify lets you configure tax rules at a global level but also apply specific edits against customers and products.
ο»Ώ
To help set the scene, we've summarised some of the key ways you can configure tax below. Please note: If you're using SparkLayer to power your B2B store alongside your B2C (retail), you'll need to check carefully before making any edits.
Setting a customer to be tax-exempt
It's possible to set a customer within Shopify to be 'Tax exempt'. Within Shopify, click edit on a Customer and under 'Manage tax exemptions' you can untick "Collect tax". Once done, the customer will then be exempt from any tax charges on your website.
ο»Ώ
In the context of SparkLayer, they'll see all your pricing as net and on the final step of the checkout, the tax will be set to zero.
Setting up tax settings for products (including variants)
Shopify has the ability to set tax rules on a product and product-variant basis, giving you a great deal of flexibility on how tax is charged. When editing a product, you'll see a checkbox 'Charge tax on this product' which, when ticked, will use the tax settings you've configured here.
ο»Ώ
You can also configure this on a product-variant level.
ο»Ώ
In the context of SparkLayer, if you have specific products that are set to not charge tax, this will be factored in when the customer gets to the final step of the checkout to see their overall tax charges.
ο»Ώ
Setting up country-level tax settings
It's also possible to set up country-level rules for tax which will apply to customers based on their shipping destination country. You can manage country-level tax settings from the Markets area of Shopify.
ο»Ώ
In the context of SparkLayer, if your store is setup to allow shipping to multiple countries, this will be factored in when the customer gets to the final step of the checkout to see their overall tax charges.
Draft orders and collecting tax
If you've set up SparkLayer to send orders into Shopify as "Draft Orders", it's also possible to change the tax charges against an order.
ο»Ώ
When tax is removed, this will adjust the "Estimated tax" calculation in the order totals for the Draft order.
ο»Ώ
In the context of SparkLayer, if you remove tax against a draft order, this will only apply to the "Estimated tax" calculation. It will not retrospectively apply this against specific products in the order.
ο»Ώ
Displaying gross pricing (tax inclusive) and net pricing (tax exclusive)
If there are circumstances where you do want to show Gross pricing AND Net pricing to your B2B customers, you can consider the following approach.
By default, SparkLayer will always output the pricing as net pricing (see above to learn more). When a B2B customer sees pricing, it will always be tax exclusive
Within your storefront theme, you could use custom coding to display a custom price on the page, shown only to logged in customers. This could use the metafields system available within platforms such as Shopify and BigCommerce.
To show gross pricing, you could potentially make use of our RRP (MSRP) featureο»Ώ that lets you set a price independent to the B2B price. Note: this is not the intended use but can act as a workaround
Displaying gross pricing
If there are circumstances where you do want to show Gross pricing to your B2B customers, there is a potential way around this.
It's possible to set a customer within Shopify to be 'Tax exempt' (see above). This would mean their order would be zero tax rated.
In the price lists you upload to SparkLayer, set the prices to be the "gross" amounts (even though they don't technically include tax).
As to reporting, you would need to report on the tax amounts after the fact (e.g. via your accounting system)
"Line item tax" - handling products with differing tax rates
If you have products within your Shopify store that have different tax rates, SparkLayer is able to support "line item" tax levels.
To check if you have this enabled within Shopify:
Within your Shopify admin, go to Settings and click Taxes and Duties (or click here)
Ensure that the "Include sales tax in product price and shipping rate" setting is enabled
ο»Ώ
If this setting is enabled and you have products in your store that have different tax rates within a single jurisdiction, you're able to enable a special SparkLayer setting that has handling for this. Please speak to our team to assist you.
Please note the following:
When this setting is enabled, the draft will be created in Shopify when the customer reaches the shipping / payment method select step of the checkout, before they've clicked "complete order".
At this point the draft order will have a tag of b2b-pending. Once the customer clicks "complete" the draft order is updated to have a tag of b2b
Why is this necessary?
When an order is placed via SparkLayer we calculate a discount to be applied to each line item to yield the correct B2B price.
When the "Include sales tax in product price and shipping rate" setting is disabled, we calculate the difference between the Shopify price and the SparkLayer B2B price and apply that as a discount.
When the "Include sales tax in product price and shipping rate" setting is enabled we must also compensate for tax. Historically SparkLayer used a single tax rate (the rate for the first line item) to calculate the discount for all line items.
The only way for SparkLayer to get the tax rates for each line item from Shopify is to create a draft order.
Here are some screenshots showing the difference between two identical orders created with and without the "Create draft order during calculation" feature enabled.
When the feature is disabled the second line item has the incorrect discount applied.
ο»Ώ
When the feature is enabled the second line item has the correct discount applied.
For locations within the Frontend Interfacesο»Ώ where the word "tax" is displayed, it's possible to customise this and adjust the wording.
ο»Ώ
JS
1/* Add the below code into the SparkLayer Core Script */2/* Please refer to our help guide on how to do this */3translations:{4en:{5"global.totals.tax":"Tax",6"cart.tax-shipping-note":"Tax and shipping costs calculated during checkout",7"cart.tax-shipping-message":"Tax and shipping costs shown on next step"8}9},10/* End of code */
ο»Ώ
ο»Ώ
Shipping configurations
Please refer to our Shippingο»Ώ guide for further information.