Skip to main content
RapidDev - Software Development Agency
stripe-guide

How to fix Stripe verification failed error

The Stripe verification failed error means your account identity verification was rejected. This typically happens when submitted documents are blurry, expired, don't match the account name, or are the wrong document type. Fix it by resubmitting clear, current documents through Dashboard → Settings → Account details → Verification, and ensuring the name on documents matches your Stripe account exactly.

What you'll learn

  • What causes Stripe account verification failures
  • How to check your verification status and requirements
  • How to submit documents that pass verification
  • How to handle verification for Connect accounts programmatically
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Beginner5 min read15 minutesAll Stripe accounts (Standard, Express, Custom)March 2026RapidDev Engineering Team
TL;DR

The Stripe verification failed error means your account identity verification was rejected. This typically happens when submitted documents are blurry, expired, don't match the account name, or are the wrong document type. Fix it by resubmitting clear, current documents through Dashboard → Settings → Account details → Verification, and ensuring the name on documents matches your Stripe account exactly.

Why Stripe Account Verification Fails

Stripe requires identity verification to comply with financial regulations (KYC — Know Your Customer). When verification fails, Stripe restricts your account from processing payments or receiving payouts. Common failure reasons include blurry or cropped document photos, expired IDs, name mismatches between your ID and account information, and unsupported document types. Resolving this quickly is critical because verification failures block your ability to accept payments.

