diff -Nuar a/vendor/magento/module-customer-custom-attributes/Block/Checkout/AttributeMerger.php b/vendor/magento/module-customer-custom-attributes/Block/Checkout/AttributeMerger.php
index 69c4572a749..160cd621340 100644
--- a/vendor/magento/module-customer-custom-attributes/Block/Checkout/AttributeMerger.php
+++ b/vendor/magento/module-customer-custom-attributes/Block/Checkout/AttributeMerger.php
@@ -104,7 +104,7 @@ class AttributeMerger extends CheckoutAttributesMerger
 
         $providerName = $result['provider'];
 
-        if ($attributeConfig['formElement'] === 'select') {
+        if (in_array($attributeConfig['formElement'], ['select', 'multiselect'])) {
             $result['deps'] = [$providerName];
             $result['exports']['options'] =
                 'index = ' . $providerName . ':customAttributes.' . $attributeCode;
diff -Nuar a/vendor/magento/module-customer-custom-attributes/Model/CustomerAddressCustomAttributesProcessor.php b/vendor/magento/module-customer-custom-attributes/Model/CustomerAddressCustomAttributesProcessor.php
new file mode 100644
index 00000000000..ad03fa75f0b
--- /dev/null
+++ b/vendor/magento/module-customer-custom-attributes/Model/CustomerAddressCustomAttributesProcessor.php
@@ -0,0 +1,38 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+declare(strict_types=1);
+
+namespace Magento\CustomerCustomAttributes\Model;
+
+use Magento\Quote\Api\Data\AddressInterface;
+
+/**
+ * Helper class for processing shipping or billing custom attributes
+ */
+class CustomerAddressCustomAttributesProcessor
+{
+    /**
+     * Process customer custom attribute before save shipping or billing address
+     *
+     * @param AddressInterface $addressInformation
+     * @return void
+     */
+    public function execute(
+        AddressInterface $addressInformation
+    ): void {
+        $customerCustomAttributes = $addressInformation->getCustomAttributes();
+        if ($customerCustomAttributes) {
+            foreach ($customerCustomAttributes as $customAttribute) {
+                $customAttributeValue = $customAttribute->getValue();
+                if ($customAttributeValue && is_array($customAttributeValue)) {
+                    if ($customAttributeValue['value'] !== null) {
+                        $customAttribute->setValue($customAttributeValue['value']);
+                    }
+                }
+            }
+        }
+    }
+}
diff -Nuar a/vendor/magento/module-customer-custom-attributes/Model/Plugin/ProcessCustomerBillingAddressCustomAttributes.php b/vendor/magento/module-customer-custom-attributes/Model/Plugin/ProcessCustomerBillingAddressCustomAttributes.php
new file mode 100644
index 00000000000..49e73db5996
--- /dev/null
+++ b/vendor/magento/module-customer-custom-attributes/Model/Plugin/ProcessCustomerBillingAddressCustomAttributes.php
@@ -0,0 +1,54 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+declare(strict_types=1);
+
+namespace Magento\CustomerCustomAttributes\Model\Plugin;
+
+use Magento\Checkout\Api\PaymentInformationManagementInterface;
+use Magento\CustomerCustomAttributes\Model\CustomerAddressCustomAttributesProcessor;
+use Magento\Quote\Api\Data\AddressInterface;
+use Magento\Quote\Api\Data\PaymentInterface;
+
+/**
+ * Process custom customer attributes before saving billing address
+ */
+class ProcessCustomerBillingAddressCustomAttributes
+{
+    /** @var CustomerAddressCustomAttributesProcessor */
+    private $customerAddressCustomAttributesProcessor;
+
+    /**
+     * Constructor for billing custom attribute for registered user plugin
+     *
+     * @param CustomerAddressCustomAttributesProcessor $customerAddressCustomAttributesProcessor
+     */
+    public function __construct(
+        CustomerAddressCustomAttributesProcessor $customerAddressCustomAttributesProcessor
+    ) {
+        $this->customerAddressCustomAttributesProcessor = $customerAddressCustomAttributesProcessor;
+    }
+
+    /**
+     * Process billing custom attribute before save for registered customer
+     *
+     * @param PaymentInformationManagementInterface $subject
+     * @param string $cartId
+     * @param PaymentInterface $paymentMethod
+     * @param AddressInterface|null $billingAddress
+     * @return void
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     */
+    public function beforeSavePaymentInformation(
+        PaymentInformationManagementInterface $subject,
+        string $cartId,
+        PaymentInterface $paymentMethod,
+        AddressInterface $billingAddress = null
+    ): void {
+        if ($billingAddress) {
+            $this->customerAddressCustomAttributesProcessor->execute($billingAddress);
+        }
+    }
+}
diff -Nuar a/vendor/magento/module-customer-custom-attributes/Model/Plugin/ProcessCustomerShippingAddressCustomAttributes.php b/vendor/magento/module-customer-custom-attributes/Model/Plugin/ProcessCustomerShippingAddressCustomAttributes.php
new file mode 100644
index 00000000000..6b7e6f188d3
--- /dev/null
+++ b/vendor/magento/module-customer-custom-attributes/Model/Plugin/ProcessCustomerShippingAddressCustomAttributes.php
@@ -0,0 +1,52 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+declare(strict_types=1);
+
+namespace Magento\CustomerCustomAttributes\Model\Plugin;
+
+use Magento\Checkout\Api\ShippingInformationManagementInterface;
+use Magento\Checkout\Api\Data\ShippingInformationInterface;
+use Magento\CustomerCustomAttributes\Model\CustomerAddressCustomAttributesProcessor;
+
+/**
+ * Process custom customer attributes before saving shipping address
+ */
+class ProcessCustomerShippingAddressCustomAttributes
+{
+    /** @var CustomerAddressCustomAttributesProcessor */
+    private $customerAddressCustomAttributesProcessor;
+
+    /**
+     * Constructor for shipping custom attribute for registered user plugin
+     *
+     * @param CustomerAddressCustomAttributesProcessor $customerAddressCustomAttributesProcessor
+     */
+    public function __construct(
+        CustomerAddressCustomAttributesProcessor $customerAddressCustomAttributesProcessor
+    ) {
+        $this->customerAddressCustomAttributesProcessor = $customerAddressCustomAttributesProcessor;
+    }
+
+    /**
+     * Process shipping custom attribute before save for registered customer
+     *
+     * @param ShippingInformationManagementInterface $subject
+     * @param string $cartId
+     * @param ShippingInformationInterface $addressInformation
+     * @return void
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     */
+    public function beforeSaveAddressInformation(
+        ShippingInformationManagementInterface $subject,
+        string $cartId,
+        ShippingInformationInterface $addressInformation
+    ): void {
+        $shippingAddress = $addressInformation->getShippingAddress();
+        if ($shippingAddress) {
+            $this->customerAddressCustomAttributesProcessor->execute($shippingAddress);
+        }
+    }
+}
diff -Nuar a/vendor/magento/module-customer-custom-attributes/Model/Plugin/ProcessGuestBillingAddressCustomAttributes.php b/vendor/magento/module-customer-custom-attributes/Model/Plugin/ProcessGuestBillingAddressCustomAttributes.php
new file mode 100644
index 00000000000..0ead39b39fe
--- /dev/null
+++ b/vendor/magento/module-customer-custom-attributes/Model/Plugin/ProcessGuestBillingAddressCustomAttributes.php
@@ -0,0 +1,56 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+declare(strict_types=1);
+
+namespace Magento\CustomerCustomAttributes\Model\Plugin;
+
+use Magento\Checkout\Api\GuestPaymentInformationManagementInterface;
+use Magento\CustomerCustomAttributes\Model\CustomerAddressCustomAttributesProcessor;
+use Magento\Quote\Api\Data\AddressInterface;
+use Magento\Quote\Api\Data\PaymentInterface;
+
+/**
+ * Process custom guest attributes before saving billing address
+ */
+class ProcessGuestBillingAddressCustomAttributes
+{
+    /** @var CustomerAddressCustomAttributesProcessor */
+    private $customerAddressCustomAttributesProcessor;
+
+    /**
+     * Constructor for billing custom attribute for guest user plugin
+     *
+     * @param CustomerAddressCustomAttributesProcessor $customerAddressCustomAttributesProcessor
+     */
+    public function __construct(
+        CustomerAddressCustomAttributesProcessor $customerAddressCustomAttributesProcessor
+    ) {
+        $this->customerAddressCustomAttributesProcessor = $customerAddressCustomAttributesProcessor;
+    }
+
+    /**
+     * Process billing custom attribute before save for guest
+     *
+     * @param GuestPaymentInformationManagementInterface $subject
+     * @param string $cartId
+     * @param string $email
+     * @param PaymentInterface $paymentMethod
+     * @param AddressInterface|null $billingAddress
+     * @return void
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     */
+    public function beforeSavePaymentInformation(
+        GuestPaymentInformationManagementInterface $subject,
+        string $cartId,
+        string $email,
+        PaymentInterface $paymentMethod,
+        AddressInterface $billingAddress = null
+    ): void {
+        if ($billingAddress) {
+            $this->customerAddressCustomAttributesProcessor->execute($billingAddress);
+        }
+    }
+}
diff -Nuar a/vendor/magento/module-customer-custom-attributes/Model/Plugin/ProcessGuestShippingAddressCustomAttributes.php b/vendor/magento/module-customer-custom-attributes/Model/Plugin/ProcessGuestShippingAddressCustomAttributes.php
new file mode 100644
index 00000000000..6aacf6bbaa3
--- /dev/null
+++ b/vendor/magento/module-customer-custom-attributes/Model/Plugin/ProcessGuestShippingAddressCustomAttributes.php
@@ -0,0 +1,52 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+declare(strict_types=1);
+
+namespace Magento\CustomerCustomAttributes\Model\Plugin;
+
+use Magento\Checkout\Api\Data\ShippingInformationInterface;
+use Magento\Checkout\Api\GuestShippingInformationManagementInterface;
+use Magento\CustomerCustomAttributes\Model\CustomerAddressCustomAttributesProcessor;
+
+/**
+ * Process shipping custom guest attributes before saving shipping address
+ */
+class ProcessGuestShippingAddressCustomAttributes
+{
+    /** @var CustomerAddressCustomAttributesProcessor */
+    private $customerAddressCustomAttributesProcessor;
+
+    /**
+     * Constructor for shipping custom attribute for guest user plugin
+     *
+     * @param CustomerAddressCustomAttributesProcessor $customerAddressCustomAttributesProcessor
+     */
+    public function __construct(
+        CustomerAddressCustomAttributesProcessor $customerAddressCustomAttributesProcessor
+    ) {
+        $this->customerAddressCustomAttributesProcessor = $customerAddressCustomAttributesProcessor;
+    }
+
+    /**
+     * Process shipping custom attribute before save for guest
+     *
+     * @param GuestShippingInformationManagementInterface $subject
+     * @param string $cartId
+     * @param ShippingInformationInterface $addressInformation
+     * @return void
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     */
+    public function beforeSaveAddressInformation(
+        GuestShippingInformationManagementInterface $subject,
+        string $cartId,
+        ShippingInformationInterface $addressInformation
+    ): void {
+        $shippingAddress = $addressInformation->getShippingAddress();
+        if ($shippingAddress) {
+            $this->customerAddressCustomAttributesProcessor->execute($shippingAddress);
+        }
+    }
+}
diff -Nuar a/vendor/magento/module-customer-custom-attributes/Plugin/ProcessCustomerCustomBooleanAttributeOptions.php b/vendor/magento/module-customer-custom-attributes/Plugin/ProcessCustomerCustomBooleanAttributeOptions.php
new file mode 100644
index 00000000000..172c041dedf
--- /dev/null
+++ b/vendor/magento/module-customer-custom-attributes/Plugin/ProcessCustomerCustomBooleanAttributeOptions.php
@@ -0,0 +1,58 @@
+<?php
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+declare(strict_types=1);
+
+namespace Magento\CustomerCustomAttributes\Plugin;
+
+use Magento\Customer\Model\Attribute;
+use Magento\Eav\Api\Data\AttributeInterface;
+use Magento\Ui\Component\Form\AttributeMapper;
+
+/**
+ * Class ProcessCustomerCustomBooleanAttributeOptions
+ *
+ * Process customer custom boolean attribute options and change it
+ * to boolean values
+ */
+class ProcessCustomerCustomBooleanAttributeOptions
+{
+    /**
+     * After map custom boolean attributes plugin.
+     *
+     * @param AttributeMapper $attributeMapper
+     * @param array $meta
+     * @param AttributeInterface $attribute
+     * @return array
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     */
+    public function afterMap(
+        AttributeMapper $attributeMapper,
+        array $meta,
+        AttributeInterface $attribute
+    ): array {
+        if ($attribute instanceof Attribute &&
+            $this->isCustomAttributeBoolean($attribute) &&
+            !empty($meta['options'])) {
+            foreach ($meta['options'] as $key => $option) {
+                $meta['options'][$key]['value'] = (bool) $option['value'];
+            }
+        }
+        return $meta;
+    }
+
+    /**
+     * Check if custom attribute is boolean
+     *
+     * @param AttributeInterface $attribute
+     * @return bool
+     */
+    private function isCustomAttributeBoolean(AttributeInterface $attribute): bool
+    {
+        $isBoolean = (int) $attribute->getIsUserDefined() &&
+            $attribute->getFrontendInput() == 'boolean';
+        return (bool) $isBoolean;
+    }
+}
diff -Nuar a/vendor/magento/module-customer-custom-attributes/etc/di.xml b/vendor/magento/module-customer-custom-attributes/etc/di.xml
index 5af83f2fdbe..8d8cfb2542e 100644
--- a/vendor/magento/module-customer-custom-attributes/etc/di.xml
+++ b/vendor/magento/module-customer-custom-attributes/etc/di.xml
@@ -84,4 +84,16 @@
     <type name="Magento\CustomAttributeManagement\Block\Form">
         <plugin name="set_customer_custom_attribute_for_company" type="Magento\CustomerCustomAttributes\Plugin\Customer\Block\Form\CustomerCustomAttributePlugin" />
     </type>
+    <type name="Magento\Checkout\Api\PaymentInformationManagementInterface">
+        <plugin name="process_billing_custom_customer_attributes" type="Magento\CustomerCustomAttributes\Model\Plugin\ProcessCustomerBillingAddressCustomAttributes"/>
+    </type>
+    <type name="Magento\Checkout\Api\ShippingInformationManagementInterface">
+        <plugin name="process_shipping_custom_customer_attributes" type="Magento\CustomerCustomAttributes\Model\Plugin\ProcessCustomerShippingAddressCustomAttributes"/>
+    </type>
+    <type name="Magento\Checkout\Api\GuestPaymentInformationManagementInterface">
+        <plugin name="process_billing_custom_guest_attributes" type="Magento\CustomerCustomAttributes\Model\Plugin\ProcessGuestBillingAddressCustomAttributes"/>
+    </type>
+    <type name="Magento\Checkout\Api\GuestShippingInformationManagementInterface">
+        <plugin name="process_shipping_custom_guest_attributes" type="Magento\CustomerCustomAttributes\Model\Plugin\ProcessGuestShippingAddressCustomAttributes"/>
+    </type>
 </config>
diff -Nuar a/vendor/magento/module-customer-custom-attributes/etc/frontend/di.xml b/vendor/magento/module-customer-custom-attributes/etc/frontend/di.xml
index a3e2e5b6684..25700fa429d 100644
--- a/vendor/magento/module-customer-custom-attributes/etc/frontend/di.xml
+++ b/vendor/magento/module-customer-custom-attributes/etc/frontend/di.xml
@@ -13,4 +13,7 @@
             </argument>
         </arguments>
     </type>
+    <type name="Magento\Ui\Component\Form\AttributeMapper">
+        <plugin name="processCustomerCustomBooleanAttributeOptions" type="Magento\CustomerCustomAttributes\Plugin\ProcessCustomerCustomBooleanAttributeOptions"/>
+    </type>
 </config>
