diff --git a/vendor/paypal/module-braintree-core/view/frontend/web/js/googlepay/implementations/shortcut/3d-secure.js b/vendor/paypal/module-braintree-core/view/frontend/web/js/googlepay/implementations/shortcut/3d-secure.js
index 4faeb41d..c9417ea8 100755
--- a/vendor/paypal/module-braintree-core/view/frontend/web/js/googlepay/implementations/shortcut/3d-secure.js
+++ b/vendor/paypal/module-braintree-core/view/frontend/web/js/googlepay/implementations/shortcut/3d-secure.js
@@ -195,9 +195,11 @@ define([
         checkBillingLineLengths: function (errorMessage, billingAddress, shippingAddress) {
             let lineError = null;
 
-            if (billingAddress.street[0].length > 50 || shippingAddress.street[0].length > 50) {
+            if (billingAddress.street[0].length > 50 ||
+                (shippingAddress.street !== undefined && shippingAddress.street[0].length > 50)) {
                 lineError = 'line1';
-            } else if (billingAddress.street[1].length > 50 || shippingAddress.street[1].length > 50) {
+            } else if (billingAddress.street[1].length > 50 ||
+                (shippingAddress.street !== undefined && shippingAddress.street[1].length > 50)) {
                 lineError = 'line2';
             }
 
diff --git a/vendor/paypal/module-braintree-core/view/frontend/web/js/view/payment/3d-secure.js b/vendor/paypal/module-braintree-core/view/frontend/web/js/view/payment/3d-secure.js
index 0e148b25..d42df086 100755
--- a/vendor/paypal/module-braintree-core/view/frontend/web/js/view/payment/3d-secure.js
+++ b/vendor/paypal/module-braintree-core/view/frontend/web/js/view/payment/3d-secure.js
@@ -61,9 +61,11 @@ define([
         checkBillingLineLengths: function (errorMessage, billingAddress, shippingAddress) {
             let lineError = null;
 
-            if (billingAddress.street[0].length > 50 || shippingAddress.street[0].length > 50) {
+            if (billingAddress.street[0].length > 50 ||
+                (shippingAddress.street !== undefined && shippingAddress.street[0].length > 50)) {
                 lineError = 'line1';
-            } else if (billingAddress.street[1].length > 50 || shippingAddress.street[1].length > 50) {
+            } else if (billingAddress.street[1].length > 50 ||
+                (shippingAddress.street !== undefined && shippingAddress.street[1].length > 50)) {
                 lineError = 'line2';
             }
 
@@ -97,11 +99,13 @@ define([
             }
 
             // Handle shipping address region code
-            if (shippingAddress.regionCode == null) {
-                shippingAddress.regionCode = undefined;
-            }
-            if (shippingAddress.regionCode !== undefined && shippingAddress.regionCode.length > 2) {
-                shippingAddress.regionCode = undefined;
+            if (!quote.isVirtual()) {
+                if (shippingAddress.regionCode == null) {
+                    shippingAddress.regionCode = undefined;
+                }
+                if (shippingAddress.regionCode !== undefined && shippingAddress.regionCode.length > 2) {
+                    shippingAddress.regionCode = undefined;
+                }
             }
 
             // No 3d secure if using CVV verification on vaulted cards
@@ -165,19 +169,6 @@ define([
                             countryCodeAlpha2: billingAddress.countryId
                         },
                         additionalInformation: {
-                            shippingGivenName: escapeNonAsciiCharacters(shippingAddress.firstname),
-                            shippingSurname: escapeNonAsciiCharacters(shippingAddress.lastname),
-                            shippingAddress: {
-                                streetAddress: shippingAddress.street[0],
-                                extendedAddress: shippingAddress.street[1],
-                                locality: shippingAddress.city,
-                                region: shippingAddress.regionCode,
-                                postalCode: shippingAddress.postcode,
-                                countryCodeAlpha2: shippingAddress.countryId
-                            },
-                            shippingPhone: shippingAddress.telephone !== null
-                                ? removeNonDigitCharacters(shippingAddress.telephone)
-                                : shippingAddress.telephone,
                             ipAddress: self.getIpAddress()
                         },
                         onLookupComplete: function (data, next) {
@@ -204,6 +195,25 @@ define([
                         threeDSecureParameters.email = context.email;
                     }
 
+                    if (!quote.isVirtual()) {
+                        threeDSecureParameters.additionalInformation = {
+                            shippingGivenName: escapeNonAsciiCharacters(shippingAddress.firstname),
+                            shippingSurname: escapeNonAsciiCharacters(shippingAddress.lastname),
+                            shippingAddress: {
+                                streetAddress: shippingAddress.street[0],
+                                extendedAddress: shippingAddress.street[1],
+                                locality: shippingAddress.city,
+                                region: shippingAddress.regionCode,
+                                postalCode: shippingAddress.postcode,
+                                countryCodeAlpha2: shippingAddress.countryId
+                            },
+                            shippingPhone: shippingAddress.telephone !== null
+                                ? removeNonDigitCharacters(shippingAddress.telephone)
+                                : shippingAddress.telephone,
+                            ipAddress: threeDSecureParameters.additionalInformation.ipAddress
+                        }
+                    }
+
                     threeDSecureInstance.verifyCard(threeDSecureParameters, function (err, response) {
                         fullScreenLoader.stopLoader();
 
