対応チェーン・資産
InfraIO Pay は EVM ファースト、ステーブルコインファーストです。
対応する各チェーンは payment-service の networks.json レジストリに
設定されており、以下のマトリクスは現在 Test と Mainnet でライブの
ものを反映しています。
Mainnet
| チェーン | Chain ID | ネイティブ | USDC | USDT | 確認回数 | 最小注文額 |
|---|---|---|---|---|---|---|
| Ethereum | 1 | ETH | ✓ (ERC-20) | ✓ (ERC-20) | 12 | $5.00 |
| Base | 8453 | ETH | ✓ (ERC-20) | — | 10 | $1.00 |
| Polygon | 137 | POL | ✓ (ERC-20) | ✓ (ERC-20) | 5 | $1.00 |
| BSC | 56 | BNB | ✓ (18 桁) | ✓ (18 桁) | 5 | $1.00 |
| Arbitrum | 42161 | ETH | ✓ (ERC-20) | ✓ (ERC-20) | 5 | $1.00 |
| Optimism | 10 | ETH | ✓ (ERC-20) | ✓ (ERC-20) | 5 | $1.00 |
| ZKsync Era | 324 | ETH | — | — | 5 | $1.00 |
| Mantle | 5000 | MNT | — | — | 5 | $1.00 |
BSC の USDC + USDT は 18 桁 で、他の場所のような 6 桁ではありません。 何らかの理由でクライアント側で金額を計算する場合は、これを考慮して ください — そうでなければ SDK の金額フィールドが処理します。
「最小注文額」は payment-intent 作成時に強制される USD 下限です。
現状デフォルトは Mainnet $1.00 / Testnet $0.50 で、Ethereum は
L1 のガスが小口注文を圧迫するため $5 に引き上げられています。Admin
ops はネットワーク別に上書きできます — 下限を下回る注文は
AMOUNT_BELOW_MINIMUM (HTTP 400) で拒否され、details.floor_usd に
実際の設定値が入るので FE で表示できます。
Testnet
| チェーン | Chain ID | ネイティブ | 確認回数 | 最小注文額 |
|---|---|---|---|---|
| Ethereum Sepolia | 11155111 | ETH | 1 | $0.50 |
| Base Sepolia | 84532 | ETH | 1 | $0.50 |
| Polygon Amoy | 80002 | POL | 1 | $0.50 |
| BNB Smart Chain Testnet | 97 | tBNB | 1 | $0.50 |
| Arbitrum Sepolia | 421614 | ETH | 1 | $0.50 |
| OP Sepolia | 11155420 | ETH | 1 | $0.50 |
| Mantle Sepolia | 5003 | MNT | 1 | $0.50 |
| ZKsync Sepolia | 300 | ETH | 1 | $0.50 |
Test モードは実際のテストネット を使用しており、モックチェーン ではありません。テスト決済をトリガーするには実際のテストネット資金が 必要です — フォーセット (例: sepoliafaucet.com 、 coinbase.com/faucets ) から入手し、 チェックアウトページが生成する預金アドレスに送金してください。
API で使用する通貨コード
currency(トップレベルおよび各明細項目)は オーダーの表示通貨
— バイヤーに金額として見せる単位です。現時点で作成時に受け付けるコードは
1 つだけです:
"USD"—payment-serviceのIsSupportedCurrencyが true を返す 唯一の値。POST /v1/ordersとPOST /b2b/v1/checkout-sessions/quickのどちらも、それ以外はINVALID_INPUT(“unsupported currency”)で拒否します。 公開リストはGET /v1/supported/currenciesから取得できるので、 サーバの enum とクライアントが乖離することはありません。
バイヤーが実際に決済する オンチェーン資産(USDC, USDT, …)は
currency フィールドではありません。マーチャント設定で有効化した
チェーン × トークンの組み合わせから、バイヤーがチェックアウトページ
で選択し、PaymentIntent と webhook の payload に settlement_token
(symbol + chain)として返ってきます。ネイティブ・ガス・トークン
(ETH, BNB, POL, MNT)はチェーンのメタデータでしかなく、
有効な支払い通貨ではありません。
チェーン自体も同じ理由で作成時の API では指定しません — バイヤーが チェックアウトページで組み合わせを選択します。
確認回数と確定
上記の「確認回数」列は、チェーンウォッチャーが PaymentIntent を
SETTLED にフリップして payment.settled を発火する前に待つブロック数
です。デフォルトは各チェーンの典型的な reorg 深度で確率的確定を
得られるよう調整されています:
- Mainnet Ethereum の 12 はマージ後にほとんどの取引所が採用している値です。
- L2 はより速く決済しますが、最終的には Ethereum の確定性を継承します — チェーン 別の回数は L2 自身の reorg リスクを反映しており、L1 ではありません。
- テストネットは開発ループを高速に保つため 1 confirmation です; 開発環境の 値を Mainnet 級の安全性に外挿しないでください。
特定のチェーンでより厳格な (またはより緩い) 確認数が必要な場合、 マーチャントアカウントごとに設定可能です — 担当者にご相談ください。
マーチャントでのチェーン有効化
新しいマーチャントはデフォルトで、Testnet では緩めの、Mainnet では より狭いセットのチェーンが有効になっています。Mainnet セットは 以下にゲートされます:
- KYB 完了
- チェーンごとの Treasury ウォレットの帰属証明 (custody を証明する メッセージへの署名)
追加チェーンの有効化はマーチャントダッシュボードの Settings → Networks から行えます。
決定論的な預金アドレス
EVM の預金アドレスは チェックアウトごとに決定論的 です。プラット フォームがマーチャント・注文・intent に紐づく内部パラメータから事前に 派生します。事前作成や事前資金は不要 — PaymentIntent でアドレスが返 されるので、それをバイヤーに渡すだけです。
- 同じマーチャントの 2 つの intent は 異なる アドレスを得ます — バイヤー 間で衝突しません。
- オンチェーンのセットアップ前にチェックアウトページで送り先が 表示されるので、バイヤーは即座に送金先を確認できます。
- バイヤーがセットアップガスを払うことはありません。資金は別途スイープ ステップを経ずに、マーチャントのトレジャリーへ直接決済されます。
インテグレータへの実用上の含意:
- PaymentIntent で返される
deposit_addressは通常の EVM アドレスです — QR コードとして表示、スキャン、任意のウォレットからの送金が可能です。 特別なクライアントサポートは不要。 - intent が期限切れになる 前 にアドレスへ送金すると注文が決済されます。 期限切れ後の送金はベストエフォートで回収します — プラットフォーム側で 遅延預金を再スイープできるケースもありますが、遅延資金が安全とは 決して仮定しないでください。
- 各アドレスは intent ごとに使い切りです。バイヤーが 2 回目の試行を 必要とする場合、新しいチェックアウトセッションを発行してください — 新しい アドレスが得られます。
現在サポートしていないもの
- Tron / TRC-20。 USDT-TRC20 向けによく要望されますが、ロードマップ 上で、まだライブではありません。
- Solana / SPL。 ロードマップ上。
- Bitcoin / Lightning。 ロードマップにありません。
- L1 ネイティブステーブルコイン (USDe、FDUSD、…)。ダッシュボードから 追加リクエスト可能; 対応する基盤チェーンが有効化されている必要があります。
次に
- コンセプト → セッション — チェックアウト時に チェーン / アセットの選択がどう行われるか。
- スタート → イントロダクション — 大局的なモデル。