# Crypto

Use these string values in `tenderTypes` at the merchant, location, terminal, or payment-request level. Values are case sensitive. Copy them exactly as shown.

Crypto payments in Bead Sandbox use live blockchain networks. Test payments require real assets and real network fee tokens. Keep test amounts small.

For USDC on Base and USDC on Solana, the minimum Bead payment amount is $1.00 USD. This minimum is separate from live-network fees such as ETH on Base or SOL on Solana.

#### Current crypto tenders

| Tender string       | Asset              | Network           | Direction                          | Availability                            | Minimum payment guidance                                                                        | Sandbox and Production network notes                                                                                                                              |
| ------------------- | ------------------ | ----------------- | ---------------------------------- | --------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `usdcBase`          | USDC               | Base mainnet      | Receive and auto liquidate to fiat | Available now                           | Minimum Bead payment amount is $1.00 USD                                                        | Uses live Base mainnet in Sandbox and Production. Testing requires real USDC on Base. Payer wallets also need ETH on Base for network fees.                       |
| `usdcSolana`        | USDC               | Solana mainnet    | Receive and auto liquidate to fiat | Available now                           | Minimum Bead payment amount is $1.00 USD                                                        | Uses live Solana mainnet in Sandbox and Production. Testing requires real USDC on Solana. Payer wallets also need SOL for network fees.                           |
| `bitcoin`           | BTC                | Bitcoin mainnet   | Receive and auto liquidate to fiat | Available when enabled for your program | Use small live-network BTC test amounts and confirm any program-specific limits with Bead       | Uses the live Bitcoin network in Sandbox and Production. Testing requires real BTC.                                                                               |
| `bitcoin_Lightning` | BTC over Lightning | Lightning Network | Receive and auto liquidate to fiat | Available when enabled for your program | Use small live-network Lightning test amounts and confirm any program-specific limits with Bead | Uses the live Lightning network in Sandbox and Production. Testing requires a Lightning-capable wallet funded with real BTC. String uses an underscore by design. |

#### Planned or program-specific additions

