# ACH transfers

> Pull and push money between bank accounts and Moov wallets with ACH. Pick the right ACH payment method, then find cutoffs, statuses, returns, and cancellations.

> 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

ACH moves money between US bank accounts in batches: debits pull funds into Moov and credits push funds out. It's the lowest-cost rail for bank payments, with funds arriving the same or next banking day.

Moov doesn't move money directly between external bank accounts. Funds always pass through Moov, so a bank-to-bank transfer is an ACH debit into Moov followed by an ACH credit out. Moov can do both legs in a single transfer when the source and destination are bank accounts linked to Moov accounts.

![ACH processing flow diagram](./images/moov-ach-overview-light.png)

## Before you start

- **Capabilities**: the destination needs `collect-funds.ach` to collect with ACH debits, and the source needs `send-funds.ach` to send ACH credits. See [payment methods and capabilities](/guides/money-movement/payment-methods/index.md#payment-methods-and-capabilities).
- **Bank accounts**: [link a bank account](/guides/sources/bank-accounts/index.md). To debit it, first [verify it](/guides/sources/bank-accounts/verification/index.md) with instant micro-deposits or a verification partner.
- **Eligibility**: not every use case is eligible for bank-to-bank ACH transfers. Ask Moov if you're unsure.

## Choose an ACH payment method

| Payment method        | Direction | Use it to                                                         | Transfer shape      |
|-----------------------|-----------|-------------------------------------------------------------------|---------------------|
| `ach-debit-fund`      | Money in  | Fund your own wallet, for example before sending payouts          | Bank account → Moov |
| `ach-debit-collect`   | Money in  | Collect a payment from a customer, such as a bill or subscription | Bank account → Moov |
| `ach-credit-same-day` | Money out | Pay out to a bank account the same banking day                    | Moov → bank account |
| `ach-credit-standard` | Money out | Pay out to a bank account the next banking day                    | Moov → bank account |

Moov processes ACH debits same day whenever a window is available. Debited funds are held for two banking days before they're available, unless the account is approved for faster ACH. Limits per payment method are in [transfer limits](/guides/money-movement/payment-methods/index.md#transfer-limits), and you can pass ACH [payout fees](/guides/send-payments/payout-fees/index.md) to the recipient with `feePaidBy`.

## Find ACH answers

| Question                                                                                             | Go to                                                        |
|------------------------------------------------------------------------------------------------------|--------------------------------------------------------------|
| What are the cutoff times, and when are funds available?                                             | [ACH processing speed](/guides/ach/ach-processing-speeds/index.md)   |
| What do the `achDetails` statuses mean? How do I set the statement descriptor, SEC code, or addenda? | [ACH details, SEC codes & addenda](/guides/ach/ach-details/index.md) |
| What happens when a payment is returned, and what does each return code mean?                        | [ACH returns](/guides/ach/returns/index.md)                          |
| How do I cancel an ACH transfer?                                                                     | [Cancel an ACH transfer](/guides/ach/cancellations/index.md)         |
| How do I fix a bank account errored by an R29 return?                                                | [Self-serve R29 returns](/guides/ach/r29/index.md)                   |

> **Tip:** The open source [moov-io/ach](https://github.com/moov-io/ach) library reads, writes, and validates Nacha ACH files.

