/stripe-guides

How to activate payouts in Stripe?

Learn how to activate payouts in Stripe step-by-step: set up your account, verify identity, add a bank, configure payout settings, and troubleshoot common issues.

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 activate payouts in Stripe?

How to Activate Payouts in Stripe: A Comprehensive Tutorial

 

Step 1: Create and Set Up Your Stripe Account

 

Before you can activate payouts, you need to have a Stripe account properly set up. If you don't have one yet, follow these steps:

  • Go to stripe.com and click "Sign up"
  • Enter your email, full name, and create a secure password
  • Verify your email address through the confirmation link Stripe sends you
  • Complete the initial business information Stripe requests

 

Step 2: Complete Your Business Information

 

To activate payouts, you need to provide complete business details:

  • Log in to your Stripe Dashboard at dashboard.stripe.com
  • Click on "Settings" in the left sidebar
  • Select "Business settings"
  • Fill out all required information about your business, including:
    • Business name and legal structure
    • Business address
    • Industry and business description
    • Tax ID number (EIN for US businesses)
    • Website URL
  • Click "Save" after completing each section

 

Step 3: Verify Your Identity

 

Stripe requires identity verification to comply with financial regulations:

  • Navigate to "Settings" → "Account settings" in your dashboard
  • Under the "Verification" section, click "Verify identity"
  • Provide your personal information:
    • Full legal name
    • Date of birth
    • Home address
    • Last 4 digits of SSN (for US-based accounts)
  • Upload a photo of your government-issued ID (passport, driver's license, or ID card)
  • Take a selfie if prompted for additional verification

 

Step 4: Add and Verify Your Bank Account

 

To receive payouts, you must connect a bank account:

  • Go to "Settings" → "Payments" in your dashboard
  • Click on "Bank accounts and scheduling"
  • Click "Add a bank account"
  • Enter your banking details:
    • Account holder name (must match the name on the account)
    • Account type (checking or savings)
    • Routing number
    • Account number
    • Bank account currency
  • Verify your bank account using one of Stripe's verification methods:
    • Instant verification (where available)
    • Micro-deposits verification (takes 1-2 business days)

For international accounts, you may need to provide additional details like:

  • IBAN or SWIFT code
  • Sort code
  • BSB number
  • Branch code

 

Step 5: Configure Your Payout Settings

 

Once your bank account is verified, configure your payout preferences:

  • Navigate to "Settings" → "Payments" → "Bank accounts and scheduling"
  • Click "Edit" next to "Payout schedule"
  • Choose your preferred payout frequency:
    • Daily (funds arrive 2 business days after capture)
    • Weekly (specify the day of the week)
    • Monthly (specify the day of the month)
    • Manual (you'll initiate payouts yourself)
  • Set a minimum payout amount if desired
  • Click "Save" to apply your settings

 

Step 6: Implement Payout Functionality in Your Code (Optional)

 

If you need to programmatically manage payouts, you can use Stripe's API:

For Node.js:


const stripe = require('stripe')('sk_test_your_secret_key');

async function createPayout() {
  try {
    const payout = await stripe.payouts.create({
      amount: 1000, // amount in cents
      currency: 'usd',
    });
    console.log('Payout created successfully:', payout.id);
    return payout;
  } catch (error) {
    console.error('Error creating payout:', error);
    throw error;
  }
}

createPayout();

For Python:


import stripe
stripe.api_key = "sk_test_your_secret\_key"

try:
    payout = stripe.Payout.create(
        amount=1000,  # amount in cents
        currency="usd",
    )
    print(f"Payout created successfully: {payout.id}")
except Exception as e:
    print(f"Error creating payout: {str(e)}")

For PHP:


 1000, // amount in cents
        'currency' => 'usd',
    ]);
    echo 'Payout created successfully: ' . $payout->id;
} catch (\Exception $e) {
    echo 'Error creating payout: ' . $e->getMessage();
}

 

Step 7: Monitor Your Payout Status

 

