Skip to content
Create account or Sign in
The Stripe Docs logo
/
Ask AI
Create accountSign in
Get started
Payments
Revenue
Platforms and marketplaces
Money management
Developer resources
APIs & SDKsHelp
Overview
About Stripe payments
Upgrade your integration
Payments analytics
Online payments
OverviewFind your use caseUse Managed Payments
Use Payment Links
Use a prebuilt checkout page
Build a custom integration with Elements
Build an in-app integration
In-person payments
Terminal
Payment methods
Add payment methods
Manage payment methods
Faster checkout with Link
Payment scenarios
Handle multiple currencies
Custom payment flows
Flexible acquiring
Orchestration
Beyond payments
Incorporate your company
Crypto
Agentic commerce
Financial Connections
    Overview
    Get started
    Use cases
    Fundamentals
    Testing
    Supported institutions
    Collect accounts for data
    ACH Direct Debit payments
    Connect payouts
    Other data-powered products
    Access account data
    Balances
    Ownership
    Transactions
    Ownership match
    Manage accounts
    Tokenized account numbers
    Disconnections
    Webhooks
Climate
Understand fraud
Radar fraud protection
Manage disputes
Verify identities
United States
English (United States)
HomePaymentsFinancial Connections

Manage bank accounts with Tokenized Account Numbers

Learn about tokenized account numbers, their impact on your integration, and how to manage TAN accounts.

Before you begin

  1. Understand Financial Connections fundamentals
  2. Read about Financial Connections Account webhook events to understand how to receive updates about changes to Financial Connections Accounts.

Tokenized Account Numbers (TANs) are temporary bank account credentials issued by financial institutions instead of real account numbers. Today, Chase and PNC Bank issue TANs and US Bank will begin issuing TANs on November 30, 2025.

TANs behave similarly to real account and routing numbers, and you can use them to accept ACH payments and send payouts only when their status is active. Unlike real account numbers, a TAN can be deactivated, which can cause subsequent ACH transactions on the Financial Connections Account to fail.

These are the differences between real account numbers vs TANs:

Real account numbersTokenized account numbers
Stability over timeReturn the same account and routing numbers every time the account is linked.Return a new tokenized account and routing number each time the account is authorized with the institution.
ExpiryDon’t expireCan expire at the discretion of the issuing institution.
RevocableCustomer can’t revokeCustomer can revoke
Recognizable to customersYesNo

TANs become deactivated in two scenarios:

  • Revocation: When a customer actively revokes access to their account data using their financial institution’s online banking portal (such as through the Chase Security center). This option is available to the customer at any time.
  • Expiry: The TAN expires after some amount of time set by the institution.

After a TAN is deactivated, your customer needs to link their bank account again or link a different bank account to make sure they can continue to make payments or receive payouts.

How to manage TANs

Display real account details to your customer in your UI

If you display account identifiers to help customers recognize and select a bank account in your application, display the last4 field from the Financial Connections Account object. This field shows the last four digits of the real account number, regardless of whether the institution uses TANs or real account numbers.

Identify Financial Connections Accounts with TANs and their status

Use the Financial Connections API to determine whether a bank account has a TAN or a real account number, and whether that TAN can be used for ACH transactions.

To determine if a Financial Connections Account has a TAN, reference the identifier_type field on the objects in the account_numbers array, which is set to tokenized_account_number if the account number is a TAN. The identifier_type of a real account number is set to account_number.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/financial_connections/accounts/fca_zbyrdjTrwcYZJZc6WBs6GPid \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"

This example request returns a Financial Connections Account with information about a TAN.

