# Manage bank accounts with Tokenized Account Numbers Learn about tokenized account numbers, their impact on your integration, and how to manage TAN accounts. Tokenized Account Numbers (TANs) are temporary bank account credentials issued by financial institutions instead of real account numbers. Chase, PNC Bank, and US Bank issue TANs. ## Before you begin 1. Understand Financial Connections [fundamentals](https://docs.stripe.com/financial-connections/fundamentals.md) 1. Read about Financial Connections Account [webhook events](https://docs.stripe.com/financial-connections/webhooks.md) to understand how to receive updates about changes to Financial Connections Accounts. ## How TANs work TANs behave similarly to real account and routing numbers, and you can use them to accept ACH payments and send payouts 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](https://docs.stripe.com/financial-connections/fundamentals.md#financial-connections-account) to fail. > TAN behavior varies by financial institution. Some banks support customer revocation and expiration, while others don’t. To view specific behavior by institution, see [TAN details by bank](https://docs.stripe.com/financial-connections/tokenized-account-numbers.md#tan-details-by-bank). ### Compare real account numbers with TANs These are the differences between real account numbers and TANs: | | Real account numbers | Tokenized account numbers | | ----------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | | **Stability over time** | Return 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. | | **Expiry** | Don’t expire | Might expire at the discretion of the issuing institution (varies by bank) | | **Revocable** | Customer can’t revoke | Customer might be able to revoke (varies by bank) | | **Recognizable to customers** | Yes | No | ### Deactivated TANs TANs can become deactivated, depending on the issuing bank’s policies. To avoid payment failures, you can [handle deactivated TANs](https://docs.stripe.com/financial-connections/tokenized-account-numbers.md#handle-deactivated-tans). Common deactivation scenarios include: - **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 only available at some institutions. - **Expiry**: The TAN expires after an amount of time set by the institution. Not all banks implement time-based expiration. After a TAN is deactivated, your customer needs to [link their bank account again](https://docs.stripe.com/financial-connections/relink.md) or link a different bank account to make sure they can continue to make payments or receive payouts. To learn which institutions support revocation and expiry, see [TAN details by bank](https://docs.stripe.com/financial-connections/tokenized-account-numbers.md#tan-details-by-bank). ## 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](https://docs.stripe.com/api/financial_connections/accounts/object.md#financial_connections_account_object-last4) field from the [Financial Connections Account](https://docs.stripe.com/api/financial_connections/accounts/object.md) 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](https://docs.stripe.com/api/financial_connections/accounts.md) 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](https://docs.stripe.com/api/financial_connections/accounts.md) has a TAN, reference the [identifier_type](https://docs.stripe.com/api/financial_connections/accounts/object.md#financial_connections_account_object-account_numbers-identifier_type) field on the objects in the [account_numbers](https://docs.stripe.com/api/financial_connections/accounts/object.md#financial_connections_account_object-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`. ```curl curl https://api.stripe.com/v1/financial_connections/accounts/fca_zbyrdjTrwcYZJZc6WBs6GPid \ -u "<>:" ``` This example request returns a Financial Connections Account with information about a TAN. ```json { "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](https://docs.stripe.com/api/financial-connections/accounts/object.md#financial_connections_account_object-status) of the TAN. A TAN’s status is either: | Status | Description | | -------------- | ----------------------------------------------------------------------------------------------------------------------------- | | `transactable` | You can continue to use this account and its tokenized account number for money movement, including ACH payments and payouts. | | `deactivated` | The 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. > 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. 1. 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 > If you haven’t already, you need to set up a webhook endpoint (use the [Webhooks](https://dashboard.stripe.com/webhooks) page in the Dashboard or follow the [webhook guide](https://docs.stripe.com/webhooks/quickstart.md)) to listen to the applicable [events](https://docs.stripe.com/financial-connections/webhooks.md) for your integration. ### ACH Direct Debit payments ACH Direct Debit [PaymentMethods](https://docs.stripe.com/api/payment_methods.md) 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](https://docs.stripe.com/api/events/types.md#event_types-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 might return 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 attempts to block the payment before the ACH transaction is submitted to the network if we expect 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](https://docs.stripe.com/api/external_account_bank_accounts/object.md) 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](https://docs.stripe.com/api/events/types.md#event_types-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 name | Details | Effective Date | | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | | Chase | Customers can revoke access to the TAN account through the Chase Security Center. | All accounts | | PNC Bank | Customers 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 9, 2024. PNC might re-introduce a time-based expiration policy for TANs in the future. | Accounts linked after August 18, 2024 | | US Bank | US Bank TANs don’t expire and customers can’t revoke these TANs. | Introduced on a rolling basis for some accounts between November 30, 2025 and March 31, 2026 | > #### Delayed activation of tokenized account numbers > > US Bank and PNC tokenized account numbers take up to 45 minutes to activate after they’re issued, and banks might reject payments submitted immediately. If you process ACH payments with Stripe, we handle the delayed activation automatically. If you process ACH payments off of Stripe, wait 90 minutes after issuance before submitting ACH transfers. ## See also - [Test TAN behavior](https://docs.stripe.com/financial-connections/testing.md#simulating-tokenized-account-number-behavior)