# Create a Collection Setting

Create a CollectionSetting object.

## Parameters

- `collection_method` (enum, optional)
  Either automatic, or send_invoice. When charging automatically, Stripe will attempt to pay this bill at the end of the period using the payment method attached to the payer profile. When sending an invoice, Stripe will email your payer profile an invoice with payment instructions. Defaults to automatic.
Possible enum values:
  - `automatic`
    Automatically charge for collection.

  - `send_invoice`
    Send invoice for collection.

- `display_name` (string, optional)
  An optional customer-facing display name for the CollectionSetting object. Maximum length of 250 characters.

- `email_delivery` (object, optional)
  Email delivery setting.

  - `email_delivery.payment_due` (object, optional)
    Controls emails for when the payment is due. For example after the invoice is finalized and transitions to Open state.

    - `email_delivery.payment_due.enabled` (boolean, required)
      If true an email for the invoice would be generated and sent out.

    - `email_delivery.payment_due.include_payment_link` (boolean, required)
      If true the payment link to hosted invoice page would be included in email and PDF of the invoice.

- `lookup_key` (string, optional)
  A lookup key used to retrieve settings dynamically from a static string. This may be up to 200 characters.

- `payment_method_configuration` (string, optional)
  The ID of the PaymentMethodConfiguration object, which controls which payment methods are displayed to your customers.

- `payment_method_options` (object, optional)
  Payment Method specific configuration to be stored on the object.

  - `payment_method_options.acss_debit` (object, optional)
    This sub-hash contains details about the Canadian pre-authorized debit payment method options.

    - `payment_method_options.acss_debit.mandate_options` (object, optional)
      Additional fields for Mandate creation.

      - `payment_method_options.acss_debit.mandate_options.transaction_type` (enum, optional)
        Transaction type of the mandate.
Possible enum values:
        - `business`
          Transactions are made for business reasons.

        - `personal`
          Transactions are made for personal reasons.

    - `payment_method_options.acss_debit.verification_method` (enum, optional)
      Verification method.
Possible enum values:
      - `automatic`
        Instant verification with fallback to microdeposits.

      - `instant`
        Instant verification.

      - `microdeposits`
        Microdeposits.

  - `payment_method_options.bancontact` (object, optional)
    This sub-hash contains details about the Bancontact payment method.

    - `payment_method_options.bancontact.preferred_language` (enum, optional)
      Preferred language of the Bancontact authorization page that the customer is redirected to.
Possible enum values:
      - `de`
        German.

      - `en`
        English.

      - `fr`
        French.

      - `nl`
        Dutch.

  - `payment_method_options.card` (object, optional)
    This sub-hash contains details about the Card payment method options.

    - `payment_method_options.card.mandate_options` (object, optional)
      Configuration options for setting up an eMandate for cards issued in India.

      - `payment_method_options.card.mandate_options.amount` (int64, optional)
        Amount to be charged for future payments.

      - `payment_method_options.card.mandate_options.amount_type` (enum, optional)
        The AmountType for the mandate. One of `fixed` or `maximum`.
