Do you want to add a VAT number field on the WooCommerce checkout page? WooCommerce does not have built-in functionality to add a VAT number field. However, I have created a custom PHP script that will add a VAT field on the checkout page and my account page.
WooCommerce VAT Number Checkout
Selling products in the European Union is very specific, mostly because of the legal aspects. However, WooCommerce sometimes does not take that into account, so it is necessary to adjust the store to the European conditions.
It is essential that your store should support the VAT identification number for issuing an invoice. In this tutorial, you will learn how to add a VAT field on the checkout page.
Steps to Add a VAT field on the Checkout Page
Here are the steps you need to follow:
- Log into your WordPress site and access the dashboard as the admin user.
- From the dashboard menu, click on the Appearance Menu > Theme Editor Menu. When the theme editor page is opened, look for the theme functions file with the extension functions.php. Open this functions file to add the function to add a VAT field on the checkout page.
- Add the following code to the functions.php file:
/***************************** FRONTEND ****************************************/ /************************** Filter to add a VAT field to: - My Account - Edit Form -- Billing fields - Checkout - Edit Form - Billing Fields This function is also reordering the form fields. ***************************/ function add_woocommerce_billing_fields($billing_fields){ //reorder woo my billing address form fields $billing_fields2['billing_first_name'] = $billing_fields['billing_first_name']; $billing_fields2['billing_last_name'] = $billing_fields['billing_last_name']; $billing_fields2['billing_vat'] = array( 'type' => 'text', 'label' => __('VAT number', 'keyelp-shop-customization' ), 'class' => array('form-row-wide'), 'required' => false, 'clear' => true ); $merged_billing_fields = $billing_fields2 + $billing_fields; return $merged_billing_fields; } add_filter('woocommerce_billing_fields' , 'add_woocommerce_billing_fields'); /********* Filters to add VAT when printing billing address on: - (1) My account - (2) Checkout - Order Received (after checkout completion), +++ Additional filters to format the printed output. ********/ // (1) Printing the Billing Address on My Account add_filter( 'woocommerce_my_account_my_address_formatted_address', 'njengah_my_account_my_address_formatted_address', 10, 3 ); function njengah_my_account_my_address_formatted_address( $fields, $customer_id, $type ) { if ( $type == 'billing' ) { $fields['vat'] = get_user_meta( $customer_id, 'billing_vat', true ); } return $fields; } // (2) Checkout -- Order Received (printed after having completed checkout) add_filter( 'woocommerce_order_formatted_billing_address', 'njengah_add_vat_formatted_billing_address', 10, 2 ); function njengah_add_vat_formatted_billing_address( $fields, $order ) { $fields['vat'] = $order->billing_vat; return $fields; } // Creating merger VAT variables for printing formatting add_filter( 'woocommerce_formatted_address_replacements', 'njengah_formatted_address_replacements', 10, 2 ); function njengah_formatted_address_replacements( $address, $args ) { $address['{vat}'] = ''; $address['{vat_upper}']= ''; if ( ! empty( $args['vat'] ) ) { $address['{vat}'] = $args['vat']; $address['{vat_upper}'] = strtoupper($args['vat']); } return $address; } //Defining the Spanish formatting to print the address, including VAT. add_filter( 'woocommerce_localisation_address_formats', 'njengah_localisation_address_format' ); function njengah_localisation_address_format( $formats ) { $formats['ES'] = "{name}\n{company}\n{vat_upper}\n{address_1}\n{address_2}\n{postcode} {city}\n{state}\n{country}"; return $formats; } /***************************** ADMIN USER PROFILE PAGE ****************************************/ /*************** Filter to add VAT Customer meta fields (user profile field on the billing address grouping) *****************/ add_filter( 'woocommerce_customer_meta_fields', 'njengah_customer_meta_fields' ); function njengah_customer_meta_fields( $fields ) { $fields['billing']['fields']['billing_vat'] = array( 'label' => __( 'VAT number', 'njengah' ) ); return $fields; } /*************************** ADMIN ORDER PAGE ****************************************/ /********* Filter to add VAT to the Edit Form on Order -- Admin page *********/ add_filter( 'woocommerce_admin_billing_fields', 'njengah_admin_billing_fields' ); function njengah_admin_billing_fields( $fields ) { $fields['vat'] = array( 'label' => __( 'VAT number', 'njengah' ), 'show' => true ); return $fields; } /**************** Filter to copy the VAT field from User meta fields to the Order Admin form (after clicking the dedicated button on the admin page) ******************/ add_filter( 'woocommerce_found_customer_details', 'njengah_found_customer_details' ); function njengah_found_customer_details( $customer_data ) { $customer_data['billing_vat'] = get_user_meta( $_POST['user_id'], 'billing_vat', true ); return $customer_data; }
Conclusion
In summary, you have learned how to add a VAT number checkout field on the WooCommerce checkout page. I recommend adding the code snippets on the functions.php file of your child theme so that changes you make will not be lost during an update. The code snippet automatically displays the VAT Number on the issued invoices.
Similar Articles
- How to Hide Update Cart Button WooCommerce Cart Page
- How to Hide Quantity In Stock In WooCommerce
- How to Move Primary Menu Storefront WooCommerce
- How to Hide Product Description Heading WooCommerce
- How to Simplify Checkout Free Items Storefront Theme
- How to Change WooCommerce Checkout Labels
- How to Create Checkbox Field in WooCommerce Checkout Page
- How to Create WooCommerce Conditional Checkout Fields
- How to Add Select Field to Checkout WooCommerce
- How to Change WooCommerce Checkout Error Messages
- How to Add WooCommerce Checkout Default Country
- How to Refresh Checkout Page WooCommerce
- How to Edit Required WooCommerce Checkout Fields
- How to Add Hidden Field on WooCommerce Checkout Page
- How to Add WooCommerce Invoice Checkout Page
- How to Set Up WooCommerce You Must be Logged in to Checkout
- How to Create Account at Checkout WooCommerce
- How to Send to Mpesa WooCommerce Payment for Free
- How to Force Secure Checkout In WooCommerce