Prerequisites

  • A Stripe account with a verification requirement or failure
  • A valid government-issued ID (passport, driver's license, or national ID)
  • Business documentation if you have a business account (registration, tax ID)

Step-by-step guide

1

Check your verification status

Go to Stripe Dashboard → Settings (gear icon) → Account details. Look for banners or alerts indicating what verification is needed. You may also see these alerts at the top of your Dashboard or in email notifications from Stripe.

Expected result: You can see exactly what verification documents or information Stripe needs from you.

2

Review the rejection reason

Stripe provides specific reasons for verification failures. Common reasons include: 'document is not readable', 'document has expired', 'name on document does not match', 'document type not accepted', 'address verification failed'. Check your email or Dashboard alerts for the specific reason.

Expected result: You know the specific reason your verification was rejected and can address it directly.

3

Prepare acceptable documents

Stripe accepts: passport, driver's license, or government-issued national ID card. For business verification: certificate of incorporation, utility bill, or bank statement for address proof. Photos must be in color, not cropped, with all four corners visible, and text clearly readable.

Expected result: You have clear, high-quality photos of valid, non-expired identity documents.

4

Resubmit verification documents

Go to Dashboard → Settings → Account details → click on the verification section that shows an error. Upload your new document photos. Ensure the name on the document exactly matches the name on your Stripe account — even middle names and suffixes matter.

Expected result: Documents uploaded successfully. Stripe reviews them within 1-2 business days (sometimes minutes for automated review).

5

Handle verification programmatically for Connect accounts

If you're using Stripe Connect and managing verification for connected accounts, use the Account API to check requirements and upload documents. The RapidDev engineering team frequently implements this for platforms managing many connected accounts.

typescript
1const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
2
3// Check what's needed
4const account = await stripe.accounts.retrieve('acct_connected_id');
5console.log('Requirements:', account.requirements.currently_due);
6console.log('Errors:', account.requirements.errors);
7
8// Upload a verification document
9const file = await stripe.files.create({
10 purpose: 'identity_document',
11 file: {
12 data: fs.readFileSync('/path/to/document.jpg'),
13 name: 'id_front.jpg',
14 type: 'image/jpeg',
15 },
16});
17
18// Attach to account
19await stripe.accounts.update('acct_connected_id', {
20 individual: {
21 verification: {
22 document: {
23 front: file.id,
24 },
25 },
26 },
27});

Expected result: The verification document is uploaded and attached to the connected account via the API.

Complete working example

verify-account.js
1require('dotenv').config();
2const fs = require('fs');
3const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
4
5async function checkVerificationStatus(accountId) {
6 const account = await stripe.accounts.retrieve(accountId);
7
8 const status = {
9 charges_enabled: account.charges_enabled,
10 payouts_enabled: account.payouts_enabled,
11 currently_due: account.requirements.currently_due,
12 past_due: account.requirements.past_due,
13 errors: account.requirements.errors,
14 disabled_reason: account.requirements.disabled_reason,
15 };
16
17 console.log('Verification status:', JSON.stringify(status, null, 2));
18 return status;
19}
20
21async function uploadVerificationDocument(accountId, filePath, side = 'front') {
22 // Upload the file to Stripe
23 const file = await stripe.files.create({
24 purpose: 'identity_document',
25 file: {
26 data: fs.readFileSync(filePath),
27 name: `id_${side}.jpg`,
28 type: 'image/jpeg',
29 },
30 }, {
31 stripeAccount: accountId,
32 });
33
34 console.log(`File uploaded: ${file.id}`);
35
36 // Attach to account verification
37 const updateData = {
38 individual: {
39 verification: {
40 document: {
41 [side]: file.id,
42 },
43 },
44 },
45 };
46
47 const updated = await stripe.accounts.update(accountId, updateData);
48 console.log('Account updated, requirements:', updated.requirements.currently_due);
49 return updated;
50}
51
52module.exports = { checkVerificationStatus, uploadVerificationDocument };

Common mistakes when fixing Stripe verification failed error

Why it's a problem: Submitting blurry or partially cropped document photos

How to avoid: Take photos in good lighting with all four corners visible. Use your phone's highest resolution setting. Avoid shadows and glare.

Why it's a problem: Name on ID doesn't match the Stripe account name

How to avoid: Update your Stripe account name to exactly match your ID, including middle names, suffixes, and spelling. Or use a different ID that matches.

Why it's a problem: Submitting expired identity documents

How to avoid: Stripe requires valid, non-expired documents. Check the expiration date before uploading.

Why it's a problem: Using a document type Stripe doesn't accept

How to avoid: Stripe accepts passports, driver's licenses, and government-issued national IDs. Credit cards, student IDs, and employment badges are not accepted.

Best practices

  • Complete verification as soon as you create your Stripe account — don't wait until you need payouts
  • Ensure the name on all documents exactly matches your Stripe account information
  • Use high-quality, full-color photos with all four corners of the document visible
  • Check requirements.currently_due programmatically for Connect accounts
  • Set up a webhook for account.updated events to monitor verification status changes
  • Keep backup copies of submitted documents for re-verification if needed
  • For business accounts, ensure your business registration is current and matches Stripe records

Still stuck?

Copy one of these prompts to get a personalized, step-by-step explanation.

ChatGPT Prompt

Write a Node.js script using the Stripe API that checks the verification status of a connected account, lists any currently_due requirements and errors, uploads a verification document file, and attaches it to the account's individual verification. Include error handling.

Stripe Prompt

Build a Stripe Connect account verification helper in Node.js that checks verification requirements, uploads identity documents via the Files API, attaches them to the account, and logs the updated requirements status.

Frequently asked questions

How long does Stripe verification take?

Automated verification can complete in minutes. Manual review typically takes 1-2 business days. Complex cases or additional document requests may take longer.

What documents does Stripe accept for identity verification?

Passport, driver's license, or government-issued national ID card. The document must be valid (not expired), in color, and clearly readable with all four corners visible.

Can I use my Stripe account while verification is pending?

It depends on what's pending. Some accounts can process payments but have payouts held until verification completes. Accounts with past_due requirements may have charges disabled entirely.

Why was my verification rejected even though my documents are valid?

Common reasons: the name doesn't match exactly (including middle names), the photo is too blurry or has glare, the document is partially cropped, or there's an address mismatch. Resubmit with a clearer photo and ensure all information matches your Stripe account.

How do I handle verification for Stripe Connect accounts?

Use the Account API to check requirements.currently_due, upload documents via the Files API with purpose 'identity_document', and attach them to the account's verification fields. Listen for account.updated webhooks to track status changes.

RapidDev

Talk to an Expert

Our team has built 600+ apps. Get personalized help with your project.

Book a free consultation

Need help with your project?

Our experts have built 600+ apps and can accelerate your development. Book a free consultation — no strings attached.

Book a free consultation

We put the rapid in RapidDev

Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We'll discuss your project and provide a custom quote at no cost.