Possible enum values:
        - `fixed`
          If `fixed`, the `amount` param refers to the exact amount to be charged in future payments.

        - `maximum`
          If `maximum`, the amount charged can be up to the value passed for the `amount` param.

      - `payment_method_options.card.mandate_options.description` (string, optional)
        A description of the mandate that is meant to be displayed to the customer.

    - `payment_method_options.card.network` (string, optional)
      Selected network to process the payment on. Depends on the available networks of the card.

    - `payment_method_options.card.request_three_d_secure` (enum, optional)
      An advanced option 3D Secure. We strongly recommend that you rely on our SCA Engine to automatically prompt your customers for authentication based on risk level and [other requirements](https://docs.stripe.com/strong-customer-authentication.md). However, if you wish to request 3D Secure based on logic from your own fraud engine, provide this option. Read our guide on [manually requesting 3D Secure](https://docs.stripe.com/payments/3d-secure/authentication-flow.md#manual-three-ds) for more information on how this configuration interacts with Radar and our SCA Engine.
Possible enum values:
      - `any`
        Use any to manually request 3DS with a preference for a frictionless flow, increasing the likelihood of the authentication being completed without any additional input from the customer. 3DS will always be attempted if it is supported for the card, but Stripe can’t guarantee your preference because the issuer determines the ultimate authentication flow. To learn more about 3DS flows, read our [guide](https://stripe.com/guides/3d-secure-2#frictionless-authentication).

      - `automatic`
        Our SCA Engine automatically prompts your customers for authentication based on risk level and other requirements. This is the default option.

      - `challenge`
        Use challenge to request 3DS with a preference for a challenge flow, where the customer must respond to a prompt for active authentication. Stripe can’t guarantee your preference because the issuer determines the ultimate authentication flow. To learn more about 3DS flows, read our [guide](https://stripe.com/guides/3d-secure-2#frictionless-authentication).

  - `payment_method_options.customer_balance` (object, optional)
    This sub-hash contains details about the Bank transfer payment method options.

    - `payment_method_options.customer_balance.bank_transfer` (object, optional)
      Configuration for the bank transfer funding type, if the `funding_type` is set to `bank_transfer`.

      - `payment_method_options.customer_balance.bank_transfer.eu_bank_transfer` (object, optional)
        Configuration for `eu_bank_transfer` funding type. Required if `type` is `eu_bank_transfer`.

        - `payment_method_options.customer_balance.bank_transfer.eu_bank_transfer.country` (enum, required)
          The desired country code of the bank account information.
Possible enum values:
          - `BE`
            Belgium.

          - `DE`
            Germany.

          - `ES`
            Spain.

          - `FR`
            France.

          - `IE`
            Ireland.

          - `NL`
            Netherlands.

      - `payment_method_options.customer_balance.bank_transfer.type` (enum, optional)
        The bank transfer type that can be used for funding.
Possible enum values:
        - `eu_bank_transfer`
          EU Bank Transfer.

        - `gb_bank_transfer`
          GB Bank Transfer.

        - `jp_bank_transfer`
          JP Bank Transfer.

        - `mx_bank_transfer`
          MX Bank Transfer.

        - `us_bank_transfer`
          US Bank Transfer.

    - `payment_method_options.customer_balance.funding_type` (enum, optional)
      The funding method type to be used when there are not enough funds in the customer balance. Currently the only supported value is `bank_transfer`.
Possible enum values:
      - `bank_transfer`
        Bank Transfer funding type.

  - `payment_method_options.konbini` (object, optional)
    This sub-hash contains details about the Konbini payment method options.

  - `payment_method_options.sepa_debit` (object, optional)
    This sub-hash contains details about the SEPA Direct Debit payment method options.

  - `payment_method_options.us_bank_account` (object, optional)
    This sub-hash contains details about the ACH direct debit payment method options.

    - `payment_method_options.us_bank_account.financial_connections` (object, required)
      Additional fields for Financial Connections Session creation.

      - `payment_method_options.us_bank_account.financial_connections.filters` (object, optional)
        Provide filters for the linked accounts that the customer can select for the payment method.

        - `payment_method_options.us_bank_account.financial_connections.filters.account_subcategories` (array of enums, optional)
          The account subcategories to use to filter for selectable accounts.
Possible enum values:
          - `checking`
            Bank account subcategory is checking.

          - `savings`
            Bank account subcategory is savings.

      - `payment_method_options.us_bank_account.financial_connections.permissions` (array of enums, optional)
        The list of permissions to request. If this parameter is passed, the `payment_method` permission must be included.
Possible enum values:
        - `balances`
          Balances permission.

        - `ownership`
          Ownership permission.

        - `payment_method`
          Payment method permission.

        - `transactions`
          Transactions permission.

      - `payment_method_options.us_bank_account.financial_connections.prefetch` (array of enums, optional)
        List of data features that you would like to retrieve upon account creation.
Possible enum values:
        - `balances`
          Requests to prefetch balance data on accounts collected in this session.

        - `ownership`
          Requests to prefetch ownership data on accounts collected in this session.

        - `transactions`
          Requests to prefetch transaction data on accounts collected in this session.

    - `payment_method_options.us_bank_account.verification_method` (enum, required)
      Verification method.
Possible enum values:
      - `automatic`
        Instant verification with fallback to microdeposits.

      - `instant`
        Instant verification only.

      - `microdeposits`
        Verification using microdeposits. Cannot be used with Stripe Checkout, Hosted Invoices, or Payment Element.

## Returns

## Response attributes

- `id` (string)
  The ID of the CollectionSetting.

- `object` (string, value is "v2.billing.collection_setting")
  String representing the object’s type. Objects of the same type share the same value of the object field.

- `collection_method` (enum, nullable)
  Either automatic, or send_invoice. When charging automatically, Stripe will attempt to pay this bill at the end of the period using the payment method attached to the payer profile. When sending an invoice, Stripe will email your payer profile an invoice with payment instructions. Defaults to automatic.
Possible enum values:
  - `automatic`
    Automatically charge for collection.

  - `send_invoice`
    Send invoice for collection.

- `created` (timestamp)
  Timestamp of when the object was created.

- `display_name` (string, nullable)
  An optional field for adding a display name for the CollectionSetting object.

- `email_delivery` (object, nullable)
  Email delivery settings.

  - `email_delivery.payment_due` (object, nullable)
    Controls emails for when the payment is due. For example after the invoice is finalized and transitions to Open state.

    - `email_delivery.payment_due.enabled` (boolean)
      If true an email for the invoice would be generated and sent out.

    - `email_delivery.payment_due.include_payment_link` (boolean)
      If true the payment link to hosted invoice page would be included in email and PDF of the invoice.

- `latest_version` (string)
  The latest version of the current settings object. This will be Updated every time an attribute of the settings is updated.

- `live_version` (string)
  The current live version of the settings object. This can be different from latest_version if settings are updated without setting live_version=‘latest’.

- `livemode` (boolean)
  Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.

- `lookup_key` (string, nullable)
  A lookup key used to retrieve settings dynamically from a static string. This may be up to 200 characters.

- `payment_method_configuration` (string, nullable)
  The ID of the PaymentMethodConfiguration object, which controls which payment methods are displayed to your customers.

- `payment_method_options` (object, nullable)
  Payment Method specific configuration stored on the object.

  - `payment_method_options.acss_debit` (object, nullable)
    This sub-hash contains details about the Canadian pre-authorized debit payment method options.

    - `payment_method_options.acss_debit.mandate_options` (object, nullable)
      Additional fields for Mandate creation.

      - `payment_method_options.acss_debit.mandate_options.transaction_type` (enum, nullable)
        Transaction type of the mandate.
Possible enum values:
        - `business`
          Transactions are made for business reasons.

        - `personal`
          Transactions are made for personal reasons.

    - `payment_method_options.acss_debit.verification_method` (enum, nullable)
      Verification method.
Possible enum values:
      - `automatic`
        Instant verification with fallback to microdeposits.

      - `instant`
        Instant verification.

      - `microdeposits`
        Microdeposits.

  - `payment_method_options.bancontact` (object, nullable)
    This sub-hash contains details about the Bancontact payment method.

    - `payment_method_options.bancontact.preferred_language` (enum, nullable)
      Preferred language of the Bancontact authorization page that the customer is redirected to.
Possible enum values:
      - `de`
        German.

      - `en`
        English.

      - `fr`
        French.

      - `nl`
        Dutch.

  - `payment_method_options.card` (object, nullable)
    This sub-hash contains details about the Card payment method options.

    - `payment_method_options.card.mandate_options` (object, nullable)
      Configuration options for setting up an eMandate for cards issued in India.

      - `payment_method_options.card.mandate_options.amount` (int64, nullable)
        Amount to be charged for future payments.

      - `payment_method_options.card.mandate_options.amount_type` (enum, nullable)
        The AmountType for the mandate. One of `fixed` or `maximum`.
Possible enum values:
        - `fixed`
          If `fixed`, the `amount` param refers to the exact amount to be charged in future payments.

        - `maximum`
          If `maximum`, the amount charged can be up to the value passed for the `amount` param.

      - `payment_method_options.card.mandate_options.description` (string, nullable)
        A description of the mandate that is meant to be displayed to the customer.

    - `payment_method_options.card.network` (string, nullable)
      Selected network to process the payment on. Depends on the available networks of the card.

    - `payment_method_options.card.request_three_d_secure` (enum, nullable)
      An advanced option 3D Secure. We strongly recommend that you rely on our SCA Engine to automatically prompt your customers for authentication based on risk level and [other requirements](https://docs.stripe.com/strong-customer-authentication.md). However, if you wish to request 3D Secure based on logic from your own fraud engine, provide this option. Read our guide on [manually requesting 3D Secure](https://docs.stripe.com/payments/3d-secure/authentication-flow.md#manual-three-ds) for more information on how this configuration interacts with Radar and our SCA Engine.
Possible enum values:
      - `any`
        Use any to manually request 3DS with a preference for a frictionless flow, increasing the likelihood of the authentication being completed without any additional input from the customer. 3DS will always be attempted if it is supported for the card, but Stripe can’t guarantee your preference because the issuer determines the ultimate authentication flow. To learn more about 3DS flows, read our [guide](https://stripe.com/guides/3d-secure-2#frictionless-authentication).

      - `automatic`
        Our SCA Engine automatically prompts your customers for authentication based on risk level and other requirements. This is the default option.

      - `challenge`
        Use challenge to request 3DS with a preference for a challenge flow, where the customer must respond to a prompt for active authentication. Stripe can’t guarantee your preference because the issuer determines the ultimate authentication flow. To learn more about 3DS flows, read our [guide](https://stripe.com/guides/3d-secure-2#frictionless-authentication).

  - `payment_method_options.customer_balance` (object, nullable)
    This sub-hash contains details about the Bank transfer payment method options.

    - `payment_method_options.customer_balance.bank_transfer` (object, nullable)
      Configuration for the bank transfer funding type, if the `funding_type` is set to `bank_transfer`.

      - `payment_method_options.customer_balance.bank_transfer.eu_bank_transfer` (object, nullable)
        Configuration for `eu_bank_transfer` funding type. Required if `type` is `eu_bank_transfer`.

        - `payment_method_options.customer_balance.bank_transfer.eu_bank_transfer.country` (enum)
          The desired country code of the bank account information.
Possible enum values:
          - `BE`
            Belgium.

          - `DE`
            Germany.

          - `ES`
            Spain.

          - `FR`
            France.

          - `IE`
            Ireland.

          - `NL`
            Netherlands.

      - `payment_method_options.customer_balance.bank_transfer.type` (enum, nullable)
        The bank transfer type that can be used for funding.
Possible enum values:
        - `eu_bank_transfer`
          EU Bank Transfer.

        - `gb_bank_transfer`
          GB Bank Transfer.

        - `jp_bank_transfer`
          JP Bank Transfer.

        - `mx_bank_transfer`
          MX Bank Transfer.

        - `us_bank_transfer`
          US Bank Transfer.

    - `payment_method_options.customer_balance.funding_type` (enum, nullable)
      The funding method type to be used when there are not enough funds in the customer balance. Currently the only supported value is `bank_transfer`.
Possible enum values:
      - `bank_transfer`
        Bank Transfer funding type.

  - `payment_method_options.konbini` (object, nullable)
    This sub-hash contains details about the Konbini payment method options.

  - `payment_method_options.sepa_debit` (object, nullable)
    This sub-hash contains details about the SEPA Direct Debit payment method options.

  - `payment_method_options.us_bank_account` (object, nullable)
    This sub-hash contains details about the ACH direct debit payment method options.

    - `payment_method_options.us_bank_account.financial_connections` (object)
      Additional fields for Financial Connections Session creation.

      - `payment_method_options.us_bank_account.financial_connections.filters` (object, nullable)
        Provide filters for the linked accounts that the customer can select for the payment method.

        - `payment_method_options.us_bank_account.financial_connections.filters.account_subcategories` (array of enums)
          The account subcategories to use to filter for selectable accounts.
Possible enum values:
          - `checking`
            Bank account subcategory is checking.

          - `savings`
            Bank account subcategory is savings.

      - `payment_method_options.us_bank_account.financial_connections.permissions` (array of enums)
        The list of permissions to request. If this parameter is passed, the `payment_method` permission must be included.
Possible enum values:
        - `balances`
          Balances permission.

        - `ownership`
          Ownership permission.

        - `payment_method`
          Payment method permission.

        - `transactions`
          Transactions permission.

      - `payment_method_options.us_bank_account.financial_connections.prefetch` (array of enums)
        List of data features that you would like to retrieve upon account creation.
Possible enum values:
        - `balances`
          Requests to prefetch balance data on accounts collected in this session.

        - `ownership`
          Requests to prefetch ownership data on accounts collected in this session.

        - `transactions`
          Requests to prefetch transaction data on accounts collected in this session.

    - `payment_method_options.us_bank_account.verification_method` (enum)
      Verification method.
Possible enum values:
      - `automatic`
        Instant verification with fallback to microdeposits.

      - `instant`
        Instant verification only.

      - `microdeposits`
        Verification using microdeposits. Cannot be used with Stripe Checkout, Hosted Invoices, or Payment Element.

## Error Codes

| HTTP status code | Code                                                          | Description                                                                  |
| ---------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| 400              | email_delivery_incompatible_with_collection_method            | Returned when the email delivery is incompatible with the collection method. |
| 400              | invalid_payment_method_configuration_for_collection_setting   | Returned when the payment method configuration is not active.                |
| 400              | lookup_key_already_used_for_collection_setting                | Returned when the lookup key is already used for a collection setting.       |
| 400              | payment_method_configuration_not_found_for_collection_setting | Returned when the payment method configuration cannot be found.              |

```curl
curl -X POST https://api.stripe.com/v2/billing/collection_settings \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-03-25.preview" \
  --json '{
    "collection_method": "automatic",
    "display_name": "Automatic collection settings"
  }'
```

### Response

```json
{
  "id": "bclset_test_61SIqALsEreXk4vb616S0Sp34rSQ5rdid9OCzVKXYQrI",
  "object": "v2.billing.collection_setting",
  "collection_method": "automatic",
  "created": "2025-01-01T10:00:00.000Z",
  "display_name": "Automatic tax settings",
  "latest_version": "bclsetv_test_61SIqALNs1R6M7aU416S0Sp34rSQ5rdid9OCzVKXYIum",
  "live_version": "bclsetv_test_61SIqALNs1R6M7aU416S0Sp34rSQ5rdid9OCzVKXYIum",
  "livemode": true
}
```
