{"id":450,"date":"2019-06-07T06:03:05","date_gmt":"2019-06-07T06:03:05","guid":{"rendered":"https:\/\/meetanshi.com\/blog\/2019\/06\/07\/add-custom-field-in-address-form-in-magento-2\/"},"modified":"2025-05-22T16:36:34","modified_gmt":"2025-05-22T11:06:34","slug":"add-custom-field-in-address-form-in-magento-2","status":"publish","type":"post","link":"https:\/\/meetanshi.com\/blog\/add-custom-field-in-address-form-in-magento-2\/","title":{"rendered":"How to Add Custom Field in Address Form in Magento 2"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Magento 2 is a widely used platform by various types of businesses. Hence, the checkout page, shipping or billing page may not be the same as the default Magento 2 for every store. According to the business requirement, the address forms may vary.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example, implementing the Indian GST tax in Magento 2 store requires to add Buyer GST number field in the checkout form. It is a custom field that needs to be programmatically added to get buyer GSTIN from the customers. Here. I\u2019ll show how to&nbsp;<em><strong>add custom field in address form in Magento 2<\/strong><\/em>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Method to Add Custom Field in Address Form in Magento 2:<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">1. Create&nbsp;<strong>registration.php<\/strong>&nbsp;file in&nbsp;<em><em><strong><em><em><strong>app\\code\\[Vendor]\\[Namespace]\\<\/strong><\/em><\/em><\/strong><\/em><\/em><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\\Magento\\Framework\\Component\\ComponentRegistrar::register(\n    \\Magento\\Framework\\Component\\ComponentRegistrar::MODULE,\n    '[Vendor]_[Namespace]',\n    __DIR__\n);<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">2. Create&nbsp;<strong>module.xml<\/strong>&nbsp;file in&nbsp;<em><em><strong><em><em><strong>app\\code\\[Vendor]\\[Namespace]\\etc<\/strong><\/em><\/em><\/strong><\/em><\/em><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?xml version=\"1.0\"?>\n&lt;config xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"urn:magento:framework:Module\/etc\/module.xsd\">\n    &lt;module name=\"[Vendor]_[Namespace]\" setup_version=\"1.0.0\"\/>\n&lt;\/config><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">3. Create&nbsp;<strong>di.xml<\/strong>&nbsp;file in&nbsp;<em><em><strong><em><em><strong>app\\code\\[Vendor]\\[Namespace]\\etc<\/strong><\/em><\/em><\/strong><\/em><\/em><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?xml version=\"1.0\"?>\n&lt;config xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\n        xsi:noNamespaceSchemaLocation=\"urn:magento:framework:ObjectManager\/etc\/config.xsd\">\n    &lt;type name=\"Magento\\Checkout\\Block\\Checkout\\LayoutProcessor\">\n        &lt;plugin name=\"gst_number\" type=\"[Vendor]\\[Namespace]\\Plugin\\Checkout\\Model\\LayoutProcessor\" sortOrder=\"100\"\/>\n    &lt;\/type>\n&lt;\/config><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">4. Create&nbsp;<strong>LayoutProcessor.php<\/strong>&nbsp;in&nbsp;<em><em><strong><em><em><strong>[Vendor]\\[Namespace]\\Plugin\\Checkout\\Model<\/strong><\/em><\/em><\/strong><\/em><\/em><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\nnamespace Vendor\\Extension\\Plugin\\Checkout\\Model;\n\nuse Magento\\Checkout\\Block\\Checkout\\LayoutProcessor as ChekcoutLayerprocessor;\n\nclass LayoutProcessor\n{\n    protected $dataHelper;\n\n    public function __construct(\\Vendor\\Extension\\Helper\\Data $dataHelper)\n    {\n        $this->dataHelper = $dataHelper;\n    }\n\n    public function afterProcess(ChekcoutLayerprocessor $subject, array $jsLayout)\n    {\n        $flag = false;\n        if ($this->dataHelper->getBuyerGst()) {\n            $flag = true;\n        }\n\n        $jsLayout['components']['checkout']['children']['steps']['children']['shipping-step']['children']\n        ['shippingAddress']['children']['shipping-address-fieldset']['children']['buyer_gst_number'] = [\n            'component' => 'Magento_Ui\/js\/form\/element\/abstract',\n            'config' => [\n                'customScope' => 'shippingAddress',\n                'template' => 'ui\/form\/field',\n                'elementTmpl' => 'ui\/form\/element\/input',\n                'options' => [],\n                'id' => 'gst_number'\n            ],\n            'dataScope' => 'shippingAddress.buyer_gst_number',\n            'label' => 'GST Number#',\n            'provider' => 'checkoutProvider',\n            'visible' => $flag,\n            'validation' => [],\n            'sortOrder' => 252,\n            'id' => 'buyer_gst_number'\n        ];\n\n        return $jsLayout;\n    }\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">With the above method, you can add as many custom fields you want in the address form in Magento 2.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Thanks!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Magento 2 is a widely used platform by various types of businesses. Hence, the checkout page, shipping or billing page may not be the same&#8230;<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[34],"tags":[],"class_list":["post-450","post","type-post","status-publish","format-standard","hentry","category-magento"],"acf":[],"_links":{"self":[{"href":"https:\/\/meetanshi.com\/blog\/wp-json\/wp\/v2\/posts\/450","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/meetanshi.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/meetanshi.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/meetanshi.com\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/meetanshi.com\/blog\/wp-json\/wp\/v2\/comments?post=450"}],"version-history":[{"count":5,"href":"https:\/\/meetanshi.com\/blog\/wp-json\/wp\/v2\/posts\/450\/revisions"}],"predecessor-version":[{"id":15389,"href":"https:\/\/meetanshi.com\/blog\/wp-json\/wp\/v2\/posts\/450\/revisions\/15389"}],"wp:attachment":[{"href":"https:\/\/meetanshi.com\/blog\/wp-json\/wp\/v2\/media?parent=450"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/meetanshi.com\/blog\/wp-json\/wp\/v2\/categories?post=450"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/meetanshi.com\/blog\/wp-json\/wp\/v2\/tags?post=450"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}