Remove Address Fields in WooCommerce Billing and Shipping in Form Checkout

WooCommerce has the ability to remove the address fields in the checkout form of the billing and shipping forms, this is great if you do not require the address fields as you may have a virtual/download only products that don’t require shipping, less fields to fill out = happy customers.


You can remove address field layouts, so you have just name and email.


Remove Billing Fields

This is all done with the woocommerce_billing_fields filter, so in your themes functions.php you can add the following…

So this will remove or unset all the billing address fields if you want to keep a certain field in just remove the relevant line from the code snippet.

Remove Shipping Fields

If you have products that are linked to shipping, then the additional shipping fields also show, the woocommerce_shipping_fields filter can remove these, you probably want to keep most to ship the item, but might want to remove the shipping_company field for example.

What if you wanted to retain all the fields if the cart products contained shipped products but also wanted a trimmed down field selection if the cart only had virtual products – then you can use the looped carts items to determine if they are virtual only…

Ref. & Ref


  1. Do It Now Coach Paul Hinkle on November 18, 2021 at 3:13 am

    I hope I don’t get canceled for saying “You’re the man!”

  2. Chua Yew Beng on February 3, 2021 at 9:16 am


    How to unset the billing address field if the payment method is COD?

  3. Jayesh Purohit on September 14, 2020 at 10:51 am

    How to hide “BILLING DETAILS” & “ADDITIONAL INFORMATION” in checkout page?
    show only “YOUR ORDER”

  4. Soulshake on July 3, 2020 at 7:49 pm

    Yeeeah! Thank you so much!! This works even with variations (same product with a virtual/downloadable variation and a shipped one)! It is the only one on the whole web working with this setup!
    This should be default in WC, THANK YOU SO MUCH!!

  5. Alan Woollard on May 22, 2020 at 2:05 pm

    This looks almost what I’m looking for.
    To be perfect for me I want to be able for customers to select “Pick up” or Delivery and based on that
    either not show address fields for pick up (Or at least have them optional.
    or require them for delivery option

  6. Maarja on May 21, 2020 at 2:09 pm


    The code is awesome – i could remove the unwanted fields, but now i have the problem that i cannot finish the checkout because the program asks me to fill in the required fields, which i removed from the page.

    Thank You in advance!

  7. Jose on February 15, 2020 at 12:01 am

    Thanks, It worked perfectly for me!

  8. Alvina on August 26, 2019 at 11:17 am

    Thank you for sharing this tutorial. Can you please tell me why the checkout stop working after removing last name and middle name fields? Here is the code that I have seen have almost implemented the same just change the fields name that I don’t want to showbut the checkout not working as the fields removed. Is there any other way to do this?

    function remove_additional_information_checkout($fields){
    unset( $fields[“billing_first_name”] );
    unset( $fields[“billing_middle_name”] );
    return $fields;
    add_filter( ‘woocommerce_billing_fields’, ‘remove_additional_information_checkout’ );

  9. hardik thakkar on April 30, 2019 at 4:25 am

    How can I do the opposite? When typing the address for some countries like Singapore, WooCommerce by default hides delivery suburb and state fields. Is there a way I can force those fields to be always visible?

  10. SuziQue on March 21, 2019 at 5:54 pm

    Is there a way to select for each product where or not an address is needed.
    I have both physical and digital products. I only need the address if they are ordering physical products.

    • Neil Gowran on March 23, 2019 at 12:18 am

      Good question – have added a snippet in the post.

  11. Patryk on March 13, 2019 at 9:08 am

    Is there possibility to set fields dependently on user role?
    In. example I have basic user and merchendiser
    For basic user I don’t need address, only name and email for payment
    but for Merchendiser I need those additional fields like: name of company, address of store etc.

  12. Melker Walter on June 28, 2017 at 7:31 am

    Great post, I always prefer coding than using a plugin for customizing woocommerce checkout page. I did also customize my checkout by changing the texts where I made a post here:

    Great write-up by the way!

  13. miguras on September 4, 2016 at 9:29 pm

    Hello. Great article. I made a plugin that do the same. You can disable/rearrange content inside the single product page and shop page. Also, you can remove checkout fields. I uploaded it to wordpress, so here you have the link WooEnhacer – WooCommerce Customizer if someone is interested.

Leave all Comment