In stripe checkout page display Country or region fields how to remove it

12.4k Views Asked by At

image

I am used stripe payment getaway for payment, In stripe checkout page display Country or region field and some country select then Postal code field appear both fields are required so how to remove this fields.

Here is my code:

checkout_session = stripe.checkout.Session.create(
line_items=[
    {
        "price_data": {
            "currency": "usd",
            "product_data": {
                "name": "order",
            },
            "unit_amount_decimal": 5 * 100,
        },
        "quantity": 1,
    },
],
customer_email="[email protected]",
mode="payment",
success_url=success_url,
cancel_url=cancel_url,
4

There are 4 best solutions below

3
makoto-stripe On

Country is a field required by Checkout, and depending on the country selected, the postal code is automatically displayed as a requirement for specific countries. You cannot remove these fields in Checkout.

If you do not want to collect the country and postal code, you can choose to use Payment Element [0] to collect the payment method details instead. You can disable collection of those details by specifying never in the relevant fields [1][2].

[0] https://stripe.com/docs/payments/payment-element
[1] https://stripe.com/docs/js/elements_object/create_payment_element#payment_element_create-customized_fields-fields-billingDetails-address-country
[2] https://stripe.com/docs/js/elements_object/create_payment_element#payment_element_create-customized_fields-fields-billingDetails-address-postalCode

0
flashsplat On

Further expounding on makoto's answer as the docs did not fully explain, here is how you would do it in JS:

// Create and mount the Payment Element
var paymentElement = elements.create('payment', {
    fields: {
        billingDetails: {
            address: {
                country: 'never',
                postalCode: 'never'
            }
        }
    }
});

Be warned however: If you leave the zip code, removing only the country, the zip box will be ginormous.

0
nam elson On

According to Stripe's documentation, Country is a field required by Checkout, but if you are hiding the country, you will need to set a default value.

    // Create and mount the Payment Element
    const paymentElement = elements.create('payment', {
            fields: {
                billingDetails: {
                    address: {
                        country: 'never'
                    }
                }
            },
          });

    // Confirm the card payment that was created server side:
    const {error} = await stripe.confirmPayment({
            elements,
            confirmParams: {
              return_url: `your_return_url`,
                payment_method_data: {
                    billing_details: {
                        address: {
                            country: 'HK'
                        }

                    }
                },
            }
          });

https://stripe.com/docs/js/elements_object/create_payment_element

0
Sayan Dey On

In React native CardForm

If want to change the country code then
defaultValues={{countryCode:'IN'}}

OR

<CardForm
  defaultValues={{countryCode:'none'}}
    onFormComplete={cardDetails => {
      console.log('card details', cardDetails);
      setCard(cardDetails);
    }}
    
    postalCodeEnabled={true}
    placeholder={{
      number: '4242 4242 4242 4242',
    }}
    cardStyle={{
      backgroundColor: '#000001',
      textColor: '#f2f2f2f2',
      borderRadius: 8,
      borderWidth: 1,
      textErrorColor: 'red',
      placeholderColor: 'grey',
      borderColor: '#ffffff',
    }}
    autofocus={false}
    style={{
      width: windowWidth-8,
      height: windowHeight / 2,
      alignItems: 'center',
      marginHorizontal: 4,


    }}
  />