/stripe-guides

How to close a Stripe account?

Learn how to safely close your Stripe account with this step-by-step guide: back up data, cancel subscriptions, process payouts, disable integrations, and verify closure.

Matt Graham, CEO of Rapid Developers

Book a call with an Expert

Starting a new venture? Need to upgrade your web app? RapidDev builds application with your growth in mind.

Book a free consultation

How to close a Stripe account?

How to Close a Stripe Account: A Comprehensive Guide

 

Step 1: Understand the Implications of Closing Your Stripe Account

 

Before proceeding with closing your Stripe account, it's important to understand what happens when you do so:

  • All recurring payments, subscriptions, and scheduled payouts will be canceled
  • Access to your dashboard and data will be permanently removed
  • You will no longer be able to process payments through Stripe
  • Any pending payouts will still be processed before account closure
  • You cannot reopen a closed account; you would need to create a new one

 

Step 2: Back Up Your Data

 

Before closing your account, download all essential data:

  • Export your customer information
  • Download transaction history
  • Save any invoice or receipt templates
  • Export payment records

You can download data through the Stripe Dashboard or programmatically via the API:


// Example of retrieving data via API before closing account
const stripe = require('stripe')('your_secret_key');

// Get customers
const customers = await stripe.customers.list({
  limit: 100,
});

// Get transactions
const charges = await stripe.charges.list({
  limit: 100,
});

// Get invoices
const invoices = await stripe.invoices.list({
  limit: 100,
});

 

Step 3: Cancel Active Subscriptions

 

Cancel all active subscriptions to avoid customer billing issues:

  • Navigate to the Subscriptions section in your Stripe Dashboard
  • Cancel each active subscription manually
  • Or use the API to programmatically cancel all subscriptions

Using the API to cancel subscriptions:


// Cancel all active subscriptions
const stripe = require('stripe')('your_secret_key');

const subscriptions = await stripe.subscriptions.list({
  status: 'active',
  limit: 100,
});

for (const subscription of subscriptions.data) {
  await stripe.subscriptions.del(subscription.id);
  console.log(`Subscription ${subscription.id} canceled`);
}

 

Step 4: Process Pending Payouts

 

Ensure all pending payouts are processed:

  • Check the Payouts section in your Dashboard
  • Verify that all transactions have been settled
  • If needed, initiate a manual payout for remaining balance

To initiate a manual payout via API:


// Create a manual payout for remaining balance
const stripe = require('stripe')('your_secret_key');

const payout = await stripe.payouts.create({
  amount: 1000, // amount in cents
  currency: 'usd',
});

console.log(`Payout ${payout.id} created`);

 

Step 5: Disable Webhooks and API Integrations

 

Remove all integrations that depend on your Stripe account:

  • Disable webhooks in your Stripe Dashboard
  • Update or remove any third-party services connected to Stripe
  • Revoke API keys to prevent unauthorized access

To list and delete webhooks via API:


// List and delete webhooks
const stripe = require('stripe')('your_secret_key');

const webhooks = await stripe.webhookEndpoints.list();

for (const webhook of webhooks.data) {
  await stripe.webhookEndpoints.del(webhook.id);
  console.log(`Webhook ${webhook.id} deleted`);
}

 

Step 6: Close Your Account Through the Dashboard

 

The simplest way to close your account is through the Stripe Dashboard:

  • Log in to your Stripe Dashboard
  • Click on your account name in the top-right corner
  • Select "Settings" from the dropdown menu
  • Scroll to the bottom of the page and look for "Close Account"
  • Follow the prompts to confirm closure
  • Provide a reason for closing (required by Stripe)
  • Confirm final closure by clicking the red "Close Account" button

 

Step 7: Close Your Account Using the API

 

You can also close your account programmatically using the Stripe API:


// Close Stripe account via API
const stripe = require('stripe')('your_secret_key');

// You'll need to use the Accounts API
const accountDeletion = await stripe.accounts.del('acct\_xxxxxxxxxxxx');

if (accountDeletion.deleted) {
  console.log('Account successfully closed');
} else {
  console.log('Account closure failed');
}

