# Pay out money with Accounts v1

Add money to your Stripe balance and pay out your sellers or service providers.

Stripe supports cross-border transfers on the payments balance between the United States, Canada, United Kingdom, EEA, and Switzerland. In other scenarios, your platform and any connected account must be in the same region. Attempting to transfer funds across unsupported borders or balances returns an error. See [Cross-border payouts](https://docs.stripe.com/connect/cross-border-payouts.md) for supported funds flows between other regions.

You must only use transfers in combination with the permitted use cases for [charges](https://docs.stripe.com/connect/charges.md), [tops-ups](https://docs.stripe.com/connect/top-ups.md) and [fees](https://docs.stripe.com/connect/legacy/add-and-pay-out-guide.md#collect-fees). We recommend using separate charges and transfers only when you’re responsible for negative balances of your connected accounts.

# API

> This is a API for when dashboard-or-api is api. View the full page at https://docs.stripe.com/connect/legacy/add-and-pay-out-guide?dashboard-or-api=api.

Use this guide to learn how to add funds to your account balance and transfer the funds into your users’ bank accounts, without processing payments through Stripe. This guide uses an example of a Q&A product that pays its writers a portion of the advertising revenue that their answers generate. The platform and connected accounts are both in the US.

> Only [team members](https://docs.stripe.com/get-started/account/teams.md) with administrator access to the platform Stripe account and [two-factor authentication](https://support.stripe.com/questions/how-do-i-enable-two-step-verification) enabled can add funds.

For businesses using automatic payouts, funds added to the payments balance in excess of the [minimum balance](https://docs.stripe.com/payouts/minimum-balances-for-automatic-payouts.md) are paid out in the next payout. You can configure your payout schedule and minimum balance settings in your [Payout settings](https://dashboard.stripe.com/settings/payouts).

## Prerequisites 

1. [Register your platform](https://dashboard.stripe.com/connect).
1. [Verify and add business details in Dashboard](https://dashboard.stripe.com/account/onboarding).
1. [Complete your platform profile](https://dashboard.stripe.com/connect/settings/profile).
1. [Customize your brand settings](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding). Add a business name, icon, and brand color.

## Set up Stripe [Server-side]

Install Stripe’s official libraries so you can access the API from your application:

#### Ruby

```bash
# Available as a gem
sudo gem install stripe
```

```ruby
# If you use bundler, you can add this line to your Gemfile
gem 'stripe'
```

## Create a connected account

When a user (seller or service provider) signs up on your platform, create a user [Account](https://docs.stripe.com/api/accounts.md) (referred to as a *connected account*) so you can accept payments and move funds to their bank account. Connected accounts represent your users in Stripe’s API and facilitate the collection of information requirements so Stripe can verify the user’s identity. For a Q&A product that pays for answers, the connected account represents the writer.

> This guide uses connected accounts that use the Express Dashboard, which have certain [restrictions](https://docs.stripe.com/connect/express-accounts.md#prerequisites-for-using-express). You can evaluate [Custom accounts](https://docs.stripe.com/connect/custom-accounts.md) as an alternative.

### 1. Customize your signup form 

In your [platform settings](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding), customize your Express signup form by changing the color and logos that users see when they click your *Connect* (Connect is Stripe's solution for multi-party businesses, such as marketplace or software platforms, to route payments between sellers, customers, and other recipients) link.
![](https://b.stripecdn.com/docs-statics-srv/assets/oauth-form.4b13fc5edc56abd16004b4ccdff27fb6.png)

Default Express signup form
![](https://b.stripecdn.com/docs-statics-srv/assets/branding-settings-payouts.20c99c810389a4e7f5c55238e80a9fc8.png)

Branding settings

### 2. Create a connected account and prefill information 

Use the `/v1/accounts` API to [create](https://docs.stripe.com/api/accounts/create.md) a connected account by specifying the [connected account properties](https://docs.stripe.com/connect/migrate-to-controller-properties.md), or by specifying the account type.

```curl
curl https://api.stripe.com/v1/accounts \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "controller[losses][payments]=application" \
  -d "controller[fees][payer]=application" \
  -d "controller[stripe_dashboard][type]=express"
```

If you’ve already collected information for your connected accounts, you can prefill that information on the `Account` object. You can prefill any account information, including personal and business information, external account information, and so on.

After creating the `Account`, create a [Person](https://docs.stripe.com/api/persons/create.md) to represent the person responsible for opening the account, with `relationship.representative` set to true and any account information you want to prefill (for example, their first and last name).

```curl
curl https://api.stripe.com/v1/accounts/{{ACCOUNT_ID}}/persons \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d first_name=Jenny \
  -d last_name=Rosen \
  -d "relationship[representative]=true"
```

Connect Onboarding doesn’t ask for the prefilled information. However, it does ask the account holder to confirm the prefilled information before accepting the [Connect service agreement](https://docs.stripe.com/connect/service-agreement-types.md).

When testing your integration, prefill account information using [test data](https://docs.stripe.com/connect/testing.md).

### Create an account link 

You can create an account link by calling the [Account Links v1](https://docs.stripe.com/api/account_links.md) API with the following parameters:

- `account`
- `refresh_url`
- `return_url`
- `type` = `account_onboarding`

```curl
curl https://api.stripe.com/v1/account_links \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "account={{CONNECTEDACCOUNT_ID}}" \
  --data-urlencode "refresh_url=https://example.com/reauth" \
  --data-urlencode "return_url=https://example.com/return" \
  -d type=account_onboarding
```

### Redirect your user to the account link URL 

The create Account Link response includes a `url` value. After authenticating the user in your application, redirect to this URL to send them into the flow. Account link URLs from the [Account Links v1](https://docs.stripe.com/api/account_links.md) API are temporary and are single-use only, because they grant access to the connected account user’s personal information. Authenticate the user in your application before redirecting them to this URL. If you want to prefill information, you must do so before generating the account link. After you create the account link, you can’t read or write information for the connected account.

> Don’t email, text, or otherwise send account link URLs outside of your platform application. Instead, provide them to the authenticated account holder within your application.

#### Item 1

#### Swift

```swift
import UIKit
import SafariServices

let BackendAPIBaseURL: String = "" // Set to the URL of your backend server

class ConnectOnboardViewController: UIViewController {

    // ...

    override func viewDidLoad() {
        super.viewDidLoad()

        let connectWithStripeButton = UIButton(type: .system)
        connectWithStripeButton.setTitle("Connect with Stripe", for: .normal)
        connectWithStripeButton.addTarget(self, action: #selector(didSelectConnectWithStripe), for: .touchUpInside)
        view.addSubview(connectWithStripeButton)

        // ...
    }

    @objc
    func didSelectConnectWithStripe() {
        if let url = URL(string: BackendAPIBaseURL)?.appendingPathComponent("onboard-user") {
          var request = URLRequest(url: url)
          request.httpMethod = "POST"
          let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
              guard let data = data,
                  let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String : Any],
                  let accountURLString = json["url"] as? String,
                  let accountURL = URL(string: accountURLString) else {
                      // handle error
              }

              let safariViewController = SFSafariViewController(url: accountURL)
              safariViewController.delegate = self

              DispatchQueue.main.async {
                  self.present(safariViewController, animated: true, completion: nil)
              }
          }
        }
    }

    // ...
}

extension ConnectOnboardViewController: SFSafariViewControllerDelegate {
    func safariViewControllerDidFinish(_ controller: SFSafariViewController) {
        // the user may have closed the SFSafariViewController instance before a redirect
        // occurred. Sync with your backend to confirm the correct state
    }
}

```

#### Item 2

```xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".activity.ConnectWithStripeActivity">

    <Button
        android:id="@+id/connect_with_stripe"
        android:text="Connect with Stripe"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        style="?attr/materialButtonOutlinedStyle"
        />

</androidx.constraintlayout.widget.ConstraintLayout>
```

#### Kotlin

```kotlin
class ConnectWithStripeActivity : AppCompatActivity() {

    private val viewBinding: ActivityConnectWithStripeViewBinding by lazy {
        ActivityConnectWithStripeViewBinding.inflate(layoutInflater)
    }
    private val httpClient = OkHttpClient()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(viewBinding.root)

        viewBinding.connectWithStripe.setOnClickListener {
            val weakActivity = WeakReference<Activity>(this)
            val request = Request.Builder()
                .url(BACKEND_URL + "onboard-user")
                .post("".toRequestBody())
                .build()
            httpClient.newCall(request)
                .enqueue(object: Callback {
                    override fun onFailure(call: Call, e: IOException) {
                        // Request failed
                    }
                    override fun onResponse(call: Call, response: Response) {
                        if (!response.isSuccessful) {
                            // Request failed
                        } else {
                            val responseData = response.body?.string()
                            val responseJson =
                                responseData?.let { JSONObject(it) } ?: JSONObject()
                            val url = responseJson.getString("url")

                            weakActivity.get()?.let {
                                val builder: CustomTabsIntent.Builder = CustomTabsIntent.Builder()
                                val customTabsIntent = builder.build()
                                customTabsIntent.launchUrl(it, Uri.parse(url))
                            }
                        }
                    }
                })
        }
    }

    internal companion object {
        internal const val BACKEND_URL = "https://example-backend-url.com/"
    }
}
```

### Handle the user returning to your platform 

Connect Onboarding requires you to pass both a `return_url` and `refresh_url` to handle all cases where the account user is redirected to your platform. It’s important that you implement these correctly to provide the best experience for your user.

> You can use HTTP for your `return_url` and `refresh_url` while in you’re in a testing environment (for example, to test with localhost), but live mode only accepts HTTPS. You must update testing URLs to HTTPS URLs before you go live.

#### return_url

Stripe issues a redirect to this URL when the connected account user completes onboarding flow. That doesn’t mean that all information has been collected or that there are no outstanding requirements on the account. It only means that the flow was entered and exited properly.

No state is passed through this URL. After a user is redirected to your `return_url`, check the state of the `details_submitted` parameter on their account by doing either of the following:

- Listen to `account.updated` webhooks
- Call the [Accounts v1](https://docs.stripe.com/api/accounts.md) API and inspect the returned object

#### refresh_url

Stripe redirects your user to the `refresh_url` in these cases:

- The link is expired (a few minutes went by since the link was created).
- The user already visited the URL (the user refreshed the page or clicked back or forward in the browser).
- Your platform is no longer able to access the account.
- The account has been rejected.

Configure your `refresh_url` page to trigger a method on your server to call [Account Links v1](https://docs.stripe.com/api/account_links.md) again with the same parameters, and redirect the user to the new link.

### Handle users that haven’t completed onboarding 

A user that’s redirected to your `return_url` might not have completed the onboarding process. Use the `/v1/accounts` endpoint to retrieve the user’s account and check for `charges_enabled`. If the account isn’t fully onboarded, provide UI prompts to allow the user to continue onboarding through a new account link. You can determine whether they’ve completed onboarding by checking the state of the `details_submitted` parameter on their account.

If you’ve already collected information for your connected accounts, you can prefill that information on the `Account` object. You can prefill any account information, including personal and business information, external account information, and so on.

After creating the `Account`, create a [Person](https://docs.stripe.com/api/persons/create.md) to represent the person responsible for opening the account, with `relationship.representative` set to true and any account information you want to prefill (for example, their first and last name).

```curl
curl https://api.stripe.com/v1/accounts/{{ACCOUNT_ID}}/persons \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d first_name=Jenny \
  -d last_name=Rosen \
  -d "relationship[representative]=true"
```

Connect Onboarding doesn’t ask for the prefilled information. However, it does ask the account holder to confirm the prefilled information before accepting the [Connect service agreement](https://docs.stripe.com/connect/service-agreement-types.md).

When testing your integration, prefill account information using [test data](https://docs.stripe.com/connect/testing.md).

### 3. Create an account link 

Create an [Account Link](https://docs.stripe.com/api/account_links.md) with the following arguments:

- `account`
- `refresh_url`
- `return_url`
- `type` = `account_onboarding`

```curl
curl https://api.stripe.com/v1/account_links \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "account={{CONNECTEDACCOUNT_ID}}" \
  --data-urlencode "refresh_url=https://example.com/reauth" \
  --data-urlencode "return_url=https://example.com/return" \
  -d type=account_onboarding
```

### 4. Redirect your user to the account link 

The response to your [Account Links](https://docs.stripe.com/api/account_links.md) request includes a value for the key `url`. Redirect your user to this link. URLs from the [Account Links](https://docs.stripe.com/api/account_links.md) API are temporary and can be used only once because they grant access to the account holder’s personal information. Authenticate the user in your application before redirecting them to this URL. If you want to prefill information, you must do so before generating the account link. After you create the account link, you won’t be able to read or write information for the connected account.

> Don’t email, text, or otherwise send account link URLs outside of your platform application. Instead, provide them to the authenticated account holder within your application.

### 5. Handle the user returning to your platform 

Connect Onboarding requires you to pass both a `return_url` and `refresh_url` to handle all cases where the user is redirected to your platform. It’s important that you implement these correctly to provide the best experience for your user.

> You can use HTTP for your `return_url` and `refresh_url` while you’re in a testing environment (for example, to test with localhost), but live mode only accepts HTTPS. You must update testing URLs to HTTPS URLs before you go live.

#### return_url

Stripe issues a redirect to this URL when the user completes the Connect Onboarding flow. This doesn’t mean that all information has been collected or that there are no outstanding requirements on the account. This only means the flow was entered and exited properly.

No state is passed through this URL. After a user is redirected to your `return_url`, check the state of the `details_submitted` parameter on their account by doing either of the following:

- Listening to `account.updated` events.
- Calling the [Accounts](https://docs.stripe.com/api/accounts.md) API and inspecting the returned object.

#### refresh_url

Your user is redirected to the `refresh_url` when:

- The link has expired (a few minutes have passed since the link was created).
- The link was already visited (the user refreshed the page or clicked back or forward in their browser).
- The link was shared in a third-party application such as a messaging client that attempts to access the URL to preview it. Many clients automatically visit links which cause them to become expired.
- Your platform is no longer able to access the account.
- The account has been rejected.

The `refresh_url` should call [Account Links](https://docs.stripe.com/api/account_links.md) again on your server with the same parameters and redirect the user to the Connect Onboarding flow to create a seamless experience.

### 6. Handle users that haven’t completed onboarding 

A user that’s redirected to your `return_url` might not have completed the onboarding process. Use the `/v1/accounts` endpoint to retrieve the user’s account and check for `charges_enabled`. If the account isn’t fully onboarded, provide UI prompts to allow the user to continue onboarding later. The user can complete their account activation through a new account link (generated by your integration). You can check the state of the `details_submitted` parameter on their account to see if they’ve completed the onboarding process.

## Add funds to your balance

To add funds, go to the [Balance](https://dashboard.stripe.com/balance/overview) section in the Dashboard. Click **Add to balance** and select a balance to add to funds to.

Select **Payments balance** to add funds that are paid out to your connected accounts. You can also use funds added to the payments balance to cover future refunds and disputes or to repay your platform’s negative balance. To learn more about **Refunds and disputes balance**, see [adding funds to your Stripe balance](https://docs.stripe.com/get-started/account/add-funds.md).

### Verify your bank account 

Go through the verification process in the Dashboard when you first attempt to add funds from an unverified bank account. If your bank account is unverified, you’ll need to confirm two microdeposits from Stripe. These deposits appear in your online banking statement within 1-2 business days. You’ll see `ACCTVERIFY` as the statement description.

Stripe notifies you in the Dashboard and through email when the microdeposits have arrived in your account. To complete the verification process, click the Dashboard notification in the [Balance](https://dashboard.stripe.com/balance/overview) section, enter the two microdeposit amounts, and click **Verify account**.
![](https://b.stripecdn.com/docs-statics-srv/assets/top-ups4.85d1f2d8440f525714d0f2d20775e2d1.png)

### Create a top-up 

Once verified, create a [top-up](https://docs.stripe.com/api.md#topups) to add funds to your account balance.

```curl
curl https://api.stripe.com/v1/topups \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d amount=2000 \
  -d currency=usd \
  -d "description=Top-up for week of May 31" \
  -d "statement_descriptor=Weekly top-up"
```

When you transfer funds, a statement descriptor appears on your banking statement for the transaction. The default statement descriptor is **Top-up**. You can customize the statement descriptor and internal description for the top-up.

### View funds 

View your funds in the Dashboard on [Top-ups](https://dashboard.stripe.com/test/topups) tab under the [Balance](https://dashboard.stripe.com/balance/overview) page. Each time you add funds, a top-up object is made that has a unique ID in the format **tu\_XXXXXX**, which you can see on the detailed view for the top-up.

### Settlement timing 

US platforms add funds through ACH debit and can take 5-6 business days to become available in your Stripe balance. You can request a review of your account for faster settlement timing by contacting [Stripe Support](https://support.stripe.com/contact).

As we learn more about your account, Stripe might be able to decrease your settlement timing automatically.

Adding funds for future refunds and disputes or to repay a negative balance can happen through [bank or wire transfers](https://docs.stripe.com/get-started/account/add-funds.md) and are available in 1-2 business days.

## Pay out to your user [Server-side]

You can transfer available funds to a connected account using the [API](https://docs.stripe.com/api/transfers.md). For example, make the following call to transfer 10 USD to an account:

#### curl

```bash
curl https://api.stripe.com/v1/transfers \
  -u <<YOUR_SECRET_KEY>> \
  -d amount=1000 \
  -d currency="usd" \
  -d destination="{{CONNECTED_STRIPE_ACCOUNT_ID}}"
```

By default, any funds that you transfer to a connected account accumulates in the connected account’s [Stripe balance](https://docs.stripe.com/connect/account-balances.md) and is paid out on a daily rolling basis. You can change the [payout schedule](https://docs.stripe.com/connect/manage-payout-schedule.md) as needed.

## Test your integration

From your [account Dashboard](https://dashboard.stripe.com/test/connect/accounts/overview), you can view an account and its balance.
![](https://b.stripecdn.com/docs-statics-srv/assets/dashboard-account-payout.94e15f1be4a11a54d18fc305433e50f4.png)

Use the [test bank tokens](https://docs.stripe.com/connect/testing.md#testing-top-ups) to simulate flows for accounts and onboarding, payouts, and adding funds.

## See also

- [Build a marketplace](https://docs.stripe.com/connect/marketplace.md)
- [Manage connected accounts in the Dashboard](https://docs.stripe.com/connect/dashboard.md)
- [Debit a connected account](https://docs.stripe.com/connect/account-debits.md)
- [Integrate with the Express Dashboard](https://docs.stripe.com/connect/express-dashboard.md)
- [Collect information required for US taxes](https://docs.stripe.com/connect/account-capabilities.md?accounts-namespace=v1#tax-reporting)


# No code

> This is a No code for when dashboard-or-api is dashboard. View the full page at https://docs.stripe.com/connect/legacy/add-and-pay-out-guide?dashboard-or-api=dashboard.

Use this guide to learn how to add funds to your account balance and transfer the funds into your users’ bank accounts, without processing payments through Stripe. This guide uses an example of a Q&A product that pays its writers a portion of the advertising revenue that their answers generate. The platform and connected accounts are both in the US.

For businesses using automatic payouts, funds added to the payments balance in excess of the [minimum balance](https://docs.stripe.com/payouts/minimum-balances-for-automatic-payouts.md) are paid out in the next payout. You can configure your payout schedule and minimum balance settings in your [Payout settings](https://dashboard.stripe.com/settings/payouts).

> Only [team members](https://docs.stripe.com/get-started/account/teams.md) with administrator access to the platform Stripe account and [two-factor authentication](https://support.stripe.com/questions/how-do-i-enable-two-step-verification) enabled can add funds.

## Prerequisites 

1. [Register your platform](https://dashboard.stripe.com/connect).
1. [Verify and add business details in Dashboard](https://dashboard.stripe.com/account/onboarding).
1. [Complete your platform profile](https://dashboard.stripe.com/connect/settings/profile).
1. [Customize your brand settings](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding). Add a business name, icon, and brand color.

## Create a connected account

When a user (seller or service provider) signs up on your platform, create a user [Account](https://docs.stripe.com/api/v2/core/accounts.md) (referred to as a *connected account*) so you can accept payments and move funds to their bank account. Connected accounts represent your users in Stripe’s API and facilitate the collection of information requirements so Stripe can verify the user’s identity. For a Q&A product that pays for answers, the connected account represents the writer.

> This guide uses Express accounts which have certain [restrictions](https://docs.stripe.com/connect/express-accounts.md#prerequisites-for-using-express). You can evaluate [Custom accounts](https://docs.stripe.com/connect/custom-accounts.md) as an alternative.

### Customize your signup form 

In your [platform settings](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding), customize your Express signup form by changing the color and logos that users see when they click your *Connect* (Connect is Stripe's solution for multi-party businesses, such as marketplace or software platforms, to route payments between sellers, customers, and other recipients) link.
![](https://b.stripecdn.com/docs-statics-srv/assets/oauth-form.4b13fc5edc56abd16004b4ccdff27fb6.png)

Default Express signup form
![](https://b.stripecdn.com/docs-statics-srv/assets/branding-settings-payouts.20c99c810389a4e7f5c55238e80a9fc8.png)

Branding settings

### Create a connected account link 

You can create a connected account onboarding link by clicking **+Create** on the [Connected accounts](https://dashboard.stripe.com/connect/accounts) page, and selecting **Express** for the account type, along with the **transfers** capability. Click **Continue** to generate a link to share with the user you want to onboard.
![Create an account in the Dashboard](https://b.stripecdn.com/docs-statics-srv/assets/create-account-unified.450b8fb21ed13bcc165baa7db225e157.png)

Create a connected account
![](https://b.stripecdn.com/docs-statics-srv/assets/no-code-connect-express-link-unified.64f67a6c708c26fa52ec9b1ac1327b40.png)

Create an onboarding link

This link directs users to a form where they can provide information to connect to your platform. For example, if you have a Q&A platform, you can provide a link for writers to connect with the platform. The link is only for the single connected account you created. After your user completes the onboarding flow, you can view them in your accounts list.
![](https://b.stripecdn.com/docs-statics-srv/assets/dashboard-account-payout.94e15f1be4a11a54d18fc305433e50f4.png)

## Add funds to your balance

To add funds, go to the [Balance](https://dashboard.stripe.com/balance/overview) section in the Dashboard. Click **Add to balance** and select a balance to add to funds to.

Select **Payments balance** to add funds that are paid out to your connected accounts. You can also use funds added to the payments balance to cover future refunds and disputes or to repay your platform’s negative balance. To learn more about **Refunds and disputes balance**, see [adding funds to your Stripe balance](https://docs.stripe.com/get-started/account/add-funds.md).

### Verify your bank account 

Go through the verification process in the Dashboard when you first attempt to add funds from an unverified bank account. If your bank account is unverified, you’ll need to confirm two microdeposits from Stripe. These deposits appear in your online banking statement within 1-2 business days. You’ll see `ACCTVERIFY` as the statement description.

Stripe notifies you in the Dashboard and through email when the microdeposits have arrived in your account. To complete the verification process, click the Dashboard notification in the [Balance](https://dashboard.stripe.com/balance/overview) section, enter the two microdeposit amounts, and click **Verify account**.
![](https://b.stripecdn.com/docs-statics-srv/assets/top-ups4.85d1f2d8440f525714d0f2d20775e2d1.png)

### Add funds 

Once verified, use the [Dashboard](https://dashboard.stripe.com/balance/overview) to add funds to your account balance.

1. In the Dashboard, go to the [Balance](https://dashboard.stripe.com/balance/overview) section.
1. Click **Add to balance**, and then select **Payments balance**.
1. Enter the amount to top-up.
1. If applicable, select a payment method from the dropdown (bank debit, bank transfer, or wire transfer).
1. For bank debits, verify the amount and click **Add funds**. For bank transfers, use the Stripe banking information to initiate a bank transfer or wire transfer from your bank.
1. The resulting object is called a [top-up](https://docs.stripe.com/api/topups/object.md), which you can view in the Dashboard’s [Top-ups](https://dashboard.stripe.com/topups) section. For bank transfers, the top-up isn’t created until the funds are received.

### View funds 

View your funds in the [Top-ups](https://dashboard.stripe.com/topups) tab under the [Balance](https://dashboard.stripe.com/balance/overview) page. Each time you add funds we create a `top-up` object with a unique ID with the following format: **tu\_XXXXXX**. You can see this in the top-up’s detailed view.

### Settlement timing 

US platforms add funds through ACH debit and can take 5-6 business days to become available in your Stripe balance. You can request a review of your account for faster settlement timing by contacting [Stripe Support](https://support.stripe.com/contact).

As we learn more about your account, Stripe might be able to decrease your settlement timing automatically.

Adding funds for future refunds and disputes or to repay a negative balance can happen through [bank or wire transfers](https://docs.stripe.com/get-started/account/add-funds.md) and are available in 1-2 business days.

## Pay out to your user

After your user completes the [onboarding process](https://docs.stripe.com/connect/onboarding.md) and you’ve added funds to your balance, you can transfer some of your balance to your connected accounts. In this example, money is transferred from the Q&A platform’s balance to the individual writer.

To pay your user, go to the **Balance** section of an account’s details page and click **Add funds**. By default, any funds you transfer to a connected account accumulate in the connected account’s Stripe balance and are paid out on a daily rolling basis. You can change the payout frequency by clicking the right-most button in the **Balance** section and selecting **Edit payout schedule**.
![](https://b.stripecdn.com/docs-statics-srv/assets/send-funds.5c34a4e2e038c3a5343c7aa165eb3787.png)

Send funds to user
![](https://b.stripecdn.com/docs-statics-srv/assets/edit-payout-schedule.537eca9bac08a738533bd644e9dd2280.png)

Edit payout schedule

## See also

- [Managing connected accounts in the Dashboard](https://docs.stripe.com/connect/dashboard.md)

