# Control billing details collection

Customize the billing details you collect within the Payment Element.

You can collect billing details several ways with the Payment Element:

- `never`: Don’t collect any billing details in the Payment Element. You can set this for all [fields](https://docs.stripe.com/js/elements_object/create_payment_element#payment_element_create-options-fields) or on specific fields subcomponents, like `name`, `email`, and `address`.
- `if_required`: Collect only the address fields required for each payment method to complete the payment.
- `always`: Always collect the billing name in the Payment Element. You can set this for `name` across all payment methods, or for a specific payment method.
- `auto` (default): Stripe determines which billing fields to collect based on customer friction and authorization success rate for each payment method. You don’t need to pass in additional billing details at confirm time for this mode.

By default, all fields are set to `auto`. This balances minimizing customer friction and maintaining optimal authorization rates.

## Hide billing details

If you’re collecting billing details elsewhere outside of the Payment Element, you can use `never` to avoid collecting billing details entirely or to skip specific billing fields. Fields that are set to `never` are hidden for all the payment methods. Here’s an example:

```javascript
const paymentElement = elements.create('payment', {
  fields: {
    billingDetails: {
      // No address field will be collected in any of the payment method forms
      address: 'never',
    }
  }
});
```

When `never` is set, you must manually pass in the omitted billing fields at the confirmation time:

```javascript
stripe.confirmPayment({
 //...Other values
 payment_method: {
  billing_details: {
    address: {
        line1: '123 Main Street',
        city: 'Anytown',
        country: 'US',
        postal_code: '12345'
      },
   }
 } 
});
```

## Collect minimal billing details

Specify `if_required` to collect only the billing address fields needed to complete payment for each payment method.

This option helps reduce customer friction but might come with certain trade-offs, such as higher network fees, for users on a network cost plus pricing plan, and potential impacts on authorization rates.

```javascript
const paymentElement = elements.create('payment', {
  fields: {
    billingDetails: {
      address: 'if_required',
    }
  }
});
```

## Collect billing names

Specify `always` to make the Payment Element collect the customer’s billing name for payment methods that don’t collect it by default.

```javascript
const paymentElement = elements.create('payment', {
  fields: {
    billingDetails: {
      name: 'always',
    }
  }
});
```

You can also set billing detail collection for a specific payment method. Payment-method-specific settings override the top-level `billingDetails` setting.

```javascript
const paymentElement = elements.create('payment', {
  fields: {
    billingDetails: {
      name: 'auto',
    },
    klarna: {
      billingDetails: {
        name: 'always',
      }
    }
  }
});
```

## Advanced: using Address Element in billing mode

If your business requires collecting the full billing address, you can use the [Address Element](https://docs.stripe.com/elements/address-element.md) billing mode in combination with the Payment Element. The collected billing details are automatically attached at the confirmation time.
