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

# Payment Methods

> Localized payment methods for every user, or a single pinned rail

Daimo localizes the deposit experience to the user's country: Apple Pay and
bank transfer in the US, Interac in Canada, SEPA in Europe, Binance and USDT in
Argentina, plus self-custody wallets and deposit addresses everywhere.

Control what the user sees with `display.paymentMethods` when
[creating a session](/api-reference/create-session):

| Mode                             | Behavior                                                                |
| -------------------------------- | ----------------------------------------------------------------------- |
| `{ "mode": "auto" }`             | Localized picker: Daimo picks and orders methods per user. Recommended. |
| `{ "mode": "fixed", "type": … }` | Exactly one payment method, no picker.                                  |

<Info>
  Note that `paymentMethods` supersedes the older `display.paymentOptions`
  array. Set one or the other, never both; omit both to keep the current default
  behavior. See [migrating from paymentOptions](#migrating-from-paymentoptions).
</Info>

## Auto mode

`{ "mode": "auto" }` renders a payment method picker localized to the user's
country: which methods appear, in what order, and how they're grouped.

```bash theme={null}
curl -X POST https://api.daimo.com/v1/sessions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "destination": {
      "type": "evm",
      "address": "0xYourAddress",
      "chainId": 8453,
      "tokenAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "amountUnits": "25.00"
    },
    "display": {
      "title": "Deposit to Acme",
      "verb": "Deposit",
      "paymentMethods": { "mode": "auto" }
    }
  }'
```

### What auto renders

Featured methods by country:

| User country         | Localized methods (in order)                                 |
| -------------------- | ------------------------------------------------------------ |
| United States        | Apple Pay, Bank transfer, Cash App, Coinbase                 |
| Canada               | Bank transfer, Coinbase                                      |
| Switzerland          | Bank transfer, Mt Pelerin                                    |
| Argentina            | Bank transfer, Binance USDT / Lemon / Coinbase, USDT on Tron |
| Brazil               | Binance USDT / Coinbase, USDT on Tron                        |
| Colombia             | Bank transfer, Binance USDT / Coinbase, USDT on Tron         |
| Mexico               | Binance USDT / Coinbase, USDT on Tron                        |
| European Union       | Bank transfer, Binance USDC / Coinbase                       |
| Japan                | Bank transfer, Binance USDT, USDT on Tron                    |
| Singapore            | Bank transfer, Binance USDT / Coinbase, USDT on Tron         |
| South Korea          | Bank transfer, Binance USDT / Coinbase, USDT on Tron         |
| Philippines          | Bank transfer, Binance USDT / Coinbase, USDT on Tron         |
| Other / unrecognized | Binance USDT / Coinbase, USDT on Tron                        |

Revolut Ramp is shown only for open-amount sessions. Coinbase is available
broadly except in Japan. Runtime provider availability can also remove a method
from the featured row.

Beyond the featured methods, users can always open the full list: self-custody
wallets, deposit addresses on every supported chain, and more exchanges.

Bank rails fold into a single Bank transfer entry that expands to the rails
available in the user's country. Fiat rails appear only when enabled for your
org; see [Fiat](/guides/fiat).

## Fixed mode

`{ "mode": "fixed", "type": … }` pins the session to one payment method. The
user skips the picker and goes straight into that flow. Use it when you already
know how the user should pay: a Coinbase-only flow, a bank-transfer-only
deposit.

```bash theme={null}
curl -X POST https://api.daimo.com/v1/sessions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "destination": {
      "type": "evm",
      "address": "0xYourAddress",
      "chainId": 8453,
      "tokenAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "amountUnits": "25.00"
    },
    "display": {
      "title": "Deposit to Acme",
      "verb": "Deposit",
      "paymentMethods": { "mode": "fixed", "type": "Coinbase" }
    }
  }'
```

### Fixed types

| `type`            | Payment method                            |
| ----------------- | ----------------------------------------- |
| `ConnectedWallet` | The user's connected browser wallet       |
| `Interac`         | Interac bank transfer (Canada)            |
| `ACH`             | ACH bank transfer (US)                    |
| `SEPA`            | SEPA bank transfer (Europe)               |
| `ApplePay`        | Apple Pay (US)                            |
| `CashApp`         | Cash App (US)                             |
| `Coinbase`        | Coinbase                                  |
| `Binance`         | Binance                                   |
| `Lemon`           | Lemon (Argentina)                         |
| `BitgetExchange`  | Bitget                                    |
| `BybitExchange`   | Bybit                                     |
| `MtPelerin`       | Mt Pelerin (Switzerland)                  |
| `Tron`            | USDT deposit on Tron                      |
| `ARS`             | ARS bank transfer (Argentina)             |
| `BreB`            | Bre-B transfer (Colombia)                 |
| `JPYC`            | JPYC transfer (Japan and more)            |
| `RevolutRamp`     | Revolut crypto ramp (EEA and Switzerland) |

A fixed session accepts only matching
[`POST /paymentMethods`](/api-reference/create-payment-method) requests: a
session fixed to `Coinbase` rejects `{ "type": "fiat" }`.
Deeplink-only methods such as `RevolutRamp` navigate directly and do not call
`POST /paymentMethods`.

Fixing to a fiat type still requires that rail to be enabled for your org. See
[Fiat](/guides/fiat).

## Migrating from paymentOptions

`display.paymentOptions` keeps working for existing integrations. New
integrations should use `paymentMethods`:

| If you set…                                  | Use instead                                           |
| -------------------------------------------- | ----------------------------------------------------- |
| Nothing                                      | `paymentMethods: { mode: "auto" }`                    |
| `paymentOptions: ["Coinbase"]` (single rail) | `paymentMethods: { mode: "fixed", type: "Coinbase" }` |
| A curated multi-option array                 | `paymentMethods: { mode: "auto" }`                    |

The full legacy reference lives in
[Advanced Sessions](/advanced/sessions#payment-options-legacy).

## Reference

* [Create Session](/api-reference/create-session) - `display.paymentMethods`.
* [Fiat](/guides/fiat) - supported rails, verification, and org configuration.
* [Sessions](/guides/sessions) - lifecycle, statuses, and the credential model.
* [Advanced Sessions](/advanced/sessions#payment-options-legacy) - legacy `paymentOptions` reference.
