These are the primary reasons for R04 returns for ACH transactions with Chase TANs:
-
Mismatched account number and routing number
- The TAN comprises a specific tokenized, or virtual, account number and routing number, which are different from the user's true account numbers. Chase does not share the full true account number and routing number through their APIs. The TAN pair must be used as provided. Combining the normal account number with the TAN routing number, or vice versa, will result in an R04 or other applicable return code.
-
Truncating digits
- The tokenized account number shared through the API is 17 digits long, with “00” as the first 2 digits. The two leading 0s may be dropped, but it’s important to keep the remaining 15 digits when generating the Nacha file. Chase has seen instances where leading or trailing digits were dropped, causing the account lookup to fail and an R04 response.
-
Using a disabled TAN – Chase reports that customers using invalid TANs account for the largest number of R04s seen in their logs.
- When account access consent is revoked for any reason, the associated TAN is disabled. Chase has seen instances where the TAN was disabled shortly before the ACH transaction, and other instances where the TAN was disabled months prior to the transaction. Using TANs is different from the typical “one and done” account verification. It’s important that you maintain awareness of your user's account consent status before submitting their TANs for transactions.
- Additionally, Plaid provides a webhook to give you real-time alerts when a user updates their data sharing preferences on Chase's domain and a TAN is invalidated. While no action is required, we strongly encourage your team to listen for this webhook in order to be notified of these changes and mitigate issues with Chase TANs. Learn more in our technical docs on the
USER_PERMISSION_REVOKEDwebhook. -
USER_PERMISSION_REVOKED: If you receive this webhook for a Chase Item, you should not create any new ACH transfers for that Item, as they will be returned. The TAN associated with the revoked account is no longer valid and cannot be used until access has been re-granted. -
Note: As of September 24, 2025, Chase no longer fires the legacy
USER_ACCOUNT_REVOKEDwebhook for these events;USER_PERMISSION_REVOKEDis the canonical signal. Older integrations that previously listened forUSER_ACCOUNT_REVOKEDon Chase Items should migrate toUSER_PERMISSION_REVOKED.