# How to check if your Stripe account is restricted

- Tool: Stripe
- Difficulty: Beginner
- Time required: 5 minutes
- Compatibility: All Stripe accounts, all plans
- Last updated: March 2026

## TL;DR

Check if your Stripe account is restricted by looking at the Dashboard for warning banners, or by retrieving your account via the API and checking the requirements.disabled_reason field. Common restrictions include charges_disabled, payouts_disabled, and under_review. Each restriction has a specific cause and resolution path.

## Checking and Understanding Stripe Account Restrictions

Stripe may restrict your account if verification is incomplete, suspicious activity is detected, or your business type is under review. Restrictions can affect your ability to accept charges, receive payouts, or both. This guide shows you how to identify restrictions, understand their causes, and take the right steps to resolve them.

## Before you start

- Access to the Stripe Dashboard or your Stripe secret key
- Administrator role on the Stripe account

## Step-by-step guide

### 1. Check for restrictions in the Dashboard

Log in to the Stripe Dashboard. If your account is restricted, you will see a red or yellow banner at the top of the page indicating the issue. Click the banner to see details and resolution steps.

**Expected result:** If restricted, a banner explains the restriction and provides a link to resolve it. If no banner appears, your account has no restrictions.

### 2. Review the Requirements section

Go to Settings → Account details and scroll to the requirements section. Look for 'currently_due' and 'past_due' items. Past due items are overdue and may have already triggered restrictions.

**Expected result:** You see a list of any outstanding requirements and their deadlines.

### 3. Check restrictions via the API

Retrieve your account via the API to check the requirements.disabled_reason field. This field tells you exactly why your account is restricted.

```
const Stripe = require('stripe');
const stripe = Stripe(process.env.STRIPE_SECRET_KEY);

async function checkRestrictions() {
  const account = await stripe.accounts.retrieve();

  console.log('Charges enabled:', account.charges_enabled);
  console.log('Payouts enabled:', account.payouts_enabled);

  if (account.requirements.disabled_reason) {
    console.log('RESTRICTED:', account.requirements.disabled_reason);
  } else {
    console.log('No restrictions.');
  }

  if (account.requirements.past_due.length > 0) {
    console.log('Past due requirements:');
    account.requirements.past_due.forEach(r => console.log('  -', r));
  }
}

checkRestrictions();
```

**Expected result:** The script shows whether your account is restricted and the specific reason.

### 4. Understand the disabled_reason

Common disabled_reason values include: 'requirements.past_due' (overdue verification), 'listed' (on a prohibited list), 'rejected.fraud' (suspected fraud), 'rejected.terms_of_service' (TOS violation), and 'under_review' (Stripe is reviewing your account). Each requires a different resolution approach.

**Expected result:** You understand the specific reason for the restriction and the appropriate resolution path.

### 5. Resolve the restriction

For past_due requirements, submit the missing information in the Dashboard. For under_review, wait for Stripe's review and respond to any information requests. For rejection reasons, contact Stripe support to understand the issue and discuss options.

**Expected result:** After resolving the underlying issue, the restriction is lifted and charges_enabled and payouts_enabled return to true.

## Complete code example

File: `check-restrictions.js`

