# Options

The optional fourth argument to [Finix.PaymentForm()](/js/payment-form). All properties are optional.

## Payment Methods

Controls which payment types the form accepts.

| Value | Description |
|  --- | --- |
| `["card", "bank"]` | Accept both card and bank accounts (default) |
| `["card"]` | Accept only credit or debit cards |
| `["bank"]` | Accept only bank accounts (USA and Canada) |


**Type:** `string[]` — **Default:** `["card", "bank"]`

## Field Display

Show billing address fields below the payment fields.

**Type:** `boolean` — **Default:** `false`

To find the list of address field IDs, go to the [Field IDs](/js/field-ids) page and look for the **Address Fields** section.

| Option | Type | Default | Description |
|  --- | --- | --- | --- |
| `showLabels` | `boolean` | `true` | Show labels above each input |
| `showPlaceholders` | `boolean` | `true` | Show placeholder text inside inputs |


An array of field IDs to hide from the form. The fields `number` and `expiration_date` cannot be hidden.

**Type:** `string[]` — **Default:** `[]`

For valid field ID values, visit the [Field IDs](/js/field-ids) page.

An array of field IDs to mark as required beyond the form defaults.

**Type:** `string[]` — **Default:** `[]`

Supported values: `name`, `card_holder_name`, `account_holder_name`, `address_line1`, `address_line2`, `address_city`, `address_region`, `address_postal_code`, `address_country`

## Custom Text

Override the default label text for any field, keyed by field ID.

**Type:** `Record<string, string>` — **Default:** `{}`

Override the default placeholder text for any field, keyed by field ID.

**Type:** `Record<string, string>` — **Default:** `{}`

Override the default validation error messages for any field, keyed by field ID.

**Type:** `Record<string, string>` — **Default:** `{}`

Pre-fill field values on form load, keyed by field ID.

**Type:** `Record<string, string>` — **Default:** `{}`

The following PCI-sensitive fields **cannot** be pre-filled: `number`, `expiration_date`, `security_code`, `account_number`, `bank_code`, `institution_number`, or `transit_number`

Custom text for the auto-rendered submit button. Only applies when `onSubmit` is provided.

**Type:** `string` — **Default:** `undefined`

## Validation

| Option | Type | Default | Description |
|  --- | --- | --- | --- |
| `requireSecurityCode` | `boolean` | `true` | Require CVV/CVC for card payments |
| `confirmAccountNumber` | `boolean` | `true` | Show double-entry confirmation for bank account number |
| `hidePotentialIssueMessages` | `boolean` | `true` | Hide warning messages for non-standard but valid card numbers |
| `hideErrorMessages` | `boolean` | `false` | Hide all inline validation error messages |


## Appearance

| Option | Type | Default | Description |
|  --- | --- | --- | --- |
| `theme` | `string` | `"finix"` | Built-in visual theme |
| `enableDarkMode` | `boolean` | `false` | Apply dark styles when `prefers-color-scheme: dark` |


Available themes: `finix`, `amethyst`, `sapphire`, `topaz`, `ruby`, `emerald`, `midnight`, `elevated`

For custom CSS overrides, see [Styles & Fonts](/js/styles-and-fonts).

## Plaid

Configure the Plaid Link experience for bank account connections. Only applies when `paymentMethods` includes `"bank"`.

| Property | Type | Default | Description |
|  --- | --- | --- | --- |
| `displayName` | `string` | Application name | Name shown at the top of the Plaid modal |
| `language` | `string` | `"en"` | Language for the Plaid Link experience |
| `countries` | `string[]` | `["USA", "CAN"]` | ISO-3 country codes for which banks appear |


When a user completes the Plaid flow, finix.js submits a third-party token request using the Plaid `public_token` and `account_id`.