> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bluumfinance.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Funding & Transfers

> Deposit and withdrawal methods, funding sources, and transfer lifecycle.

Funding moves money between a user's bank account and their wallet. Deposits pull money in; withdrawals send it back out. Transfers of any kind should carry an `Idempotency-Key` header so a retried request never creates a duplicate.

## Methods

| Method                 | Deposit | Withdrawal | Notes                                                                              |
| ---------------------- | :-----: | :--------: | ---------------------------------------------------------------------------------- |
| `ach`                  |    ✓    |      ✓     | Automated pull/push against a linked bank account. Requires a `funding_source_id`. |
| `manual_bank_transfer` |    ✓    |      ✓     | User transfers manually using bank instructions Bluum returns.                     |
| `wire`                 |    ✓    |      ✓     | Domestic wire.                                                                     |
| `international_wire`   |    ✓    |      ✓     | Cross-border wire.                                                                 |
| `card`                 |    ✓    |      —     | Card-funded deposit.                                                               |

## Funding sources

A **funding source** (prefixed `fs_`) is a linked bank account. ACH deposits and all withdrawals reference one via `funding_source_id`. Sources are created two ways:

* **Plaid** — the user links a bank through Plaid Link. Your backend creates a link token, the frontend runs Plaid Link, and you exchange the returned `public_token` for a funding source.
* **Manual** — you submit bank details (`bank_name`, `account_holder_name`, `account_number`, and so on) directly.

The connect call is discriminated on `type` (`plaid` or `manual`) and returns the `fs_` id to store.

## Transfer lifecycle

Deposits and withdrawals share one external status vocabulary:

| Status       | Meaning                                   |
| ------------ | ----------------------------------------- |
| `pending`    | Transfer created, not yet initiated       |
| `processing` | In flight with the bank                   |
| `completed`  | Funds settled                             |
| `cancelled`  | Canceled before settlement                |
| `failed`     | Rejected (insufficient funds, bank error) |

A transfer in `pending` can be canceled.

<Frame>
  <img src="https://mintcdn.com/bluumfinance/L5Dm3BN-WAZqlyQf/images/diagrams/transfer-lifecycle.svg?fit=max&auto=format&n=L5Dm3BN-WAZqlyQf&q=85&s=ba9575a444fb77f7afed6ce9c40902a5" alt="Transfer lifecycle" width="1200" height="360" data-path="images/diagrams/transfer-lifecycle.svg" />
</Frame>

<Note>
  The end-to-end Plaid link and deposit flow is in
  [Fund a wallet](/get-started/journey/fund-wallet); disbursing funds is in
  [Withdraw funds](/get-started/journey/withdraw). Request and response schemas
  live in the [API reference](/api-reference/introduction).
</Note>