After configuring payouts, it's important to monitor their status:

  • Go to the "Payments" → "Payouts" section in your dashboard
  • Here you can view:
    • Pending payouts
    • Completed payouts
    • Failed payouts
    • Payout history
  • Click on any individual payout to see detailed information
  • Set up webhooks to receive notifications about payout events

To set up webhooks for payout notifications:


// Server-side code to handle webhook events (Node.js example)
const express = require('express');
const stripe = require('stripe')('sk_test_your_secret_key');
const app = express();

// Use JSON parser for webhook requests
app.use('/webhook', express.raw({type: 'application/json'}));

app.post('/webhook', async (req, res) => {
  const sig = req.headers['stripe-signature'];
  let event;

  try {
    event = stripe.webhooks.constructEvent(
      req.body,
      sig,
      'whsec_your_webhook_signing_secret'
    );
  } catch (err) {
    return res.status(400).send(`Webhook Error: ${err.message}`);
  }

  // Handle payout events
  if (event.type === 'payout.created') {
    const payout = event.data.object;
    console.log(`Payout created: ${payout.id} for ${payout.amount / 100} ${payout.currency}`);
  } else if (event.type === 'payout.paid') {
    const payout = event.data.object;
    console.log(`Payout paid: ${payout.id}`);
  } else if (event.type === 'payout.failed') {
    const payout = event.data.object;
    console.log(`Payout failed: ${payout.id}, reason: ${payout.failure_message}`);
  }

  res.json({received: true});
});

app.listen(3000, () => console.log('Running on port 3000'));

 

Step 8: Troubleshoot Common Payout Issues

 

If you encounter issues with payouts, follow these troubleshooting steps:

  • Check for incomplete verification:
    • Ensure all identity verification steps are complete
    • Verify your bank account information is correct
    • Make sure all business information is up-to-date
  • Review account restrictions:
    • Look for any warning messages in your dashboard
    • Check if your account has been flagged for review
  • Confirm sufficient balance:
    • Verify you have enough available balance for the payout
    • Check for any pending disputes or refunds that might affect your balance
  • For failed payouts:
    • Note the failure reason provided by Stripe
    • Contact your bank to ensure they're not rejecting Stripe transfers
    • Verify the bank account is still active and can receive deposits

 

Step 9: Setting Up Connect for Marketplace Payouts (Optional)

 

If you're building a marketplace or platform where you need to pay out to third parties:

  • Navigate to "Connect" in your Stripe dashboard
  • Set up your platform using one of the Connect integration types:
    • Standard Connect: Stripe hosts the onboarding process
    • Express Connect: Customizable onboarding with Stripe handling compliance
    • Custom Connect: Fully customized onboarding experience
  • Implement the onboarding process for your connected accounts

Code example for creating a payout to a connected account:


const stripe = require('stripe')('sk_test_your_secret_key');

async function createConnectedAccountPayout(connectedAccountId) {
  try {
    const payout = await stripe.payouts.create(
      {
        amount: 1000, // amount in cents
        currency: 'usd',
      },
      {
        stripeAccount: connectedAccountId, // ID of the connected account
      }
    );
    console.log(`Payout created for connected account: ${payout.id}`);
    return payout;
  } catch (error) {
    console.error('Error creating connected account payout:', error);
    throw error;
  }
}

// Example usage
createConnectedAccountPayout('acct\_123456789');

 

Step 10: Best Practices for Managing Payouts

 

Follow these best practices to ensure smooth payout operations:

  • Regularly reconcile payouts:
    • Match Stripe payouts with your bank statements
    • Create automated processes to track and verify payouts
    • Set up accounting integrations with Stripe
  • Implement proper error handling:
    • Monitor webhook events for payout failures
    • Set up email notifications for payout issues
    • Create retry mechanisms for failed payouts
  • Maintain security best practices:
    • Regularly rotate API keys
    • Use restricted API keys with minimal permissions
    • Implement proper authentication for admin users who can manage payouts
  • Keep documentation updated:
    • Document your payout processes
    • Create internal guidelines for handling payout issues
    • Maintain a knowledge base for common payout scenarios

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