Guide
Bank Account Verification for WordPress
How to verify bank accounts on a WordPress site: Plaid Auth, Identity Match, micro-deposits and Nacha's WEB debit rule, plus how ID checks differ.
By the PluginLoom teamLast updated 11 sources
Bank account verification on a WordPress site means confirming that the account a user gives you is real, open and able to take ACH debits, and often that the user owns it. The quickest method is a bank login through a service like Plaid, which returns verified account details in one step; micro-deposits are the slower fallback. This guide explains the methods, what Nacha requires for online debits, and how ID checks differ from bank checks.
What does bank account verification mean?#
It means checking a bank account before you debit it or pay into it. There are two separate questions, and many sites only need the first:
| Question | Name | Example method |
|---|---|---|
| Is this a real, open account that can take ACH entries? | Account validation | Bank login via Plaid Auth, micro-deposits, prenotification |
| Does this person own the account? | Ownership verification | Plaid Identity or Identity Match |
| Is this person who they say they are? | Identity verification (KYC) | Plaid Identity Verification: ID document, selfie, data sources |
Keep these apart when you plan a WordPress flow. A checkout needs validation. A payout or lending form may need ownership too. A regulated signup may need full ID checks.
When is account verification required?#
If you take online consumer ACH debits in the US, Nacha's rules require account validation. Nacha's WEB debit rule (opens in a new tab) took effect March 19, 2021. It says the originator's fraud detection system "must, at a minimum, validate the account to be debited."
Key points from the rule:
- It applies to the first use of an account number and to any later change.
- Accounts already used for WEB debits before the effective date did not need re-validation.
- Validation means confirming the account is "a legitimate, open account to which ACH entries may be posted at the RDFI."
- Ownership checks are not part of the minimum standard, though some businesses may need them.
- Accepted methods include prenotifications, micro-transactions, validation services and API based tools. A history of successful prior payments also counts.
- Nacha does not consider a fraud system without account validation sufficient.
This guide is general information, not legal or financial advice. Your bank or payment processor can tell you how these rules apply to your business.
What are the ways to verify a bank account?#
There are four common methods, and they trade speed for coverage.
| Method | How it works | Speed | Notes |
|---|---|---|---|
| Bank login (Plaid Auth) | User signs in to their bank in Plaid Link; Plaid returns account and routing numbers | During the session | Covers checking, savings and cash management accounts |
| Micro-deposits | Small deposits are sent; user confirms them | Days | Fallback when the bank cannot be linked |
| Database verification | Account details are checked against a database | Fast | Plaid offers it as an extra method |
| Prenotification | A zero-dollar test entry is sent over ACH | Days | Listed by Nacha as acceptable |
Plaid's Auth docs (opens in a new tab) describe "micro-deposit-based verification and database verification" as extra methods you configure in the Account Verification Dashboard. Plaid's error docs also mention Instant Auth and Instant Match: if an Item does not support them, Plaid falls back to micro-deposits (Item errors (opens in a new tab)).
Stripe uses a similar split. Its ACH docs (opens in a new tab) say that if a customer enters an account by hand instead of using Financial Connections, Stripe verifies it with micro-deposits, and customers have 10 days to confirm.
How does Plaid Auth verify an account?#
Plaid Auth verifies the account by having the user sign in to their bank through Plaid Link, then returning the account details to your server. Per the Auth docs (opens in a new tab), Auth "allows you to request a user's checking, savings, or cash management account and routing number."
What Auth returns by country:
| Country | Details returned |
|---|---|
| US | Account number, ACH routing number and wire routing number |
| Canada | Institution number and transit number for EFT |
| Europe | IBAN and BIC for SEPA |
| UK | Sort code and account number, plus IBAN and BIC |
Two details matter for WordPress builders:
- Tokenized account numbers. Plaid says only Chase, PNC and US Bank currently return a tokenized account number (TAN) instead of the real one. TANs work only for ACH and RTP, and each app gets its own. Expired or revoked TANs fail with an R04 return code.
- No credit accounts. Auth does not support credit cards or other credit accounts.
If you use a Plaid payment partner, you do not need to call /auth/get at all. You create a processor token, or a Stripe bank account token, and send that to the partner. Plaid's partners page (opens in a new tab) says this frees you "from having to securely store sensitive bank account information."
How do you confirm the user owns the account?#
Use Plaid Identity, which returns the owner details the bank has on file, or Identity Match, which scores how well your user's details match them. The Identity docs (opens in a new tab) explain the two endpoints:
/identity/getreturns names, addresses, emails and phone numbers from the bank. The name is always present; other fields may be empty./identity/matchtakes the name and contact details you collected and returns a match score for each field. Plaid recommends a threshold of 70 or higher per field.
Plaid lists these use cases: fraud reduction, onboarding, supporting KYC checks, and checking ownership before an ACH transfer. You can run Identity for every user or only for higher-risk ones.
On a WordPress site, the natural place for a match is right after Link: compare the WooCommerce billing name or the membership signup name against the bank's owner name.
How is Plaid Identity Verification different?#
Identity Verification checks the person, not the bank account. The Identity Verification docs (opens in a new tab) list these checks:
- Documentary Verification: the user photographs an ID document.
- Selfie Check: confirms a live person and can match the selfie to the document.
- Data Source Verification: checks name, address, date of birth, phone and ID number against records.
- SMS Verification: confirms the phone number with a one-time code.
- Risk Check: background anti-fraud checks, with a Trust Index Score for US sessions.
Plaid notes that Identity Verification is "mutually exclusive with other Plaid products in a Link session," that the checks are set in a Dashboard template, and that onSuccess "does not indicate that the user has passed." Your server must fetch the result with /identity_verification/get. Your company must be based in the US, Canada or the UK to integrate.
You can combine the two: Plaid's docs say pairing Identity with Identity Verification confirms the bank account's owner matches a verified identity.
How do you add bank verification to a WordPress site?#
Add a "Connect your bank" step where the user needs it, run the Plaid checks on your server, and save only the result and tokens. A typical flow:
- Pick the moment. WooCommerce checkout, a MemberPress signup, a payout form, or an Elementor form.
- Create a
link_tokenon the server withauth, andidentityif you need ownership. - Open Plaid Link in the browser so the user signs in to their bank.
- Exchange the
public_tokenon the server for anaccess_token. - Run checks. Get Auth data or a processor token, and run Identity Match against the name the user typed.
- Record the outcome on the order or user profile: verified, failed or needs review.
- Handle fallbacks. Offer micro-deposits if the bank cannot be linked.
- Handle errors. For example,
INCORRECT_DEPOSIT_VERIFICATIONmeans a wrong micro-deposit code, and after three wrong entries Plaid returnsTOO_MANY_VERIFICATION_ATTEMPTSand locks the Item (invalid input errors (opens in a new tab)).
What should you store in WordPress?#
Store as little as you can, and never store raw account numbers if a token will do. Plaid says the access_token should be stored in a persistent, secure manner, and it never belongs in the browser. Nacha's data security rule (opens in a new tab) requires larger originators (2 million or more ACH entries a year) to make stored account numbers unreadable through encryption, truncation, tokenization or similar means. It is a sensible habit at any size.
A minimal record:
| Keep | Avoid |
|---|---|
| Verification status and date | Full account number in post meta or logs |
| Account mask (last 4 digits) and bank name | Plaid secret in the database without protection |
| Processor token or Stripe customer ID | access_token in any page output |
| Identity Match scores, if used | Copies of ID documents on your server |
Our data handling and security doc goes further.
What does verification cost?#
Plaid and Stripe bill verification differently. Plaid's billing docs (opens in a new tab) say Auth and Identity use a one-time fee per Item, while Identity Match is a flat fee per request. Identity Verification is billed for events such as document, selfie and data source checks. Plaid publishes no prices; your plan sets them, and Sandbox is free.
As listed on October 23, 2026, Stripe's pricing page (opens in a new tab) shows Financial Connections instant bank account verification at $1.50 per successful verification, and says "Micro-deposit verifications are free."
Where does BankBridge fit?#
BankBridge is a WordPress plugin that connects your site to Plaid, built to work with WordPress, WooCommerce, Elementor, MemberPress and more. If you want Plaid based account verification on WordPress, check the BankBridge docs for the Plaid products overview, Plaid Link setup and the WooCommerce or MemberPress guide that matches your site. You use your own Plaid account, and Plaid bills you directly. Each license includes a year of updates and support, with a 14-day refund window and secure checkout by Stripe.
Sources#
Checked October 23, 2026.
- Nacha: Supplementing Fraud Detection Standards for WEB Debits (opens in a new tab)
- Nacha: Supplementing Data Security Requirements (opens in a new tab)
- Plaid Docs: Auth (opens in a new tab)
- Plaid Docs: Auth payment partners (opens in a new tab)
- Plaid Docs: Identity (opens in a new tab)
- Plaid Docs: Identity Verification (opens in a new tab)
- Plaid Docs: Item errors (opens in a new tab)
- Plaid Docs: Invalid input errors (opens in a new tab)
- Plaid Docs: Billing (opens in a new tab)
- Stripe Docs: ACH Direct Debit (opens in a new tab)
- Stripe pricing (opens in a new tab)
Plaid is a trademark of Plaid Inc. BankBridge is an independent plugin and is not affiliated with or endorsed by Plaid.
Frequently asked questions
What is the fastest way to verify a bank account on WordPress?
Letting the user sign in to their bank through a connection service such as Plaid Link. Plaid Auth then returns the account and routing number for a checking, savings or cash management account, without waiting for micro-deposits.
Is account validation the same as ownership verification?
No. Nacha's minimum standard for WEB debits asks you to confirm the account is a legitimate, open account that can take ACH entries. Confirming the user owns it is a separate step, which Plaid handles with Identity and Identity Match.
What if the user's bank is not supported by Plaid?
Plaid describes micro-deposit and database verification as fallbacks, set up in its Account Verification Dashboard. Stripe also verifies manually entered accounts with micro-deposits, which customers have 10 days to confirm.
Is Plaid Identity Verification the same as Plaid Identity?
No. Identity Verification checks that a person is who they claim to be, using documents, selfies and data sources. Identity checks that the owner details on a linked bank account match the person.
Do I need to store the account number in WordPress?
Usually not. Plaid processor partners let you pass a token to your payment platform instead, which Plaid says frees you from having to securely store sensitive bank account information.
Sources
The date shows when we last checked that the source still says what we say it says.
- Nacha: Supplementing Fraud Detection Standards for WEB Debits, nacha.org. Checked 2026-10-23
- Nacha: Supplementing Data Security Requirements, nacha.org. Checked 2026-10-23
- Plaid Docs: Auth, plaid.com. Checked 2026-10-23
- Plaid Docs: Auth payment partners, plaid.com. Checked 2026-10-23
- Plaid Docs: Identity, plaid.com. Checked 2026-10-23
- Plaid Docs: Identity Verification, plaid.com. Checked 2026-10-23
- Plaid Docs: Item errors, plaid.com. Checked 2026-10-23
- Plaid Docs: Invalid input errors, plaid.com. Checked 2026-10-23
- Plaid Docs: Billing, plaid.com. Checked 2026-10-23
- Stripe Docs: ACH Direct Debit, docs.stripe.com. Checked 2026-10-23
- Stripe pricing, stripe.com. Checked 2026-10-23