```javascript
// check-restrictions.js
// Comprehensive Stripe account restriction check

const Stripe = require('stripe');
const stripe = Stripe(process.env.STRIPE_SECRET_KEY);

async function checkRestrictions() {
  try {
    const account = await stripe.accounts.retrieve();

    console.log('=== Account Restriction Check ===');
    console.log('');
    console.log('Account ID:', account.id);
    console.log('Charges enabled:', account.charges_enabled ? 'Yes' : 'NO');
    console.log('Payouts enabled:', account.payouts_enabled ? 'Yes' : 'NO');
    console.log('');

    const reqs = account.requirements;

    if (reqs.disabled_reason) {
      console.log('RESTRICTION ACTIVE');
      console.log('Reason:', reqs.disabled_reason);
      console.log('');

      // Explain the reason
      const explanations = {
        'requirements.past_due': 'Verification requirements are overdue. Submit the missing information in the Dashboard.',
        'requirements.pending_verification': 'Stripe is reviewing your submitted documents. No action needed — wait for review.',
        'listed': 'Your account matches an entry on a prohibited list. Contact Stripe support.',
        'rejected.fraud': 'Account was rejected due to suspected fraud. Contact Stripe support to appeal.',
        'rejected.terms_of_service': 'Account was rejected for a Terms of Service violation. Contact Stripe support.',
        'rejected.listed': 'Account was rejected because it is on a prohibited list. Contact Stripe support.',
        'rejected.other': 'Account was rejected for another reason. Contact Stripe support for details.',
        'under_review': 'Stripe is reviewing your account. Respond to any information requests promptly.'
      };

      const explanation = explanations[reqs.disabled_reason] || 'Contact Stripe support for details.';
      console.log('What to do:', explanation);
    } else {
      console.log('No restrictions. Account is fully active.');
    }

    if (reqs.past_due.length > 0) {
      console.log('');
      console.log('Past due items:');
      reqs.past_due.forEach(r => console.log('  -', r));
    }

    if (reqs.currently_due.length > 0) {
      console.log('');
      console.log('Currently due items:');
      reqs.currently_due.forEach(r => console.log('  -', r));
      if (reqs.current_deadline) {
        const deadline = new Date(reqs.current_deadline * 1000);
        console.log('  Deadline:', deadline.toLocaleDateString());
      }
    }

    if (reqs.errors && reqs.errors.length > 0) {
      console.log('');
      console.log('Errors:');
      reqs.errors.forEach(e => console.log(`  - ${e.requirement}: ${e.reason}`));
    }

    return account;
  } catch (err) {
    console.error('Error:', err.message);
  }
}

checkRestrictions();
```

## Common mistakes

- **Ignoring Dashboard warning banners about account restrictions** — undefined Fix: Always address restriction banners immediately. They indicate that your ability to accept payments or receive payouts may be affected.
- **Assuming the account will fix itself without action** — undefined Fix: Most restrictions require you to submit information or documents. Only 'pending_verification' resolves automatically (while Stripe reviews your submission).
- **Creating a new account to avoid restrictions** — undefined Fix: Do not create a new account to circumvent restrictions. This violates Stripe's Terms of Service and may result in permanent bans.
- **Not checking for restrictions programmatically in production** — undefined Fix: Add an account status check to your application's health monitoring so you are alerted immediately if restrictions appear.

## Best practices

- Set up a webhook listener for account.updated events to be notified of restriction changes in real-time
- Check your account status weekly during the first few months after setup when restrictions are most common
- Respond to Stripe's information requests within 24 hours to minimize the duration of restrictions
- Keep identity documents and business registration documents readily accessible for quick submission
- If your account is restricted and you need urgent help, RapidDev can assist in understanding the requirements and preparing the necessary documentation
- Document all communications with Stripe support for reference

## Frequently asked questions

### What does 'requirements.past_due' mean?

It means you missed a deadline to provide required verification information. Submit the missing items in Settings → Account details to lift the restriction.

### Can I still accept payments while my account is restricted?

It depends on the restriction. If charges_enabled is false, you cannot accept payments. If only payouts_enabled is false, you can still accept payments but funds will be held until the restriction is resolved.

### How long does it take for a restriction to be lifted?

For requirements-based restrictions, it is lifted as soon as you submit the required information and Stripe verifies it (usually within hours to 2 business days). For reviews, it depends on the complexity of the review.

### What if my account was rejected?

If disabled_reason starts with 'rejected.', contact Stripe support to understand the specific reason and discuss whether an appeal is possible.

### Will I lose my funds if my account is restricted?

No. Your funds remain in your Stripe balance. They will be paid out once the restriction is resolved. In cases of permanent account closure, Stripe will pay out remaining funds after a holding period.

---

Source: https://www.rapidevelopers.com/stripe-guide/how-to-check-if-my-stripe-account-is-restricted
© RapidDev — https://www.rapidevelopers.com/stripe-guide/how-to-check-if-my-stripe-account-is-restricted
