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

# How Money Moves

export const ThemeImage = ({img_name, alt, width, height}) => {
  return <>
            <img width={width} height={height} src={`/images/light/${img_name}`} alt={alt} className="block dark:hidden" />
            <img width={width} height={height} src={`/images/dark/${img_name}`} alt={alt} className="hidden dark:block" />
        </>;
};

> Who holds funds at each step — Bleepay never does (only the fiat partner, and only briefly).

Where funds go and who holds them at each step, by scenario:

**A. Crypto in, same token out.** Customer sends token X on-chain → **merchant's own address**. Bleepay monitors, validates, notifies; it holds nothing.

**B. Crypto in, different crypto out (FX).** Payer sends token B → **swap/exchange service** converts → payee receives token A. Bleepay quotes and orchestrates.

**C. Crypto in, fiat out (off-ramp).** Payer sends crypto → (optional swap) → **liquidation address held by the fiat partner** → partner converts crypto→fiat → fiat to the payee's bank. The fiat partner holds and moves funds across the fiat leg; Bleepay arranges and orchestrates.

**D. Voucher payment.** The payer holds their own funds in the Bleepay Wallet app. Bleepay builds the voucher transaction; the **payer signs and sends it themselves**. Funds go from the payer to the payee; Bleepay never holds them.

## Summary

| Scenario      | Who holds funds                                  |
| ------------- | ------------------------------------------------ |
| Same token    | Merchant's own address                           |
| Crypto FX     | Swap service (transiently)                       |
| Fiat off-ramp | Fiat partner's liquidation address (transiently) |
| Voucher       | Payer holds own funds; signs and sends directly  |

<ThemeImage img_name="SameToken.png" alt="Same Token" />

<ThemeImage img_name="CryptoFX.png" alt="Crypto FX" />

<ThemeImage img_name="Fiat-off-ramp.png" alt="Fiat Off-Ramp" />

<ThemeImage img_name="Voucher.png" alt="Voucher" />

## Next steps

* [Custody model](/home/architecture/custody-model) — non-custodial across both products.
* [Security](/home/architecture/security) — zero-trust design.
