[{"data":1,"prerenderedAt":500},["ShallowReactive",2],{"bootstrap":3,"blog-how-to-handle-vat-and-sales-tax-calculations":277},{"navigation":4,"globalConfig":196,"forms":218},{"headerSections":5,"headerFooterLinks":67,"footer":76,"legalLinks":153,"socialLinks":176},[6,39,44,50,57,62],{"hasSubMenu":7,"title":8,"links":9,"columns":38},true,"Product",[10,20,26,32],{"showTag":11,"_modelApiKey":12,"text":13,"subtitle":14,"icon":15,"isExternal":11,"link":16,"openForm":11},false,"navigation_link","Universal checkout","Sell anywhere","globe-simple",{"_modelApiKey":17,"slug":18,"title":19},"page","universal-checkout","Universal Checkout",{"showTag":11,"_modelApiKey":12,"text":21,"subtitle":22,"icon":23,"isExternal":11,"link":24,"openForm":11},"Distributed OMS","Manage orders","package",{"_modelApiKey":17,"slug":25,"title":21},"distributed-oms",{"showTag":11,"_modelApiKey":12,"text":27,"subtitle":28,"icon":29,"isExternal":11,"link":30,"openForm":11},"Promotion engine","Automated discounts","seal-percent",{"_modelApiKey":17,"slug":31,"title":27},"promotion-engine",{"showTag":11,"_modelApiKey":12,"text":33,"subtitle":34,"icon":35,"isExternal":11,"link":36,"openForm":11},"POS system","Operate stores","devices",{"_modelApiKey":17,"slug":37,"title":33},"pos-system",2,{"hasSubMenu":11,"showTag":11,"_modelApiKey":12,"text":40,"isExternal":11,"link":41,"openForm":11,"title":40},"Pricing",{"_modelApiKey":42,"slug":43},"pricing_page","pricing",{"hasSubMenu":11,"showTag":11,"_modelApiKey":12,"text":45,"isExternal":11,"link":46,"openForm":11,"title":45},"Customers",{"_modelApiKey":47,"slug":48,"title":49},"customer_landing_page","customers","Customers page",{"hasSubMenu":11,"showTag":11,"_modelApiKey":12,"text":51,"isExternal":11,"link":52,"openForm":11,"form":54,"title":51},"Partners",{"_modelApiKey":17,"slug":53,"title":51},"partners",{"_modelApiKey":55,"slug":53,"name":56},"form","PartnersForm",{"hasSubMenu":11,"showTag":11,"_modelApiKey":12,"text":58,"label":59,"isExternal":7,"url":60,"openForm":11,"title":61},"Docs Hub","Learn more","https:\u002F\u002Fdocs.commercelayer.io\u002F","Docs",{"hasSubMenu":11,"showTag":11,"_modelApiKey":12,"text":63,"isExternal":11,"link":64,"openForm":11,"title":63},"Blog",{"_modelApiKey":65,"slug":66},"blog_landing_page","blog",[68,72],{"text":69,"link":70},"Sign in",{"_modelApiKey":12,"text":69,"isExternal":7,"url":71,"openForm":11},"https:\u002F\u002Fdashboard.commercelayer.io\u002Fsign_in",{"text":73,"link":74},"Sign up for free",{"_modelApiKey":12,"text":73,"isExternal":7,"url":75,"openForm":11},"https:\u002F\u002Fdashboard.commercelayer.io\u002Fsign_up",[77,89,109,132],{"hasSubMenu":7,"title":8,"links":78},[79,81,83,85,87],{"showTag":11,"_modelApiKey":12,"text":13,"subtitle":14,"icon":15,"isExternal":11,"link":80,"openForm":11},{"_modelApiKey":17,"slug":18,"title":19},{"showTag":11,"_modelApiKey":12,"text":21,"subtitle":22,"icon":23,"isExternal":11,"link":82,"openForm":11},{"_modelApiKey":17,"slug":25,"title":21},{"showTag":11,"_modelApiKey":12,"text":27,"subtitle":28,"icon":29,"isExternal":11,"link":84,"openForm":11},{"_modelApiKey":17,"slug":31,"title":27},{"showTag":11,"_modelApiKey":12,"text":33,"subtitle":34,"icon":35,"isExternal":11,"link":86,"openForm":11},{"_modelApiKey":17,"slug":37,"title":33},{"showTag":11,"_modelApiKey":12,"text":40,"isExternal":11,"link":88,"openForm":11},{"_modelApiKey":42,"slug":43},{"hasSubMenu":7,"title":90,"links":91},"Resources",[92,94,99,104,107],{"showTag":11,"_modelApiKey":12,"text":93,"isExternal":7,"url":60,"openForm":11},"Documentation",{"showTag":11,"_modelApiKey":12,"text":95,"label":95,"isExternal":11,"link":96,"openForm":11},"Agentic Commerce",{"_modelApiKey":17,"slug":97,"title":98},"agentic-commerce-whitepaper","Agentic Commerce Whitepaper",{"showTag":11,"_modelApiKey":12,"text":100,"isExternal":11,"link":101,"openForm":11},"Core concepts",{"_modelApiKey":17,"slug":102,"title":103},"headless-commerce","Headless commerce",{"showTag":11,"_modelApiKey":12,"text":105,"isExternal":7,"url":106,"openForm":11},"Changelog","https:\u002F\u002Fdocs.commercelayer.io\u002Fchangelog\u002F",{"showTag":11,"_modelApiKey":12,"text":63,"isExternal":11,"link":108,"openForm":11},{"_modelApiKey":65,"slug":66},{"hasSubMenu":7,"title":110,"links":111},"Company",[112,116,118,121,126],{"showTag":11,"_modelApiKey":12,"text":113,"isExternal":11,"link":114,"openForm":11},"Vision",{"_modelApiKey":17,"slug":115,"title":113},"vision",{"showTag":11,"_modelApiKey":12,"text":45,"isExternal":11,"link":117,"openForm":11},{"_modelApiKey":47,"slug":48,"title":49},{"showTag":11,"_modelApiKey":12,"text":51,"isExternal":11,"link":119,"openForm":11,"form":120},{"_modelApiKey":17,"slug":53,"title":51},{"_modelApiKey":55,"slug":53,"name":56},{"showTag":11,"_modelApiKey":12,"text":122,"isExternal":11,"link":123,"openForm":11},"Security",{"_modelApiKey":17,"slug":124,"title":125},"security","Security at Commerce Layer",{"showTag":11,"_modelApiKey":12,"text":127,"label":128,"isExternal":11,"openForm":7,"form":129},"Giveback","Giveback program",{"_modelApiKey":55,"slug":130,"name":131},"giveback","GivebackForm",{"hasSubMenu":7,"title":133,"links":134},"Get in touch",[135,140,145,149],{"showTag":11,"_modelApiKey":12,"text":136,"isExternal":11,"openForm":7,"form":137},"Contact",{"_modelApiKey":55,"slug":138,"name":139},"contact","ContactUsForm",{"showTag":11,"_modelApiKey":12,"text":141,"isExternal":11,"openForm":7,"form":142},"Book a demo",{"_modelApiKey":55,"slug":143,"name":144},"demo","RequestDemoForm",{"showTag":11,"_modelApiKey":12,"text":146,"label":147,"isExternal":7,"url":148,"openForm":11},"Support","Email support","mailto:support@commercelayer.io",{"showTag":11,"_modelApiKey":12,"text":150,"label":151,"isExternal":7,"url":152,"openForm":11},"Community","Discord community","https:\u002F\u002Fdiscord.gg\u002Fcommercelayer",{"hasSubMenu":7,"title":154,"links":155},"Legal",[156,161,165,169,173],{"showTag":11,"_modelApiKey":12,"text":157,"label":158,"isExternal":7,"url":159,"openForm":11,"htmlClassNames":160},"Terms","Terms and conditions","\u002Flegal-embed\u002Fterms-of-service","iubenda-nostyle no-brand iubenda-noiframe iubenda-embed",{"showTag":11,"_modelApiKey":12,"text":162,"label":163,"isExternal":7,"url":164,"openForm":11,"htmlClassNames":160},"Privacy","Privacy policy","\u002Flegal-embed\u002Fprivacy-policy",{"showTag":11,"_modelApiKey":12,"text":166,"label":167,"isExternal":7,"url":168,"openForm":11,"htmlClassNames":160},"Cookies","Cookie policy","\u002Flegal-embed\u002Fcookie-policy",{"showTag":11,"_modelApiKey":12,"text":170,"isExternal":7,"url":171,"openForm":11,"htmlClassNames":172},"Notice at collection","#","iubenda-cs-uspr-link",{"showTag":11,"_modelApiKey":12,"text":174,"isExternal":7,"url":171,"openForm":11,"htmlClassNames":175},"Privacy preferences","iubenda-cs-preferences-link",[177,180,184,188,192],{"title":178,"type":179,"url":152,"isExternal":7},"Discord","discord-logo",{"title":181,"type":182,"url":183,"isExternal":7},"Github","github","https:\u002F\u002Fgithub.com\u002Fcommercelayer",{"title":185,"type":186,"url":187,"isExternal":7},"Bluesky","bluesky-logo","https:\u002F\u002Fbsky.app\u002Fprofile\u002Fcommercelayer.io",{"title":189,"type":190,"url":191,"isExternal":7},"X","x-logo","https:\u002F\u002Fx.com\u002Fcommercelayer",{"title":193,"type":194,"url":195,"isExternal":7},"LinkedIn","linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fcommerce-layer",{"pagesWithoutCtaPanel":197,"ctaPanel":198,"notification":208,"showApiResponseTime":11,"newsletterSignup":216},[],{"title":199,"subtitle":200,"ctas":201},"Ready to get started?","Discover how we can help your business.",[202,205],{"_modelApiKey":203,"text":204,"isExternal":7,"url":75,"openForm":11},"link","Get started for free",{"_modelApiKey":203,"text":206,"isExternal":11,"openForm":7,"form":207},"Contact us",{"_modelApiKey":55,"slug":138,"name":139},{"showNotification":7,"link":209,"linkText":210,"text":215},{"_modelApiKey":203,"text":210,"isExternal":11,"link":211,"openForm":11},"Read article",{"_modelApiKey":212,"slug":213,"title":214},"blog_post","payment-api-redesigned","Introducing our new Payments API. For humans and agents.","\u003Cp>Introducing our new Payments API. For humans and agents.\u003C\u002Fp>\n",{"ctaText":217},"Subscribe",[219,225,229,236,240,246,249,253,261,262,267,272,274],{"_modelApiKey":55,"slug":220,"pardotFormEmbedCode":221,"formEmbedMinHeight":222,"successTitle":223,"successCopy":224},"agentic-commerce","https:\u002F\u002Fcommercelayer.fillout.com\u002Ft\u002F5w4Khwgxr6us?whitepaper=agentic",520,"Thank you for your request!","We’ll be in touch soon to arrange a date and time for your personalized demo.",{"_modelApiKey":55,"slug":226,"pardotFormEmbedCode":227,"formEmbedMinHeight":228,"successTitle":223,"successCopy":224},"shopify","https:\u002F\u002Fform.fillout.com\u002Ft\u002FgVnLSmKZwRus",850,{"_modelApiKey":55,"slug":130,"pardotFormEmbedCode":230,"formEmbedMinHeight":231,"displayTitle":232,"copy":233,"successTitle":234,"successCopy":235},"https:\u002F\u002Fform.fillout.com\u002Ft\u002FmVDF8aAiofus",500,"We give back.","\u003Cp>Part of Commerce Layer&#39;s company ethos is to empathize and support one another: co-workers, customers, and community. We want to do our part to help nonprofit organizations and small businesses who may feel adversely affected by the current global economic climate, and as a result, need in-kind support to reach their customers.\u003C\u002Fp>\n\n\u003Cp>If this general description matches your organization’s needs, please tell us your story by completing the following form so we can consider helping your cause.\u003C\u002Fp>\n","Thank you!","We will contact you soon to learn more about your story.",{"_modelApiKey":55,"slug":237,"pardotFormEmbedCode":227,"formEmbedMinHeight":228,"displayTitle":238,"copy":239},"book-an-onboarding-session","Book an onboarding session","\u003Cp>Schedule some time and our devs will help you set up a Commerce Layer + Sanity store.\u003C\u002Fp>\n",{"_modelApiKey":55,"slug":241,"pardotFormEmbedCode":242,"formEmbedMinHeight":243,"displayTitle":244,"successTitle":234,"successCopy":245},"download-our-whitepaper","https:\u002F\u002Fform.fillout.com\u002Ft\u002F5YPWmy8oT7us?whitepaper=ComposableCommerce",450,"Download our whitepaper.","Check your inbox. You should receive a download link soon.",{"_modelApiKey":55,"slug":247,"pardotFormEmbedCode":248,"formEmbedMinHeight":243,"displayTitle":244,"successTitle":234,"successCopy":245},"download-the-content-and-commerce-whitepaper","https:\u002F\u002Fform.fillout.com\u002Ft\u002F5YPWmy8oT7us?whitepaper=ContentAndCommerce",{"_modelApiKey":55,"slug":250,"pardotFormEmbedCode":251,"formEmbedMinHeight":243,"displayTitle":244,"copy":252,"successTitle":234,"successCopy":245},"whitepaper","https:\u002F\u002Fform.fillout.com\u002Ft\u002F5YPWmy8oT7us?whitepaper=Jamstack","\u003Cp>Commerce Layer is the perfect platform for building commerce on the Jamstack. Convert any design into pixel perfect HTML pages. Connect a best-of-breed headless CMS. Go serverless and forget the hassle of managing complex infrastructures.\u003C\u002Fp>\n",{"_modelApiKey":55,"slug":254,"pardotFormEmbedCode":255,"formEmbedMinHeight":256,"displayTitle":257,"copy":258,"successTitle":259,"successCopy":260},"contact-links","https:\u002F\u002Fform.fillout.com\u002Ft\u002FeWPyhHGHT7us",750,"Contact us.","\u003Cp>Tell us about your project. Our team will reach out to you for a personalized offer.\u003C\u002Fp>\n","Thanks for your message!","We’ll be in touch soon to discuss your project details.",{"_modelApiKey":55,"slug":138,"pardotFormEmbedCode":255,"formEmbedMinHeight":256,"displayTitle":257,"copy":258,"successTitle":259,"successCopy":260},{"_modelApiKey":55,"slug":263,"pardotFormEmbedCode":227,"formEmbedMinHeight":228,"displayTitle":264,"successTitle":265,"successCopy":266},"demo-embed","Want to see it in action? Request a demo.","Thanks for your request!","We’ll be in touch soon to arrange a date and time for your free live demo.",{"_modelApiKey":55,"slug":53,"pardotFormEmbedCode":268,"formEmbedMinHeight":228,"displayTitle":269,"copy":270,"successTitle":234,"successCopy":271},"https:\u002F\u002Fform.fillout.com\u002Ft\u002F9MTkDWMUSqus","Become our partner.","\u003Cp>Join us and get our guidance in helping your clients succeed. Our partners are our ambassadors. We are committed to your success as much as you are.\u003C\u002Fp>\n","We will contact you soon to discuss the details of our partnership.",{"_modelApiKey":55,"slug":273,"pardotFormEmbedCode":268,"formEmbedMinHeight":228,"displayTitle":269,"copy":270,"successTitle":234,"successCopy":271},"partners-embed",{"_modelApiKey":55,"slug":143,"pardotFormEmbedCode":227,"formEmbedMinHeight":228,"displayTitle":275,"copy":276,"successTitle":265,"successCopy":266},"Get a free live demo.","\u003Cp>Get a personalized demo and learn more about what Commerce Layer can do for your company.\u003C\u002Fp>\n",{"_modelApiKey":212,"link":278,"subtitle":283,"date":283,"author":284,"additionalAuthors":294,"icon":295,"abstract":296,"tag":297,"displayTitle":279,"cardRatio":299,"featured":11,"seoMetaTags":300,"layout":364,"blogPostCarousel":387,"_seoMetaTags":461,"authors":495},{"text":279,"isExternal":11,"url":280,"link":281},"How to handle VAT and sales tax calculations.","",{"_modelApiKey":212,"slug":282},"how-to-handle-vat-and-sales-tax-calculations","January 11, 2023",{"name":285,"picture":286},"Seth Bindernagel",{"url":287,"alt":288,"title":288,"width":289,"height":289,"format":290,"focalPoint":291,"customData":293},"https:\u002F\u002Fwww.datocms-assets.com\u002F35053\u002F1656680208-seth.jpg","Seth Bindernagel avatar",1280,"jpg",{"x":292,"y":292},0.5,{},[],"calculator","Calculating VAT or sales tax can be challenging. Use Commerce Layer's integrations with either TaxJar or Avalara to simplify the process. You can also use our API to connect any external tax calculator, or even build your own.",{"color":298,"name":100},"gray","portrait",[301,305,309,312,316,319,322,326,330,334,337,341,345,349,353,356,360],{"attributes":302,"tag":303,"content":304},null,"title","How to Handle VAT and Sales Tax Calculations",{"attributes":306,"tag":308,"content":302},{"property":307,"content":304},"og:title","meta",{"attributes":310,"tag":308,"content":302},{"name":311,"content":304},"twitter:title",{"attributes":313,"tag":308,"content":302},{"name":314,"content":315},"description","Commerce Layer's integrations with TaxJar and Avalara make tax calculations seamless. Or use our API to add an external calculator. You can even build your own.",{"attributes":317,"tag":308,"content":302},{"property":318,"content":315},"og:description",{"attributes":320,"tag":308,"content":302},{"name":321,"content":315},"twitter:description",{"attributes":323,"tag":308,"content":302},{"property":324,"content":325},"og:image","https:\u002F\u002Fwww.datocms-assets.com\u002F35053\u002F1673429240-cl-and-vat_1200-x-630-with-padding.jpg?auto=format&fit=max&w=1200",{"attributes":327,"tag":308,"content":302},{"property":328,"content":329},"og:image:width","1200",{"attributes":331,"tag":308,"content":302},{"property":332,"content":333},"og:image:height","630",{"attributes":335,"tag":308,"content":302},{"name":336,"content":325},"twitter:image",{"attributes":338,"tag":308,"content":302},{"property":339,"content":340},"og:locale","en",{"attributes":342,"tag":308,"content":302},{"property":343,"content":344},"og:type","article",{"attributes":346,"tag":308,"content":302},{"property":347,"content":348},"og:site_name","Commerce Layer",{"attributes":350,"tag":308,"content":302},{"property":351,"content":352},"article:modified_time","2025-10-08T16:38:42Z",{"attributes":354,"tag":308,"content":302},{"property":355,"content":280},"article:publisher",{"attributes":357,"tag":308,"content":302},{"name":358,"content":359},"twitter:card","summary_large_image",{"attributes":361,"tag":308,"content":302},{"name":362,"content":363},"twitter:site","@commercelayer",[365,371,376,379,381,384],{"_modelApiKey":366,"copy":367,"listStyle":368,"darkTheme":11,"buttons":369,"color":370,"indent":7},"wysiwyg","\u003Cp>Developers building ecommerce solutions have to tackle tax calculations at some point in the development process. When they do, the initial research unearths complex discussions and endless links that inevitably create a long list of questions on what to do next. What tax should you apply within a certain jurisdiction where you sell? What logic do you need to calculate tax? How and when does tax get applied to an order? Taxes also impact pricing strategy, particularly if they cause a price to rise above a customer’s expectation. Developers need a tool that supports any price list that their team has created for products that are sold cross-market.\u003C\u002Fp>\n\n\u003Cp>How can a headless, composable commerce service like Commerce Layer help you with VAT calculations? We try to keep it very straight forward to minimize complexity. This primer will help you get started. (NB: What this post does not contain is any specific accounting or legal advice. If you have questions about that, do what is always recommended and contact your accounting or legal advisors.)\u003C\u002Fp>\n\n\u003Ch3>What is the difference between VAT and Sales taxes?\u003C\u002Fh3>\n\n\u003Cp>\u003Cstrong>VAT\u003C\u002Fstrong> is “value-added tax” and is assigned throughout the supply chain where “value” is added. It’s used in many global economies, but not in the United States. It’s important to call out that VAT can differ between B2C and B2B pricing models, With B2C, prices include VAT. In B2B, prices are exposed without VAT. That is calculated on top of the base price. Some tax benefits may exist throughout the supply chain that allow businesses to deduct VAT. (More details on that \u003Ca href=\"https:\u002F\u002Feuropa.eu\u002Fyoureurope\u002Fbusiness\u002Ftaxation\u002Fvat\u002Fcharging-deducting-vat\u002Findex_en.htm\">here\u003C\u002Fa>.)\u003C\u002Fp>\n\n\u003Cp>\u003Cstrong>Sales Tax\u003C\u002Fstrong> is collected at the point of sale from the retail customer. It differs from VAT in that it is not assessed throughout the supply chain. It is calculated based on the sales tax rate of the local jurisdiction and applied to the final price on the order at checkout time.\u003C\u002Fp>\n\n\u003Ch3>Selling In the EU\u003C\u002Fh3>\n\n\u003Cp>Whether you’re selling goods (digital or physical) or services in the EU, as a member country or as a non-EU member, a number of important tax regulations exist for you to research. They are mostly meant to simplify VAT and make it easy to understand. Again, we recommend that you speak with a tax accountant and legal advisor to learn more about all of the various aspects that impact your business. Some topics you may want to research include:\u003C\u002Fp>\n\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.avalara.com\u002Fvatlive\u002Fen\u002Feu-vat-rules\u002Fdistance-selling\u002Finternet-and-ecommerce-vat.html\">“Distance Selling” for cross-border VAT\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fvat-one-stop-shop.ec.europa.eu\u002Findex_en\">VAT Mini One Stop Shop\u003C\u002Fa> (MOSS)\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Feuropa.eu\u002Fyoureurope\u002Fbusiness\u002Ftaxation\u002Fvat\u002Fvat-digital-services-moss-scheme\u002Findex_en.htm\">VAT on digital goods\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>Most developers who build for multi-market ecommerce have to calculate VAT and sales taxes. Since every jurisdiction has a different revenue collection scheme, the logic required to calculate the tax can get complex. The solution you choose needs to deliver things like:\u003C\u002Fp>\n\n\u003Cul>\n\u003Cli>The tax rate in each jurisdiction where an order is placed and where it is being shipped\u003C\u002Fli>\n\u003Cli>The VAT or sales tax calculation based on that tax rate\u003C\u002Fli>\n\u003Cli>How to handle cross-border purchases\u003C\u002Fli>\n\u003Cli>Effective pricing strategies that account for the tax and optimize sales \u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Ch3>How do you handle VAT and sales tax with a composable commerce engine such as Commerce Layer?\u003C\u002Fh3>\n\n\u003Cp>VAT and sales tax calculations don’t have to be a complex part of the ecommerce experience you build. You can use tools and integrations to help handle most of the tax considerations in the markets where you sell. Commerce Layer supports multi-market tax calculation by:\u003C\u002Fp>\n\n\u003Cul>\n\u003Cli>Providing a price list object that helps you segment markets where taxes are included (B2C VAT) or not (B2B VAT or sales tax)\u003C\u002Fli>\n\u003Cli>Supporting different merchants (aka legal entities) by market, enabling the proper legal entity to collect taxes for reporting\u003C\u002Fli>\n\u003Cli>Building integrations with third-party tax calculators\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>Your tax calculations can be handled by our out-of-the-box integrations with \u003Ca href=\"https:\u002F\u002Fdocs.commercelayer.io\u002Fcore\u002Fv\u002Fapi-reference\u002Favalara_accounts\">Avalara\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fdocs.commercelayer.io\u002Fcore\u002Fv\u002Fapi-reference\u002Ftaxjar_accounts\">TaxJar\u003C\u002Fa>. By connecting those services, you can use the best options available in the market that will handle the calculation for you. In some cases you might need something other than Avalara or TaxJar. If so, use our \u003Ca href=\"https:\u002F\u002Fdocs.commercelayer.io\u002Fcore\u002Fexternal-resources\u002Fexternal-tax-calculators\">external tax calculator resource\u003C\u002Fa> to integrate that tool. Or, you may also need a very simple, elegant solution that doesn’t require tools like these. In that case, use our \u003Ca href=\"https:\u002F\u002Fdocs.commercelayer.io\u002Fcore\u002Fv\u002Fapi-reference\u002Fmanual_tax_calculators\">manual tax calculator resource\u003C\u002Fa> and write your custom logic. Commerce Layer is highly extensible, so choose the path that is best for you.\u003C\u002Fp>\n\n\u003Cp>Composabe Commerce is all about selecting the best services available to build the digital experience, and then connecting those services together via APIs. Commerce Layer focuses on the technology that powers the transactions on your site, but also on building in key integrations like these to make this as easy as possible.\u003C\u002Fp>\n\n\u003Ch3>Frequently Asked Questions with VAT, sales tax, and ecommerce\u003C\u002Fh3>\n\n\u003Ch4>Should I use a service like Avalara or TaxJar?\u003C\u002Fh4>\n\n\u003Cp>Yes. Commerce Layer’s integrations with \u003Ca href=\"https:\u002F\u002Fdocs.commercelayer.io\u002Fcore\u002Fv\u002Fapi-reference\u002Favalara_accounts\">Avalara\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fdocs.commercelayer.io\u002Fcore\u002Fv\u002Fapi-reference\u002Ftaxjar_accounts\">TaxJar\u003C\u002Fa> are straightforward. Use the API to configure your account and automatically compute tax calculations for all orders within an associated market. We strongly recommend using these services to do all of your tax calculations. They are well documented, best-in-class tools tightly integrated with our platform.\u003C\u002Fp>\n\n\u003Ch4>What if I don’t want to use Avalara or TaxJar? Can I use some other service?\u003C\u002Fh4>\n\n\u003Cp>You can use Commerce Layer’s \u003Ca href=\"https:\u002F\u002Fdocs.commercelayer.io\u002Fcore\u002Fv\u002Fapi-reference\u002Fexternal_tax_calculators\">External Tax Calculators resource\u003C\u002Fa> mentioned above and delegate your tax calculation logic to \u003Cem>any\u003C\u002Fem> specified external service.\u003C\u002Fp>\n\n\u003Ch4>How does an external tax calculator access the prices to calculate the appropriate tax?\u003C\u002Fh4>\n\n\u003Cp>Tax calculators use the order from Commerce Layer to calculate taxes. The factors that determine tax rates included the market (merchant), product type, and customer shipping address. The calculator will return the appropriate tax amount based on the order.\u003C\u002Fp>\n\n\u003Ch4>How do you manage different VAT or sales tax categories in one ecommerce shop?\u003C\u002Fh4>\n\n\u003Cp>If product categories have different VAT or sales tax rates (e.g. books vs. food vs. other consumer goods), you need to manage different tax categories. Commerce Layer’s TaxJar and Avalara integrations support “tax categories”. That will enable more sophisticated segmentation of tax requirements at the SKU-level if required.\u003C\u002Fp>\n\n\u003Ch4>How do you apply taxes to shipping costs and how do you know when you should apply them or not?\u003C\u002Fh4>\n\n\u003Cp>TaxJar or Avalara send an API response that Commerce Layer can use to split taxes between an order and shipping costs. Side note, in July 2022, the VAT rules in Europe went through several changes. The changes were meant to simplify the process for ecommerce sellers. Avalara has put together a helpful \u003Ca href=\"https:\u002F\u002Fwww.avalara.com\u002Feu\u002Fen\u002Fsolutions\u002Fioss\u002Ffaqs.html\">IOSS (Import One-Stop-Shop) FAQ\u003C\u002Fa> as well as a \u003Ca href=\"https:\u002F\u002Fwww.avalara.com\u002Fvatlive\u002Fen\u002Fcountry-guides\u002Feurope.html\">directory of VAT tax guides\u003C\u002Fa> per EU country. \u003C\u002Fp>\n\n\u003Cp>This is why we strongly recommend you leverage Commerce Layer’s integration with either Avalara and TaxJar. They will help you solve these complex issues seamlessly. \u003C\u002Fp>\n\n\u003Ch4>How can I dynamically update a price based on a customer’s location and a local government’s VAT or sales tax rate?\u003C\u002Fh4>\n\n\u003Cp>The same general answer applies. Both TaxJar and Avalara will make this calculation easier. Taxes need to be updated in the cart at checkout based upon the order. A user will enter their information and the tax calculator integration takes care of the rest. \u003C\u002Fp>\n\n\u003Ch4>How can I manage multiple tax schemes on my ecommerce site that include one price for consumers (B2C), but various bulk rate prices for businesses (B2B)? And, how do I calculate VAT across the multiple countries where I ship?\u003C\u002Fh4>\n\n\u003Cp>As mentioned, you can specify one \u003Ca href=\"https:\u002F\u002Fdocs.commercelayer.io\u002Fcore\u002Fv\u002Fapi-reference\u002Fprice_lists\">Price List\u003C\u002Fa> per market to determine taxes you need to include and manage international business models with B2B\u002FB2C pricing. For example, with B2C pricing, it is standard in the EU to show the reference price that includes the VAT. The resulting price is typically rounded up, but this adds further complexity. The net revenue will not be rounded and will differ from country to country. This requires you to collect different revenues, provided you use the same reference price across countries. The table shows some examples for your reference. (\u003Cem>Consult your tax advisor for actual tax rates and calculations.\u003C\u002Fem>)\u003C\u002Fp>\n","directional",[],"orange",{"_modelApiKey":372,"code":373,"showLineNumbers":11,"highlightLines":280,"language":374,"size":375},"code_block","|         \t| VAT rate \t| B2C reference price \t| Revenues \t|\n|-----------|------------|-----------------------|------------|\n| France  \t|    20%   \t|         100         \t|   83.33  \t|\n| Germany \t|    19%   \t|         100         \t|   84.03  \t|\n| Croatia \t|    25%   \t|         100         \t|   80.00  \t|","markdown","Wide",{"_modelApiKey":366,"copy":377,"listStyle":368,"darkTheme":11,"buttons":378,"color":370,"indent":11},"\u003Cp>If you sell in B2B and want a rounded price excluding VAT, the resulting invoiced price will be different from country to country.\u003C\u002Fp>\n",[],{"_modelApiKey":372,"code":380,"showLineNumbers":11,"highlightLines":280,"language":374,"size":375},"|         \t| VAT rate \t| B2B reference price \t| Invoice price with VAT \t|\n|-----------|------------|-----------------------|--------------------------|\n| France  \t|    20%   \t|         100         \t|           120          \t|\n| Germany \t|    19%   \t|         100         \t|           119          \t|\n| Croatia \t|    25%   \t|         100         \t|           125          \t|",{"_modelApiKey":366,"copy":382,"listStyle":368,"darkTheme":11,"buttons":383,"color":370,"indent":11},"\u003Cp>With per-market prices lists, you can apply the correct tax for the orders you receive and for the channel you require (B2B vs. B2C).\u003C\u002Fp>\n\n\u003Chr>\n\n\u003Cp>If you don’t see a question you want answered, and are wondering how Commerce Layer can solve it, please contact us and we will update this post.\u003C\u002Fp>\n\n\u003Ch3>Summarizing VAT and sales tax considerations for ecommerce developers\u003C\u002Fh3>\n\n\u003Cp>Most ecommerce developers already know about VAT and sales tax. The struggle is how to implement complex logic that is often not provided out of the box by other monolithic solutions that are out there. Issues related to taxes can seem unending.\u003C\u002Fp>\n\n\u003Cul>\n\u003Cli>Taxes are different everywhere, subject to change, have local variations, apply differently to promotions and delivery costs.\u003C\u002Fli>\n\u003Cli>Even with the advice of a tax expert to build the correct taxation logic, how do you push it to the frontend? \u003C\u002Fli>\n\u003Cli>How do you pick and choose the price to display on the store, depending on the store and user location?\u003C\u002Fli>\n\u003Cli>How can you design the right ecommerce experience, especially for mixed B2C &amp; B2B stores or international stores? \u003C\u002Fli>\n\u003Cli>How can you dynamically manage the price component? \u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>All of these issues can be solved with Commerce Layer’s composable commerce approach. You can either easily connect Commerce Layer to your choice of an external service that meets your needs, or use Commerce Layer’s extensive APIs to build your own custom logic.\u003C\u002Fp>\n",[],{"_modelApiKey":385,"form":386},"form_block",{"_modelApiKey":55,"slug":138,"pardotFormEmbedCode":255,"formEmbedMinHeight":256,"displayTitle":257,"copy":258,"footNote":280,"successTitle":259,"successCopy":260},{"displayTitle":388,"cta":302,"ctaText":280,"cards":389},"Your next read",[390,405,424,441],{"_modelApiKey":212,"link":391,"subtitle":395,"date":395,"author":396,"additionalAuthors":400,"icon":401,"abstract":402,"tag":403,"displayTitle":392,"cardRatio":299,"featured":404},{"text":392,"isExternal":11,"url":280,"link":393},"Add any payment gateway. Anywhere.",{"_modelApiKey":212,"slug":394},"add-any-payment-gateway-anywhere","July 5, 2022",{"name":285,"picture":397},{"url":287,"alt":288,"title":288,"width":289,"height":289,"format":290,"focalPoint":398,"customData":399},{"x":292,"y":292},{},[],"credit-card","Local payment gateways are a necessity as you scale internationally. In this article you'll earn why, and how Commerce Layer enables you to add any payment gateway anywhere, making it easy to expand your business into new markets.",{"color":298,"name":100},0,{"_modelApiKey":212,"link":406,"subtitle":410,"date":410,"author":411,"additionalAuthors":419,"icon":420,"abstract":421,"tag":422,"displayTitle":407,"cardRatio":11,"featured":423},{"text":407,"isExternal":11,"url":280,"link":408},"What is Distributed Order Management and what are its benefits?",{"_modelApiKey":212,"slug":409},"what-is-distributed-order-management-and-what-are-its-benefits","June 8, 2021",{"name":412,"picture":413},"Fabrizio Picca",{"url":414,"alt":415,"title":415,"width":289,"height":289,"format":416,"focalPoint":417,"customData":418},"https:\u002F\u002Fwww.datocms-assets.com\u002F35053\u002F1614875259-commercelayeravatarsquare113f26.png","Fabrizio Picca —      Partnerships Manager at Commerce Layer","png",{"x":292,"y":292},{},[],"dropbox-logo","A well-designed and architected DOM provides unparalleled flexibility in achieving operational excellence goals, today and scale as your ecommerce business grows.",{"color":298,"name":100},1,{"_modelApiKey":212,"link":425,"subtitle":429,"date":429,"author":430,"additionalAuthors":437,"icon":438,"abstract":439,"tag":440,"displayTitle":426,"cardRatio":11,"featured":38},{"text":426,"isExternal":11,"url":280,"link":427},"Omnichannel vs multichannel: the key differences.",{"_modelApiKey":212,"slug":428},"omnichannel-vs-multichannel-the-key-differences","July 28, 2021",{"name":431,"picture":432},"Simone Fiorucci",{"url":433,"alt":434,"title":434,"width":289,"height":289,"format":416,"focalPoint":435,"customData":436},"https:\u002F\u002Fwww.datocms-assets.com\u002F35053\u002F1614874508-commercelayeravatarsquareff7e27.png","Simone Fiorucci — Marketing Manager at Commerce Layer",{"x":292,"y":292},{},[],"arrows-out","Terms like omnichannel and multichannel are often used interchangeably, but the two approaches are quite different. Learn where they diverge and how Commerce Layer can help you develop true omnichannel experiences.",{"color":298,"name":100},{"_modelApiKey":212,"link":442,"subtitle":446,"date":446,"author":447,"additionalAuthors":456,"icon":457,"abstract":458,"tag":459,"displayTitle":443,"cardRatio":11,"featured":460},{"text":443,"isExternal":11,"url":280,"link":444},"5 reasons you need to start doing ecommerce personalization on your online store.",{"_modelApiKey":212,"slug":445},"5-reasons-you-need-to-start-doing-ecommerce-personalization-on-your-online-store","January 27, 2022",{"name":448,"picture":449},"Esat Artug",{"url":450,"alt":451,"title":451,"width":452,"height":452,"format":453,"focalPoint":454,"customData":455},"https:\u002F\u002Fwww.datocms-assets.com\u002F35053\u002F1643045525-esat-artug.jpeg","Esat Artug — Content Manager at Ninetailed",640,"jpeg",{"x":292,"y":292},{},[],"handbag","Personalization is one of the key ingredients for boosting repeat purchases and increasing customer retention. That's why it is a must in ecommerce and you simply cannot let your competitors beat you at this.",{"color":298,"name":100},3,[462,463,465,467,469,471,473,475,477,479,481,483,485,487,489,491,493],{"attributes":302,"tag":303,"content":304},{"attributes":464,"tag":308,"content":302},{"property":307,"content":304},{"attributes":466,"tag":308,"content":302},{"name":311,"content":304},{"attributes":468,"tag":308,"content":302},{"name":314,"content":315},{"attributes":470,"tag":308,"content":302},{"property":318,"content":315},{"attributes":472,"tag":308,"content":302},{"name":321,"content":315},{"attributes":474,"tag":308,"content":302},{"property":324,"content":325},{"attributes":476,"tag":308,"content":302},{"property":328,"content":329},{"attributes":478,"tag":308,"content":302},{"property":332,"content":333},{"attributes":480,"tag":308,"content":302},{"name":336,"content":325},{"attributes":482,"tag":308,"content":302},{"property":339,"content":340},{"attributes":484,"tag":308,"content":302},{"property":343,"content":344},{"attributes":486,"tag":308,"content":302},{"property":347,"content":348},{"attributes":488,"tag":308,"content":302},{"property":351,"content":352},{"attributes":490,"tag":308,"content":302},{"property":355,"content":280},{"attributes":492,"tag":308,"content":302},{"name":358,"content":359},{"attributes":494,"tag":308,"content":302},{"name":362,"content":363},[496],{"name":285,"picture":497},{"url":287,"alt":288,"title":288,"width":289,"height":289,"format":290,"focalPoint":498,"customData":499},{"x":292,"y":292},{},1790330004550]