{ "id": "fca_zbyrdjTrwcYZJZc6WBs6GPid", "object": "financial_connections.account", "account_holder": { "customer": "cus_NfjonN9919dELB", "type": "customer" }, "institution_name": "PNC Bank", "status": "active", "account_numbers": [ { "identifier_type": 'tokenized_account_number, "expected_expiry_date": null, "status": "transactable", "supported_networks" : ["ach"] } ] }

In the request, check the status of the TAN. A TAN’s status is either:

StatusDescription
transactableYou can continue to use this account and its tokenized account number for money movement, including ACH payments and payouts.
deactivatedThe customer has revoked access to the TAN in their bank portal. Transactions using this TAN will fail.

It’s possible for a Financial Connections Account to have an active status even if its TAN is deactivated if the Account is still usable for bank data refreshes.

Note

PNC Bank expired some accounts between August 18 and September 9, 2025 before instituting a pause to 1-year rolling expiries. Time-based expiry might resume as banks evolve their TAN policies.

Banks might add time-based expiration rules to TANs. If TANs are set to expire by a bank, you can:

  1. Reference the expected_expiry_date field. It displays the date of expiration.
  2. Listen for the financial_connections.account.upcoming_account_number_expiry webhook event, which Stripe sends 30 days before the TAN is set to expire.

Handle deactivated TANs

This guide describes how to manage TANs deactivation for either:

  • ACH Direct Debit payments
  • External bank accounts used for payouts

Note

If you haven’t already, you need to set up a webhook endpoint (use the Webhooks page in the Dashboard or follow the webhook guide) to listen to the applicable events for your integration.

ACH Direct Debit payments

ACH Direct Debit PaymentMethods become unusable when the account’s associated TAN is deactivated. Handle TAN deactivations in your ACH Direct Debits integration to avoid payment failures.

When a bank account with a TAN used for an ACH Direct Debit PaymentMethod is deactivated, Stripe sends a payment_method.automatically_updated event.

To identify PaymentMethods with deactivated TANs in your webhook handler, check if the PaymentMethod’s payment_method.us_bank_account.status_details.blocked.reason field is set to tokenized_account_number_deactivated.

If you attempt to confirm a ACH Direct Debit payment with a deactivated TAN, Stripe returns a bank_account_unusable error. If this error occurs while your customer is on session, you must collect a new payment method. Unlike an ACH return, Stripe blocks the payment before the ACH transaction is submitted to the network because Stripe expects the transaction to fail due to a deactivated TAN. This means the payment failed at the time of payment submission, rather than 2 to 3 days later, and helps you avoid any failed payment fees.

Avoid processing deactivated TANs

ACH payments processed off of Stripe using the deactivated TAN will also fail, but your processor might not reject the payment at the time of submission. You must avoid submitting payments on deactivated TANs to avoid downstream failures.

To ensure future payments succeed, recollect the bank account or collect a new bank account from your customer and create a new PaymentMethod.

External bank accounts

External Bank Accounts that have been linked with Financial Connections become unusable when a TAN is deactivated. Handle TAN deactivations in your payouts integration to avoid payout failures.

When a bank account with a TAN is deactivated for an External Bank Account, Stripe sends an account.external_account.updated webhook event.

To determine if Stripe sent the account.external_account.updated event has been sent because of a deactivated TAN, in your webhook handler verify that the External Bank Account’s status field is set to tokenized_account_number_deactivated.

To ensure future payouts succeed, recollect the bank account or a new bank account from your customer and create a new External Bank Account.

TAN details by bank

The following institutions return TANs when your customers link accounts through Financial Connections:

Institution nameDetailsEffective Date
ChaseCustomers can revoke access to the TAN account through the Chase Security Center.All accounts
PNC BankCustomers can revoke access to the TAN using the PNC Online Banking Portal. PNC temporarily introduced a time-based expiration policy that deactivated TANs issued after August 18, 2024 and before September 19, 2024. PNC might re-introduce a time-based expiration policy for TANs in the future.Accounts linked after August 18, 2024
US BankUS Bank TANs don’t expire and customers can’t revoke these TANs.Accounts linked after November 30, 2025
Was this page helpful?
YesNo
  • Need help? Contact Support.
  • Check out our changelog.
  • Questions? Contact Sales.
  • LLM? Read llms.txt.
  • Powered by Markdoc