Note: This method only works for connected accounts or platforms. Standard accounts must be closed through the Dashboard.

 

Step 8: Verify Account Closure

 

After submitting your closure request:

  • Check your email for a confirmation message from Stripe
  • Attempt to log in to verify the account is inaccessible
  • Check that recurring payments have stopped (if applicable)
  • Verify final payout has been received in your bank account

 

Step 9: Update Your Website and Documentation

 

Update your business systems to reflect the change:

  • Remove Stripe payment options from your website
  • Update documentation and payment instructions for customers
  • Set up alternative payment methods if necessary
  • Update any references to Stripe in your terms of service

 

Step 10: Handle Tax and Financial Records

 

Address any financial loose ends:

  • Store financial records according to tax requirements (usually 7 years)
  • Update your accounting system to reflect the closure
  • Inform your accountant or financial advisor
  • Note that Stripe will still send any required tax forms for the current year

 

Troubleshooting Common Issues

 

If you encounter problems closing your account:

  • Ensure all disputes and chargebacks are resolved
  • Verify your account balance is zero or waiting for final payout
  • Check for active subscriptions that weren't properly canceled
  • Contact Stripe Support if the closure option isn't available

To check for outstanding disputes via API:


// Check for disputes before closing
const stripe = require('stripe')('your_secret_key');

const disputes = await stripe.disputes.list({
  limit: 100,
});

if (disputes.data.length > 0) {
  console.log('Warning: You have unresolved disputes');
  disputes.data.forEach(dispute => {
    console.log(`Dispute ID: ${dispute.id}, Status: ${dispute.status}`);
  });
}

 

Special Considerations for Platform Accounts

 

If you're running a platform with connected accounts:

  • Notify all connected accounts of the impending closure
  • Provide instructions for them to migrate or establish direct Stripe relationships
  • Ensure all connected accounts are properly disconnected before closure

Code to list connected accounts before closure:


// List connected accounts
const stripe = require('stripe')('your_secret_key');

const connectedAccounts = await stripe.accounts.list({
  limit: 100,
});

console.log(`You have ${connectedAccounts.data.length} connected accounts`);
connectedAccounts.data.forEach(account => {
  console.log(`Account ID: ${account.id}, Email: ${account.email}`);
});

Want to explore opportunities to work with us?

Connect with our team to unlock the full potential of no-code solutions with a no-commitment consultation!

Book a Free Consultation

Client trust and success are our top priorities

When it comes to serving you, we sweat the little things. That’s why our work makes a big impact.

Rapid Dev was an exceptional project management organization and the best development collaborators I've had the pleasure of working with. They do complex work on extremely fast timelines and effectively manage the testing and pre-launch process to deliver the best possible product. I'm extremely impressed with their execution ability.

CPO, Praction - Arkady Sokolov

May 2, 2023

Working with Matt was comparable to having another co-founder on the team, but without the commitment or cost. He has a strategic mindset and willing to change the scope of the project in real time based on the needs of the client. A true strategic thought partner!

Co-Founder, Arc - Donald Muir

Dec 27, 2022

Rapid Dev are 10/10, excellent communicators - the best I've ever encountered in the tech dev space. They always go the extra mile, they genuinely care, they respond quickly, they're flexible, adaptable and their enthusiasm is amazing.

Co-CEO, Grantify - Mat Westergreen-Thorne

Oct 15, 2022

Rapid Dev is an excellent developer for no-code and low-code solutions.
We’ve had great success since launching the platform in November 2023. In a few months, we’ve gained over 1,000 new active users. We’ve also secured several dozen bookings on the platform and seen about 70% new user month-over-month growth since the launch.

Co-Founder, Church Real Estate Marketplace - Emmanuel Brown

May 1, 2024 

Matt’s dedication to executing our vision and his commitment to the project deadline were impressive. 
This was such a specific project, and Matt really delivered. We worked with a really fast turnaround, and he always delivered. The site was a perfect prop for us!

Production Manager, Media Production Company - Samantha Fekete

Sep 23, 2022