# Sweeps

> Automate daily settlement from a Moov wallet to a verified bank account with sweeps, including minimum balances, payout timing, and negative sweeps.

> AI agents: search and read all Moov docs with the docs MCP server at https://docs.moov.io/mcp (no API key). Setup: https://docs.moov.io/guides/developer-tools/mcp-ai/docs-mcp/index.md

A sweep moves a wallet's accrued balance to a bank account once a day, and pulls from a bank account when the wallet goes negative. Use sweeps to settle merchants automatically instead of creating cash-out transfers yourself.

**Before you start**

- A [verified bank account](/guides/sources/bank-accounts/verification/index.md) on the account. [Instant micro-deposits](/guides/sources/bank-accounts/verification/index.md#instant-micro-deposits) are the fastest way to verify.
- The wallet you want to sweep. Each wallet can have its own sweep configuration.

## Configure a sweep

**Dashboard**

Create or edit a wallet and turn on automated payouts. See [automated payouts](/guides/wallets/balance/index.md#automated-payouts).

**API**

Use the create a sweep configuration [endpoint](/api/money-movement/sweeps/create-config/index.md).

```zsh
curl -X POST "https://api.moov.io/accounts/{accountID}/sweep-configs" \
  -H 'Authorization: Bearer {token}' \
  -H "x-moov-version: v2026.07.00" \
  --data-raw '{
    "walletID": "string",
    "status": "enabled",
    "pushPaymentMethodID": "string",
    "pullPaymentMethodID":"string",
    "minimumBalance": "150.00"
  }'
```

To update an existing sweep configuration, use the `PATCH` [endpoint](/api/money-movement/sweeps/patch-config/index.md).

Set the payout payment method in `pushPaymentMethodID`: `ach-credit-same-day`, `ach-credit-standard`, `instant-bank-credit`, or `rtp-credit`. Use `instant-bank-credit` rather than `rtp-credit`, which will be deprecated.

If a same-day ACH sweep exceeds $500,000 or an instant sweep exceeds $1,000,000, Moov sends it with standard ACH instead. Sweep transfers are charged according to the account's [fee plan](/guides/billing/plan-options/index.md).

To remediate negative balances, you must configure an `ach-debit-fund` for the `pullPaymentMethodID`. Bank accounts used for push (payouts) and pull (debits) sweeps can be different.

> **Note:** If a payment method becomes disabled due to a bank account issue, payouts are paused until a new bank account is verified and configured in the sweep.

### Keep a minimum balance

Optionally, you can specify a minimum daily wallet balance to support ongoing operations or protect against refunds, disputes, and fees. If set, Moov ensures this balance is maintained when calculating sweep amounts. If not set, the default maintained balance is $0.

### Default statement descriptor

By default, Moov uses the `companyName` from your account’s ACH settings for sweep transfers. You may customize the ACH statement descriptor in the sweep configuration. The default descriptor is a 10 character ID, that is also available on each sweep for reconciliation (`swp_xxxxxx`).

## Payout timing

Funds accrue into the open sweep as you process payments. Each sweep closes at 4:00 PM ET on banking days; Moov then creates the payout transfer and opens a new sweep. Sweeps don't close on weekends or bank holidays, so that activity pays out the next banking day. To use a different close time, [contact Moov](https://support.moov.io/).

Card payment funds are typically credited to the Moov wallet by 1:00 PM ET the next banking day following the card payment. You can refer to [card brand timetables](/guides/accept-payments/cards/timing/index.md#cutoff-times-by-card-brand) for details on specific brand cut-off times to know what is included in the next day funding. [ACH processing speeds](/guides/money-movement/ach/ach-processing-speeds/index.md) can vary, but funds are generally available the morning of the second banking day after the transfer is created.

After a sweep closes at 4:00 PM ET, the bank account receives the payout by:

| `pushPaymentMethodID` type | Bank account receives funds by                      |
|----------------------------|-----------------------------------------------------|
| `instant-bank-credit`      | Within seconds of the sweep closing (RTP or FedNow) |
| `rtp-credit`               | Within seconds of the sweep closing                 |
| `ach-credit-same-day`      | 6:00 PM ET the same day                             |
| `ach-credit-standard`      | 10:00 AM ET the next banking day                    |

## Reconciliation

The `accruedAmount` represents the amount typically expected to transfer for a sweep period. In certain cases, such as when a sweep is first enabled or when a minimum balance is newly applied, the transferred amount may differ. In those one-off cases, Moov calculates the amount to transfer accordingly:

`transferAmount` = `availableBalance` at sweep close - `minimumBalance`

The [get sweep](/api/money-movement/sweeps/get/index.md) and [list sweeps](/api/money-movement/sweeps/list/index.md) endpoints include subtotals grouped by `transactionType`. These breakdowns help you:

- Reconcile sweep activity
- Track payout sources
- Report totals such as sales, fees, and refunds to end users

A `sweepID` is assigned to all debit or credit sweep transactions in a Moov wallet and can be used to access all sweep activity. For detailed reporting and reconciliation of sweeps, we recommend supplying the `sweepID` as a query parameter with the list wallet transactions `GET` [endpoint](/api/sources/wallets/list-transactions/index.md). Using the returned list, you can match the amount received in the bank account with the corresponding transactions.

```zsh
  "subtotals": [
    {
      "amount": {
        "currency": "USD",
        "valueDecimal": "50.00"
      },
      "count": 1,
      "type": "moov-fee"
    },
    {
      "amount": {
        "currency": "USD",
        "valueDecimal": "50.00"
      },
      "count": 1,
      "type": "account-funding"
    }
  ],
```

## Negative sweeps

In some cases, you can accrue a negative balance. For example, if you receive $100, but also receive a refund request for a previous payment of $200, the wallet balance would be -$100. Moov allows for a one-day grace period to account for any incoming payments. If the balance remains negative, a debit is initiated the following day.

Negative sweeps are not initiated for amounts less than $1. There is a [two-day hold](/guides/money-movement/ach/ach-processing-speeds/index.md#when-funds-are-available) on ACH debit transactions, so payouts will only resume once the debit transfer completes.

## Handle failed sweeps

When a payout can’t be completed, Moov sends a `sweep.updated` [webhook event](/guides/webhooks/webhook-events/index.md#sweepcreated-sweepupdated-wallettransactionupdated) with a `status` of `failed` and the `transferID` of the failed payout.

The transfer's `failureReason` indicates the reason for the failure and may also disable the associated bank account. A bank account becoming disabled will trigger a `bankAccount.updated` [webhook event](/guides/webhooks/webhook-events/index.md#accounts).

> **Note:** Failed sweeps aren’t automatically retried and no payouts will be made until a new bank account is added and verified.

While awaiting a resolution, the sweep continues accruing with a status of `action-required`. Once a valid payment method is configured, payouts resume on the normal sweep schedule.

