For the complete documentation index, see llms.txt. This page is also available as Markdown.

Supported Tokens and Chains

Live supported matrix

The tables on this page are a snapshot. The always-current, machine-readable list is served by the API itself. Use it to populate chain/token pickers instead of hardcoding:

curl 'https://intentapiv4.rozo.ai/functions/v1/payment-api/payments/supported'
# optional filter: ?provider=rozo | ?provider=near

Each entry describes one (chain, token) leg in Rozo's own naming:

{
  "chainId": "42161",
  "chainName": "Arbitrum",
  "chainAliases": ["arb", "arbitrum"],
  "addressFormat": "evm",
  "tokenSymbol": "USDC",
  "providers": ["rozo", "near"],
  "destinationProviders": ["rozo"]
}
  • providers: rails that accept this leg as a pay-in source.

  • destinationProviders: rails that can pay out to it. They differ for near: it accepts pay-ins from many chains but only settles on Base, Solana and Stellar.

  • destinationMinimumFee: present only when a per-destination minimum fee applies.

  • The top-level fees object is the rate card per rail (see Get Fees).

New chains and tokens appear here automatically as they are enabled. Optimism (10) and World Chain (480) are not offered: no payout rail exists for them, so orders to them are rejected at creation. See Routing provider for how to select a rail.

Note on Chain IDs for Solana and Stellar: For non-EVM chains, the API accepts either the numeric chain ID or the lowercase chain name string:

  • Solana: 900 or "solana"

  • Stellar: 1500 or "stellar"

Both formats are equivalent and interchangeable in all API requests.

Native coins (beta, invite only)

Beta feature. Stablecoins (USDC, USDT, EURC) are enabled for every merchant. Native coins are available only to merchants invited by Rozo. Other merchants can request an invitation in partners.rozo.ai.

Invited merchants can accept these native coins. The buyer pays in the native coin and the merchant still settles in USDC.

Coin
Chain
Chain ID
Minimum pay-in
Status

ETH

Ethereum

1

1.00 USD

Beta

ETH

Base

8453

0.10 USD

Beta

ETH

Arbitrum

42161

0.10 USD

Beta

BNB

BNB Chain

56

0.10 USD

Beta

SOL

Solana

900

1.00 USD

Beta

POL

Polygon

137

0.10 USD

Beta

  • The minimum is the USD value of the order, priced from the coin at quote time. An order below it is rejected with amountTooLow (Minimum for <COIN> payins on chain <id> is $<min>). Ethereum and Solana have a higher minimum because each pay-in costs more in network fees on those chains.

  • Native coins are off by default and invite only. To ask for an invitation, open partners.rozo.ai → Settings → Supported tokens and click Request access. Once Rozo invites the account, the merchant switches each coin on or off on the same page.

  • Pay-in only. The quoted amount is locked for 60 minutes and includes a conversion spread.

  • During the beta, per-order and daily limits apply. An order above the limit returns amountTooHigh; once the daily limit is reached new native orders return nativePayinPaused. Stablecoin orders are not affected.

  • An order with a native source for a merchant that has not enabled that coin is rejected with invalidRequest (Native <COIN> payin on chain <id> is not enabled for this app), including dryruns.

  • In GET /payments/supported, native entries carry "optIn": true. Pass your X-API-Key or ?appId=<your appId> to list only the native coins your account can use:

How native-coin conversion works

Nothing changes on the partner side. The flow for a native-coin order:

  1. The buyer sends the native coin to the order's deposit address. It arrives at the Rozo hub on the same chain.

  2. Rozo converts it to USDC on that chain. ETH and SOL are converted through NEAR Intents. BNB on BNB Chain and POL on Polygon are converted through Rozo's own bridge and a DEX.

  3. The partner is settled in USDC exactly as for a stablecoin order: same payout, same webhooks, same settlement time.

The partner never holds the volatile coin, and no extra integration work or action is needed. The conversion spread is already in the quoted amount the buyer pays.

