Have your say in Community Polls: What was/is your greatest motivation to start your own business?

Enabling TAX/VAT number collection in checkout by adding extra field to billing address

Enabling TAX/VAT number collection in checkout by adding extra field to billing address

marianpopescu
Tourist
5 0 52

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:

  • Apps that enable you to add tax number in the cart. This is not a proper solution, customers go directly into checkout and they skip cart. This is not simple and intuitive and creates a bad user experience.
  • Add custom code in the checkout. This means hiring a developer or use Sufio (40USD/month) + mandatory Shopify Plus plan to enable checkout customisation (2000 USD/month). 
  • shopify-capture-vat-number-customer-checkout-p.width-620.png

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"

marianpopescu_0-1653417733307.png

 

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.

 

Replies 49 (49)

marianpopescu
Tourist
5 0 52

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...

wisefools
Shopify Partner
9 0 6

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.

 

Screenshot 2022-08-18 at 16.17.04.png

marianpopescu
Tourist
5 0 52

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.

 

 

Weedlover
Excursionist
17 0 5

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?

marianpopescu
Tourist
5 0 52

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.

 

Egle
Excursionist
26 0 17

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.

LeonL
Tourist
6 0 22

@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.

Jakob2
Excursionist
11 0 51

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.

Weedlover
Excursionist
17 0 5

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).

 

 

 

CGArroyo
Visitor
1 0 0

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.

 

test shpf 2.pngtest shpf.png

Stelton
Shopify Partner
12 0 8

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

Stelton
Shopify Partner
12 0 8

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...😉

Horzo
Shopify Partner
11 0 4

Are you using Shopify plus plan? 

Stelton
Shopify Partner
12 0 8

No.

FensterCoffee
Visitor
1 0 0

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!

Stelton
Shopify Partner
12 0 8

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. 

Shoptesting
Visitor
2 0 2

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).

just2233
Visitor
1 0 3

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. 😞

Stelton
Shopify Partner
12 0 8

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. 😊

somshine
Visitor
1 0 0

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?

Nimrod
Shopify Partner
3 0 1

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.

Stelton
Shopify Partner
12 0 8

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. 🙂 😊

Nimrod
Shopify Partner
3 0 1

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 :))

Floris-de-vries
Shopify Partner
9 0 10

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 🙂

darekPL
Shopify Partner
3 0 4

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.

darekPL
Shopify Partner
3 0 4

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... 

order.billingAddress.address2 not empty and exists -> "Update customer note" with "{{order.billingAddress.address1}}" and "update order note" with "VAT(or TIN/EAN,...): {{order.billingAddress.address2}}" aka. add 2x "do this" flow,  1 for each

 

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.

wisefools
Shopify Partner
9 0 6

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:

  1. In the cart drawer we have a checkbox "Need an invoice?"
  2. Once clicked you can only submit with a valid VAT number filled out
  3. We validate the VAT number (vies validation)
  4. You can proceed to the checkout
  5. The VAT number is then stored as an order note
  6. We have a webhook on "order creation" that checks for the VAT number and moves it over to a customer metafield
  7. This field can than be mapped to the client VAT field in the ERP software
darekPL
Shopify Partner
3 0 4

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.

wisefools
Shopify Partner
9 0 6

You'll need to add the html to the cart-drawer.liquid file

adrian56
Tourist
4 0 1

Could they share the html code needed to create this field?

 

wisefools
Shopify Partner
9 0 6
<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>
AnaFerreira
Visitor
2 0 0

where to paste it, please? thank you

Lorenz22
Tourist
4 0 3

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? 

 

Stelton
Shopify Partner
12 0 8

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. 

Lorenz22
Tourist
4 0 3

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? 

Stelton
Shopify Partner
12 0 8

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.

Foros86
Tourist
3 0 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).

dropshop
Visitor
2 0 8

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:

  • Define a manual collection with all your products. Yes, it has to be a manual collection, an automatic one won't work for this.
  • Define a product tax override for this collection for every EU country that is not yours. For that go to the online shop settings - Taxes and duties - select European Union, go to Product Overrides in the section Tax Overrides, click on Add product override, select your "all products" collection, the EU country and set the tax rate to 0%.

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.

Lorenz22
Tourist
4 0 3
Awesome, thank you very much for this workaround. 

I assume it works perfectly fine for b2b customers, but what if you sell to b2b and b2c ? 






dropshop
Visitor
2 0 8

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".

Creanimation
Visitor
1 0 0

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  

Floris-de-vries
Shopify Partner
9 0 10

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.

Stelton
Shopify Partner
12 0 8

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? 

RemcoTools
Tourist
4 0 1

Does this work on a basic plan (not Shopify Plus?)

GetAllTool
Shopify Partner
36 0 7

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.

vat.png

CosminMihai09
Visitor
1 0 0

Thanks a lot. It helped me solve my problem 😄

GetAllTool
Shopify Partner
36 0 7

Edwin_Oxilayer
Shopify Partner
8 1 1

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.

 

Screenshot 2024-06-19 at 14.36.47.png

Murk
Visitor
1 0 0

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)

  • Contact: Address2 Label
  • Contact: Optional Address2 Label --- (displayed when it's set to "optional")

Checkout and system --- Checkout field errors: (page 49/97)

  • Field Errors: Address Address2 Blank
  • Field Errors: Address Address2 Too Long
  • Field Errors: Address Address2 Contains Emojis
  • Field Errors: Address Address2 Contains Html Tags

Checkout and system --- Checkout field errors: (page 50/97)

  • Field Errors: Address Address2 Contains Mathematical Symbols --- (page doesn't show up in search, easy to miss!)

Checkout and system --- Checkout wallets errors missing: (page 85/97)

  • Missing: Address2

 

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.