| Tender string | Asset | Network  | Direction                          | Notes                                                                                                                                              |
| ------------- | ----- | -------- | ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ethereum`    | ETH   | Ethereum | Receive and auto liquidate to fiat | Do not assume this tender is enabled unless Bead confirms it for your program. Production rollout follows certification and program configuration. |

#### Where to set tender types

| Level           | Field                                       | Behavior                                                                                                                 |
| --------------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| Merchant        | `tenderTypes` on the merchant object        | Acts as the default for locations created under the merchant                                                             |
| Location        | `tenderTypes` on the location object        | Overrides the merchant defaults for that location when provided                                                          |
| Terminal        | `tenderTypes` on the terminal object        | Overrides the location settings for that terminal when provided                                                          |
| Payment request | `tenderTypes` on the Create Payment request | Narrows the hosted payment experience for a single payment without changing the merchant, location, or terminal defaults |

If a merchant, location, or terminal level omits `tenderTypes`, it inherits from its parent. Passing an empty array clears any override at that level and reverts to the parent defaults.

For a payment request, omit `tenderTypes` to let the hosted payment page present the tenders enabled for the terminal. Send `tenderTypes` when you want a specific payment experience, such as a dedicated USDC on Base checkout button.

#### Example payloads

Create a location that inherits merchant defaults:

```json
{
  "name": "Downtown Flagship",
  "address": {
    "address1": "123 Main St",
    "city": "Springfield",
    "region": "MA",
    "country": "US",
    "postalCode": "01109"
  }
}
```

Create a location that explicitly sets crypto tenders:

```json
{
  "name": "Airport Kiosk",
  "address": {
    "address1": "987 Terminal Rd",
    "city": "Springfield",
    "region": "MA",
    "country": "US",
    "postalCode": "01109"
  },
  "tenderTypes": ["usdcBase", "usdcSolana"]
}
```

Create a terminal that narrows tenders under the same location:

```json
{
  "locationId": "loc_bfdc6a7f",
  "tenderTypes": ["usdcBase"]
}
```

Create a payment that limits the hosted payment experience to USDC on Base:

```json
{
  "terminalId": "{terminalId}",
  "merchantId": "{merchantId}",
  "requestedAmount": 1.00,
  "tenderTypes": ["usdcBase"]
}
```

Create a payment that offers both USDC Base and USDC Solana:

```json
{
  "terminalId": "{terminalId}",
  "merchantId": "{merchantId}",
  "requestedAmount": 1.00,
  "tenderTypes": ["usdcBase", "usdcSolana"]
}
```

#### Minimum payment amounts and fees

Minimum payment amounts can vary by tender.

For USDC on Base and USDC on Solana, the minimum Bead payment amount is $1.00 USD. If a payment request includes only one of these tenders, or if the hosted payment page is expected to offer either of these tenders, use `requestedAmount` of `1.00` or higher.

This minimum is separate from wallet and network fees.

| Tender              |                    Bead minimum | Fee token needed by payer wallet                  |
| ------------------- | ------------------------------: | ------------------------------------------------- |
| `usdcBase`          |                       $1.00 USD | ETH on Base                                       |
| `usdcSolana`        |                       $1.00 USD | SOL on Solana                                     |
| `bitcoin`           | Confirm program-specific limits | BTC                                               |
| `bitcoin_Lightning` | Confirm program-specific limits | BTC through the Lightning wallet and routing path |

Wallet apps, exchanges, and on-ramp providers may have their own minimum purchase amounts or fees. Those limits are separate from the Bead payment minimum.

#### Validation and behavior

| Topic                    | Guidance                                                                                                                                                                                   |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Case sensitivity         | Values are case sensitive. Use exactly the strings shown in the tables.                                                                                                                    |
| Combination rules        | You can set one or many values in the array. The platform validates that each string is recognized.                                                                                        |
| Payment-request behavior | `tenderTypes` on a Create Payment request limits the available tenders for that payment only. It does not change the merchant, location, or terminal configuration.                        |
| Settlement behavior      | Crypto receipts auto liquidate to the sponsor bank FBO account in fiat according to your program rules.                                                                                    |
| Sandbox behavior         | Sandbox crypto payments use live blockchain networks. Test payments require real assets and real network fee tokens. Live-network fees can vary by network congestion and wallet behavior. |
| USDC minimums            | `usdcBase` and `usdcSolana` require a minimum Bead payment amount of $1.00 USD.                                                                                                            |
| Backward compatibility   | New tender strings can be added without a version change. Unknown strings are rejected with a validation error.                                                                            |

#### Deprecations and naming hygiene

| Old value       | Status     | Replacement                                                                                         |
| --------------- | ---------- | --------------------------------------------------------------------------------------------------- |
| `usdC_Ethereum` | Do not use | Use `ethereum` only when ETH becomes available for your program, or use `usdcBase` for USDC on Base |
| `usdC_Polygon`  | Do not use | No current replacement in Production. Follow the current tender tables for supported USDC networks  |

If your codebase contains legacy strings, migrate them to the current values shown above.

Do not convert tender strings to snake case, lowercase, or display labels in API requests. For example, use `usdcBase`, not `usdc_base`; use `bitcoin_Lightning`, not `bitcoin_lightning`.

#### Related topics

| Topic                                                                                                                                                            | Where                               |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- |
| [Create Payment](https://developers.bead.xyz/payments/create-payment)                                                                                            | Payments section                    |
| [Test Crypto Transactions](https://developers.bead.xyz/payments/test-crypto-transactions)                                                                        | Payments section                    |
| [Crypto payments, environment and testing](https://developers.bead.xyz/faqs-and-troubleshooting/environment-and-testing/crypto-payments-environment-and-testing) | FAQs & Troubleshooting              |
| [Compatible Crypto Wallets](https://developers.bead.xyz/reference-guide/operational-guides/compatible-crypto-wallets)                                            | Reference Guide, Operational Guides |
| [Environments and Base URLs](https://developers.bead.xyz/reference-guide/core-concepts/environments-and-base-urls)                                               | Reference Guide                     |
| [Location Management](https://developers.bead.xyz/entity-management/location-management)                                                                         | Entity Management section           |
| [Payment Webhooks and Event Reference](https://developers.bead.xyz/payments/payment-webhooks)                                                                    | Reference Guide                     |
| [Download OpenAPI and Postman](https://developers.bead.xyz/reference-guide/endpoint-index/download-openapi)                                                      | Reference Guide                     |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.bead.xyz/reference-guide/enumerations-and-schemas/tender-types/crypto.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