Gas drop add-on (beta)

Beta feature. Gas drop is enabled per account on request. Other accounts get "available": false with "reason": "app_not_allowed" and an otherwise unchanged response. To request it, see Contact us.

The payer can add a small amount of the destination chain's gas coin to an order that pays out USDC, so the receiving wallet can move its USDC right away. For example, an order paying out USDC on Arbitrum can also deliver a little ETH on Arbitrum.

Gas drop is separate from native-coin pay-ins. It is offered only when all of these hold:

  • The order pays in USDC or USDT and pays out USDC.

  • The order type is exactIn or exactOut.

  • The order is routed by Rozo (provider is rozo).

It is not available on native-coin pay-ins (ETH, BNB, SOL, POL) or on orders routed through NEAR Intents. Those return "available": false with "reason": "token" or "reason": "route".

Request it with options.gasDrop on a dryrun or a create:

Setting
Value

Minimum

0.10 USD (Ethereum: 1.00 USD)

Maximum

10.00 USD

Step

0.10 USD

Spread

5% of the gas drop amount

Gas coin by destination chain

ETH on Ethereum, Base and Arbitrum; BNB on BNB Chain; POL on Polygon; SOL on Solana; XLM on Stellar; HYPE on HyperEVM

  • amountUsd is what the payer gives up for the gas coin. On exactIn it comes out of the USDC payout; on exactOut it is added to the pay-in.

  • An amount outside the range or off the 0.10 USD step returns "available": false with "reason": "amount_out_of_range".

  • At quote time a refused gas drop only removes the add-on: the quote is returned without it and the rest is unchanged.

  • At order creation the gas coin is reserved for the order. If that reservation fails, for example because the gas inventory ran out after the quote, the API returns HTTP 409 with gasDropUnavailable and the order is not created. Request a new quote; it will show whether the gas drop is still available.

  • The response gasDrop block shows amountNative, chargedUsd, feeUsd (the spread) and principalUsd. Example for 1 USD to Arbitrum: chargedUsd 1.00, feeUsd 0.05, principalUsd 0.95, delivered as ETH at the quoted price.

  • The gas coin is sent after the USDC payout completes.

CCTP V2 Domain Aliases

If you're routing via Circle's CCTP V2, you can pass the CCTP domain using the cctp:<N> prefix and the API will resolve it to the canonical Rozo chain ID before validation.

Alias
Resolves to chainId
Chain

cctp:0

1

Ethereum

cctp:3

42161

Arbitrum

cctp:5

900

Solana

cctp:6

8453

Base

cctp:7

137

Polygon

cctp:27

1500

Stellar

Rules:

  • The cctp: prefix is required. A bare integer (e.g. 27) is treated as a literal chainId and will return invalidChainId.

  • Matching is case-insensitive and whitespace-trimmed (cctp:27, CCTP:27, Cctp:27 are all equivalent).

  • cctp:25 is not aliased: domain 25 belongs to Codex, which is not currently supported.

  • cctp:2 (Optimism) is not aliased: Optimism is not offered.

Pay In Tokens and Chains

USDC Support

Chain ID
Chain Name
USDC Token Address
Decimals

1

Ethereum

0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48

6

42161

Arbitrum

0xaf88d065e77c8cc2239327c5edb3a432268e5831

6

8453

Base

0x833589fcd6edb6e08f4c7c32d4f71b54bda02913

6

56

BSC

0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d

18

137

Polygon

0x3c499c542cef5e3811e1192ce70d8cc03d5c3359

6

999

HyperEVM

0xb88339cb7199b77e23db6e890353e22632ba630f

6

900 or solana

Solana

EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v

6

1500 or stellar

Stellar

USDC:GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN

7

USDT Support

Chain ID
Chain Name
USDT Token Address
Decimals

1

Ethereum

0xdac17f958d2ee523a2206206994597c13d831ec7

6

42161

Arbitrum

0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9

6

56

BSC

0x55d398326f99059ff775485246999027b3197955

