Accepting credit cards, warehouses, and shipping and fulfilling orders
Hi,
The problem: In the European Union, no matter the country, it is mandatory to issue VAT invoice if the customer is a "company". VAT invoice means that you will have to collect and show the company name and VAT number on the invoice. It is not legal to issue invoice for a company without collecting and adding the VAT number on the invoice. Shopify only has the capability to collect "Company name" in the billing address section during checkout.
Existing workaround:
Conclusion
If you operate a standard Shopify store in the EU, you cannot sell and invoice to other companies, because you will not have their TAX/VAT number. This is a huge issue, as 15% of our customers are companies. I'm on talking about advanced features such as VAT validation, but only TAX/VAT number collection. This is such basic functionality that should work out of the box and this should not need custom code or workarounds.
Question
I've seen a post by @charlespeji mentioning that at some point Shopify released a feature to natively collect Tax/VAT field in checkout, see below:
Go to Settings > Checkout > Order Processing
Tick the checkbox for "Enable fields for additional information"
We are on the Shopify Plus plan, but the feature is not visible in Settings. Does anyone know about this feature or has found a better solution?
Also, thoughts or opinions are welcomed.
Almost 2 months now and we are still researching for a fix. Some people suggested me to just rename the "Company" field in checkout with "VAT number". I think this is just cutting corners and is not a solid approach, as all integration will get the VAT number instead of the company name, Moreover, company name will be missing. If you are a merchant from EU, let me know how did you solve this problem...
We store it as an order_note. Not ideal either since it is linked to an order instead of a customer. Working with invoices and Shopify is only possible with a workaround like this or changing the address2_field for example to a VAT field and map this field in your invoicing software.
Capturing VAT numbers is rather complex since you also need to charge VAT or subtract VAT based on the VAT country settings and the regulations in your country as an owner.
Hi,
It is nice to see I'm not the only one struggling with VAT in Europe.
Yep, capturing VAT number in cart Notes or in the Address section is a quick fix but not a proper and solid solution and sellers should not be forced to apply this kind of solutions for a basic need, especially when using a big platform like Shopify.
Shopify should at least offer the posibility to capture the VAT number in a native field and assume the seller will calculate and handle VAT treatment according to local regulations.
By not putting the field out there, the VAT problem is ignored, meaning Shopify Stores don't offer support to sell to companies in Europe, without workarounds.
Simply put: If you are selling in Europe, Shopify checkout does not support orders placed by companies, only individuals.
First step would be for Shopify to acknowledge this issue and to enable a native TAX Number field in checkout, without implementing TAX calculation and let the seller do his thing.
This is still better than letting sellers find their own way and collecting tax number in notes, address or who knows where.
I am sharing the same problem.
We want to use sparklayer B2B app for a hybrid B2C/B2B shop. B2B customers can only buy with a b2b account. The shopify generated invoice pdf is created by order printer pro in conjunction with order printer templates, both from forsberg two Apps.
The forsberg two Apps grabs the order note field and uses it to display the VAT. But our customers can't put that in every order, they will forget it and the "order note" field would have to be described as "VAT" but that would interfere with B2C.
My solution approach is to create another customer registration form field for the VAT with metafields and then edit the invoice template, to use that metafield instead. Newbie in shopify coding, but it is 100% doable. What do you guys think?
Hi Weelover,
We have looked over the solution to rename and use the "notes" field in the cart, but reached the conclusion is not a solid solution.
As you said yourself, customers will not know they should enter the VAT number there prior to checkout and this will not work for consumers, and interfere with B2C.
The field should be located in checkout. To add a custom field into checkout, you need Shopify Plus, so this automatically excludes 90% of shopify stores. Even with Shopify plus, adding custom code will disable automatic updates from Shopify, meaning further updates need to be done manually.
However, bad as it is, I think is the only solid solution for the moment.
Permanent fix would be a native field from Shopify, similar with the one the Shopify team introduced for Brasil, as described in my previous posts.
I am asking myself why isn't this standard functionality? Simply, it does not seem right to do checkout customisation just to be able to serve customers that want invoice for a company.
Maybe we are missing something? Any other thoughts are welcome.
That's hugely disappointing that for so many years that Shopify has existed, there's no solution for this thing. We need to manually edit orders, deduct VAT charges, and everything for hundreds of customers every month. That's very frustrating.
@ShopifyPLEASE, do take a look a this. Never had I thought this should be an issue prior to setting up my shop. In my case 99% of customers are companies, so this is a huge problem.
This issue/bug has existed for all of years we have been on the platform.
This forum also has multiple threads on this exact topic because it affects so many merchants and is so extremely frustrating.
Unfortunately at present it really seems Shopify is
a) does not really and fully understand the problem.
b) want to protect 3rd party plugins and derived revenue
c) wants to force you into the Plus plan
If I had to set up a store for European B2B I would definitely not pick Shopify as the platform. Proper Vat handling is a standard feature in almost all other commerce solutions.
I agree with you in general but found a solution for our shop, because we differentiate between b2c and b2b customers.
B2B Customer uses our B2B contact form to ask for a b2b account/access. The form asks for VAT.
Then we create the account and can use the VAT from customer note.
And the customer NOTE field is even used by Order Printer Pro with Orderly Email Templates (Apps).
I know it is late and it is a big NO for medium-big companies.
I work in webflow and just added a big button on my product page for the clients to click if they need VAT number to be introduced and for it to appear in the invoice. It leads the client to a website page with a screenshot of the Shopify Checkout indicating that if they want their VAT number in the invoice to make the tax pay thing when it takes place in their country just write it in the "Company" space at checkout and Sufio make its thing and adds it to the invoice.
It is no automatic tax exemption, but they can do the right thing after.
I have had challenges with the same problem with VAT code but also EAN that we use in DK.
I've solved this by creating a Meta field and then adding this code in cart.lic, that is, on the Cart page:
<input id="vat-nmb2" type="text" class="input__vat_ean" name="attributes[VAT]" pattern=".{8,}" placeholder="Enter no." value="{{ customer.metafields.my_fields.vat_nmb.value }}" required >
It has worked flawlessly until last week when it stopped. The data that the customer enters in the field will not be stored.
Has anyone experienced the same problem? Have there been changes at Shopify that make the code no longer work?
I've had a dialogue going on with Shopify support, but they won't help with anything when code is included in the problem.
//Mik
After 14 days, the attributes on the Cart page work again. And honestly, and apart from the fact that I have spent a lot of time finding a cause, there have been no changes made to the shop. All tests are done at a test shop. Good that it works again...😉
Are you using Shopify plus plan?
No.
Hi! Actualy gret job!
Sorry to bother you!
Could you write step by step how to install the VAT number field into the checkout page so that this number is then saved in the client's profile? Thank you!
Update customer metafield · Shopify Help Center
1. Create a META field(s):
Settings -> Custom data ->customer - eg. vat_nmb
2. Place this code in the cart.lic file (Name can be different):
<input id="vat-nmb2" type="text" class="input__vat_ean" name="attributes[VAT]" pattern=".{8,}" placeholder="Enter no." value="{{ customer.metafields.my_fields.vat_nmb.value }}" required >
Feel free to custimize the input field. It is quite simple.
Thanks for the code! We´re testing Shopify right now. This missing feature is an absolute deal breaker for us. The missing Stripe payment integration is less important (albeit very annoying).
This missing VAT feature is also an absolute deal breaker. I spend like one week for putting all informations and creating the shop. I add all integrations, and now I see that there is lack of VAT field. Cant we worse. 😞
It does not work anymore. The metafields data on the cart pages is not transfered to the order. 😞 Have not made any change in the shop. Have been in contact with Shopify. No help. Does anybody had the same experience and maybe a solution. I would love to hearing from you. 😊
Could you please help me with extract .liquid file?
you mentioned file name not found in the edit code session (cart.lic)
We have to add VAT input on checkout then why we have to change the cart.lic?
You can use the Address2 field for VAT number input. Just make sure to translate the theme language string to say what makes sense from your customer's point of view. EU buyers already know that they need to input the VAT number so they are looking for it anyway. Also, you can make this field mandatory if you have only B2B customers.
Hi Nimrod,
Thanks for your input. 😊
Yes, that will soon be the only solution left. I have made the change as you have suggested. But it is not just straightforward, as our integration into our accounting system also needs to be adjusted.
As mentioned earlier, I used the method with meta fields (this code in the cart.lic file (Name can be different):
<input id="vat-nmb2" type="text" class="input__vat" name="attributes[VAT]" pattern=".{8,}" placeholder="Enter VAT no." value="{{ customer.metafields.my_fields.vat_nmb.value }}" required >)
which worked well as you could also check the user's input. Unfortunately, it doesn't work anymore. If you could be sure that this solution would work, we were already well on our way.
There's not much help available from Shopify's support. 😒
Then again. If anyone has had the same challenges with the META field solution and found a solution, we would like to hear from you. 🙂 😊
Well, this is exactly what we are doing. It's faster to do the adjustment to accounting software than to expect Shopify to solve this issue anytime soon :))
I don't know if the following issue has already been resolved, but I've found a small/temporary solution, at least. You can translate the 'adress 2' field in the translator to 'vat number.' The drawback, however, is that it doesn't get saved properly in the correct field. For this, I've come up with the following solution: creating a metafield at the 'customer' level and then, using the 'flow app,' when an order is created and it contains the 'address 2' field (in our case, the VAT number), then save it in the metafield that was previously created at the 'customer' level.
Now we have our custom metafield "vat number" filled with the correct vat number information.
I hope this provides a small solution 🙂
Do you mind elaborating on the flow method? so you use a trigger, condition and action. The action in this case would be "update customer metafield"? Regarding the condition, do you use "order.billingAddress.address2" as a sole condition, or also the "order.shippingAddress.address2" as an additional "or" condition? If you could break this down into baby steps, you'd save some lives. Thanks for the tips though, currently working on the implementation. Feel free to drop it a a screenshot or 2 🙂
To everyone stuck with this problem: Make sure to edit the address2 name to VAT/TIN/ whatever you need at online store -> edit default theme content and not via a translating app, as the app solution somehow won't display the changes on the checkout screen.
Update: I fixed the problem with a very similar approach. Creating a metafield works but I had no idea what to do with it as I signed up for the Sufio invoicing sotware. Luckily you can edit the invoice design code there and so I made a technically SUPER ugly workaround but the invoice looks perfect now.
So if you work with Sufio and want the invoices to work for EU:
1. Translate the addressline2 field on the checkout to "Add VAT"/TIN/whatever tax info you need
2. Go to the flows app and select "order created" as a trigger -> "check if...
3. Go to Sufio -> design -> Edit code
4. Modify the client addres ID to show the customer note where we isolated address line 1 :<div id="{{ client.address.id }}" class="{{ client.address.css_classes }}">{{ customer.note.text }}</div>
5. Add the isolated VAT/TIN/... which we stored as the order note below by adding this piece of code: <div id="{{ client.details.company_no }}" class="{{ client.address.css_classes }}">{{ order.note.text }}</div>
This solution took me 4.5 hours of mental madness inside a polish shopping mall co-working space. F you shopify, but we made it.
No idea how it'll affect me expanding to other countries later though but by then I should be able to hop on shopify plus so we'll see.
Hi All,
Since this thread is still active, I will share our latest solution working with webhooks.
This comes in handy when you are not using sufio as an in between app, but if you want to link to an ERP for example.
We use a cart drawer or a cart page in this case:
Excellent addition!
Also, just figured that you can capture it with a product personalization app like "live product options" by adding a custom field below the product variants. Might help someone depending on the product you're selling.
Just one question: What do you use to create that checkbox field? I tried some apps but since I'm using the debutify theme I seem to have some problems adding code to the drawer.
You'll need to add the html to the cart-drawer.liquid file
Could they share the html code needed to create this field?
<div class="need-invoice-wrapper">
<div class="flex">
<label for="addVAT">Need an invoice?</label>
<input type="checkbox" name="addVAT" id="addVAT">
</div>
<input class="" type="text" name="attributes[VAT Registration Number]" id="vat" form="CartDrawer-Form" placeholder="VAT Registration Number">
<div class="error-msg-vat error-text"></div>
</div>
where to paste it, please? thank you
Assuming you're a registered business in Germany, and you sell B2B to Austria, this would mean an intracommunity supply, which is tax free. However, having the b2b customer filling in the VAT number, will not have the Taxes deducted from the checkout?
I thinks it's such a standard thing to ask, why is @Shopify not able to solve it appropriately?
I do not sell to Autralia. I'm registred in Denmark (EU) When companies sell B2B inside EU they must collect VAT number for documentation to the TAX autority. This is why, when you sell goods B2B inside EU without taxes, but you must to document this.
I wrote Austria, not australia 😉
So I know the problem. However, I think just collecting the VAT number is not enough as it would not deduct the VAT from the b2b customer automatically?
what we need it
1) enable b2b customers to fill in company name and VAT-number at CHECKOUT not at cart
2) If VAT is correct (VIES approved) deduct the VAT for the customer
3) Create in voice including the intracommunity supply.
Or how do you subsctract the VAT after the VAT-number was filled in?
Sorry about Austria... 🙂
We only sell to B2B.
We have a delivery setup without TAX. Invoices at handle in an externel services.
Therefore agree with 1 and 2.
This is exactly what we need also. I know many websites have it so there should be an easy way to do it (without the need of touching the code/hiring someone to do it).
Yes, this is cumbersome. Here in Germany, when you sell B2B to Germany you have to collect VAT but not when it's to any other EU country. Shopify always charges VAT for sales to any EU country if your shop is within EU.
After some back and forth with their support, the workaround we now use is:
In case you define a new product don't forget to add it to this collection.
Ugly, but it works and we don't have to manually deduct the VAT from the invoice. BTW the tax estimate calculator currently doesn't properly calculate the VAT based on country alone, but it is correct once you have filled out the complete address and it is validated.
You're welcome and please don't hesitate to "thumbs up" my previous post if you found it helpful. Newbie here who can use the rep. 😀
As for b2c and b2b, if I had to sell to both I'd use separate, dedicated storefronts and GitHub to synchronize the theme. Products synchronized by export/import if necessary. This of course with any of the cheap basic plans. I hear that Shopify Plus has a lot more functionality built in but it's "not for us".
Hey dropshop, we are currently working on a b2b store, maybe you think you can help us to create the setup? We are a German company creanimation.de — would be super great to write via mail or have a call 🙂 best, Fabian
I have previously indicated how you could obtain a tax validation and number through a detour. Now, I have often received this question from customers and out of necessity, I have created my own app. I hope this helps you further!
https://apps.shopify.com/oo-eu-tax-exemption
If there are any questions, I'm always happy to hear them.
Nice work. I have 2 question:
1. Will the VAT bestored with the order
2. If the customer click "Check Out" the order can be fullill without VAT number check. Is that correct?
Does this work on a basic plan (not Shopify Plus?)
Our app can help you collect VAT numbers in the checkout phase. You don't need to be Shopify plus. Our app name is King Checkout Validation.
Thanks a lot. It helped me solve my problem 😄
We're glad our app (King Checkout Validation) was useful to you!
Hi,
No one has mentioned, but you can add VAT ID field to the thank you page. It's also not perfect solution, but it can be used as an alternative.
VAT ID is saved to the customer metafield and can be added to an invoice. You can add such app block with Oxilayer PDF Invoice Generator app.
I ended up doing what Nimrod suggested, using Address2 as a field to save VAT ID.
Note that for English, you have to adapt English for *every* market, which isn't great, but a lot better than alternatives.
I wrote everything down to hopefully help anyone running into this.
Steps to change "Address 2" to "VAT ID" or other text
1) Requires "Translate & Adapt"
2) Select "Adapt a Market > International > English" so it displays "Adapting English for International"
3) Search for "Apartment, suite, etc." to display most of them in the side bar.
4) Enter the desired text in the relevant fields and save. Click on the results on the left to jump to pages 15, 49 and 85. Don't miss page 50!
5) Repeat steps 2-4 for every market for English
6) Use "Translate across markets > your language" to adapt other languages with steps 2-4
List of translations
Checkout and system --- Checkout contact: (page 15/97)
Checkout and system --- Checkout field errors: (page 49/97)
Checkout and system --- Checkout field errors: (page 50/97)
Checkout and system --- Checkout wallets errors missing: (page 85/97)
Note!
This makes your shop collect the data but it doesn't change invoices or anything else. We have separate software for that so it's not in the scope of what I was trying to do.
I'm far from a Shopify expert, I just hope this saves time and frustrations for someone at some point.
Dropshipping, a high-growth, $226 billion-dollar industry, remains a highly dynamic bus...
By JasonH Nov 27, 2024Hey Community! It’s time to share some appreciation and celebrate what we have accomplis...
By JasonH Nov 14, 2024In today’s interview, we sat down with @BSS-Commerce to discuss practical strategies f...
By JasonH Nov 13, 2024