Skip to main content
The bank element collects ACH bank credentials. Shoppers can search for their bank and sign in (fast, no typing) or enter routing and account numbers manually. You choose which modes are available and which is the default. Configure bank inside Checkout for the recommended integration path, or mount standalone when you need a bank-only form.

Standalone example

Modes

The element renders one of two modes at a time. The shopper can toggle between them (unless you lock one in) using an in-element control. Pick the default:
Lock the shopper to a single mode:

Manual fields

  • accountType: <select> with values 'checking' / 'savings'. Default 'checking'.
  • routingNumber: 9-digit routing number.
  • accountNumber: account number.
  • confirmAccountNumber: must match accountNumber to complete.
Configure via fields.accountType, fields.routingNumber, fields.accountNumber, fields.confirmAccountNumber.

Submitted value

onSubmit emits a discriminated union keyed by mode. Manual submissions carry encrypted routing and account numbers; fast-signin submissions carry a linked-account public token.
Forward value to your server as-is. See the Bank reference for the full type and the authorize a payment API reference for the authorize request.

Retry on UNKNOWN_KID

If your authorize endpoint returns 400 { code: 'UNKNOWN_KID' } after a manual-mode bank submission, call overflow.invalidateBankFieldEncryptionCache() and prompt the shopper to submit again. Checkout runs this recovery for you when the tagged error is recognized.

Inside Checkout

The nested bank key accepts the same options the standalone element accepts. Values arrive on the Checkout envelope as value.bank.

Next steps

Best practices

Retry, mode selection, and disabling considerations.

Reference

Full options, fields, and value reference.
Last modified on July 22, 2026