18

137

Polygon

0xc2132d05d31c914a87c6611c10748aeb04b58e8f

6

900 or solana

Solana

Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB

6

USDT on Stellar (asset code USDT0) is also accepted as a pay in, in beta. See USDT on Stellar (beta).

Pay Out Tokens and Chains

USDC Support

Chain ID
Chain Name
USDC Token Address
Decimals

1

Ethereum

0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48

6

42161

Arbitrum

0xaf88d065e77c8cc2239327c5edb3a432268e5831

6

8453

Base

0x833589fcd6edb6e08f4c7c32d4f71b54bda02913

6

56

BSC

0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d

18

137

Polygon

0x3c499c542cef5e3811e1192ce70d8cc03d5c3359

6

999

HyperEVM

0xb88339cb7199b77e23db6e890353e22632ba630f

6

900 or solana

Solana

EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v

6

1500 or stellar

Stellar

USDC:GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN

7

USDT payouts to the chains above are in private beta and are not offered through the public API yet. They are available only inside Rozo's own apps. Orders with a USDT destination from other accounts are rejected at creation. To request access for your integration, see Contact us.

USDT on Stellar (USDT0) is the exception: any integration can receive it, in beta. See USDT on Stellar (beta) below.

USDT on Stellar (beta)

Beta feature. USDT routes are live in beta. Supported pairs, fees and limits may change while the beta runs, and USDT payouts to other chains are private beta (see above).

Rozo bridges Tether's USDT on Stellar to and from USDC and USDT on other chains, so a Stellar wallet can receive USDT that was paid in USDC on Base, or turn its USDT into USDC on Base, Solana or Stellar.

Chain ID
Chain Name
USDT Asset
Decimals

1500 or stellar

Stellar

USDT0:GATISXX6BZ6NC7IKQBY37CJD4SOZL3CYZJWXEDG6JVIY4WBS6KXJHN6Q

7

On Stellar this asset uses the asset code USDT0, so the API token symbol is "tokenSymbol": "USDT0" with chain 1500, on either side of the order. On every other chain use USDT. A Stellar receiver must hold a trustline to the asset above.

Pay in, receive USDT on Stellar

Pay in chain
Chain ID
Pay in tokens

Stellar

1500

USDC

Base

8453

USDC

Solana

900

USDC, USDT

Ethereum

1

USDC, USDT

BSC

56

USDC, USDT

Polygon

137

USDC, USDT

Arbitrum

42161

USDC, USDT

Pay in USDT on Stellar, receive

Payout chain
Chain ID
Payout token

Stellar

1500

USDC

Base

8453

USDC

Solana

900

USDC

USDT on Stellar to USDT on another chain is part of the USDT payout beta above. Any other pair with Stellar USDT on one side, for example Stellar USDT to USDC on Ethereum or BSC, is rejected with unsupportedRoute.

Fees and limits

  • Fee: 0.2% of the pay in amount, with a minimum of 0.10 USD per order. The fee is charged on the source side, so paying 100 USDC returns 99.80 USDT, and paying 10 USDC returns 9.90 USDT. Check the exact amount with a dryrun quote before you create the order.

  • Limit: up to 1,000 USD per order during the beta. Larger orders are rejected with amountTooHigh. Split larger amounts into several orders.

  • Availability depends on Rozo's liquidity for the payout leg. If a route is temporarily short, the order is rejected at creation with INSUFFICIENT_LIQUIDITY and no funds are taken.

  • Fees and limits may change during the beta. A quote keeps the fee it was issued with.

EURC PayIn & PayOut

(Base and Stellar network)

Chain ID
Chain Name
EURC Token Address
Decimals

8453

Base

0x60a3e35cc302bfa44cb288bc5a4f316fdb1adb42

6

1500 or stellar

Stellar

EURC:GDHU6WRG4IEQXM5NZ4BMPKOXHW76MZM4Y2IEMFDVXBSDP6SJY4ITNPP2

7

Last updated