- Published on
決済 API & 開発者フィンテック 2026 — Stripe / Adyen / Toss Payments / PortOne / Square / Mollie / Lago 徹底比較
- Authors

- Name
- Youngju Kim
- @fjvbn20031
「決済はソリューションではなくインフラだ。インフラは 9 年に 1 度だけ変わる」— Patrick Collison, Stripe 共同創業者, Sessions 2024 基調講演
2026 年 5 月時点で、決済 API エコシステムは単一のグローバル標準ではなく、グローバル(Stripe)+ 地域王者(Adyen, Toss Payments, Razorpay, GMO PG)+ 課金専業(Lago, Orb, Metronome)+ ビルダーツール(Bolt, Tier) の 4 つの陣営に固まりました。米国・韓国・日本を同時に展開するには最低 3 つの決済ゲートウェイが必要で、さらに従量課金(consumption pricing)が加わると課金エンジンが別レイヤとして入ってきます。
本記事では 18 個の決済プロダクトについて、ポジション・API 表面積・価格・限界、そして「誰が何を選ぶべきか」を一気に整理します。韓国開発者がグローバル展開する時、日本開発者が韓国進出する時、B2B SaaS が従量課金を導入する時、いずれにも参照できるよう実コードパターンも含めました。
1. 2026 年の決済 API 地図 — Stripe / 地域王者 / 課金 / ビルダーの 4 陣営
決済 API は「カードを 1 回切るだけ」ではありません。2026 年に 1 つの決済プロダクトが扱う表面積は次のとおりです。
| レイヤ | 役割 | 代表プロダクト |
|---|---|---|
| Acquirer / PSP | カードネットワーク・銀行と直接接続、トランザクション処理 | Stripe, Adyen, Worldpay, Fiserv |
| Aggregator | 複数 PSP を 1 つの API でまとめる | Toss Payments, PortOne, Razorpay, KOMOJU |
| Orchestration | 複数 PSP 間のルーティング・リトライ・フェイルオーバ | Spreedly, Primer, Gr4vy |
| Billing / Invoicing | サブスクリプション、メータリング、請求書生成 | Stripe Billing, Lago, Orb, Metronome, Maxio |
| Tax / Compliance | 税金計算・申告、KYC | Stripe Tax, Avalara, TaxJar, Sovos |
| Identity / KYC | 本人確認、事業者登録 | Stripe Identity, Persona, Onfido, Sumsub |
| Issuing | カード・口座発行 | Stripe Issuing, Marqeta, Adyen Issuing |
2026 年の市場地形は次の 4 陣営に集約されます。
- グローバル標準(Stripe): 売上 1 位、API 標準の事実上の定義者、米国・欧州・日本・シンガポール・香港など 47 か国対応。Atlas + Tax + Identity + Issuing により「会社をゼロから立ち上げられる」プラットフォームへ拡張。
- 地域王者: 韓国は Toss Payments + PortOne、欧州エンタープライズは Adyen、インドは Razorpay、日本は GMO PG + PAY.JP、東南アジアは Xendit。現地カードネットワーク接続・ウォレット連携・精算精度が強み。
- 課金専業: Stripe Billing が標準だが、従量課金が複雑化するにつれて Lago(OSS)、Orb、Metronome、OpenMeter といった課金エンジンが独立市場を形成。PSP と分離するのが要点。
- ビルダーツール: Bolt(ワンクリックチェックアウト)、Tier(従量課金 SDK)など決済の上に乗る薄いレイヤが新興。
選択の最初の分岐点は常に 「どの市場を狙うか」 です。グローバル英語圏 SaaS なら Stripe がほぼ自動選択、韓国売上が 30% 以上なら Toss Payments や PortOne を必ず併用、日本は別途ゲートウェイが必要です。
2. Stripe — Atlas + Tax + Identity + Issuing への拡張
Stripe は 2010 年に「7 行のコードで決済」という有名な API でスタートし、2026 年現在は 単なる PSP を超えて会社運営全体を扱うプラットフォーム に成長しました。2024 年の IPO 噂は立ち消えとなり(非上場を維持)、2025 年の評価額はおよそ 950 億ドルまで回復しています。
主要プロダクトラインアップ:
- Payments: カード・ウォレット・銀行振込など 100 種類以上の決済手段、47 か国、
2.9% + $0.30(米国基準) - Billing: サブスクリプション、従量課金、請求書生成。2025 年に
usage_recordsAPI がMeter Eventsとして再設計 - Tax: 50 か国超の自動税計算・申告、2025 年に韓国・日本が追加
- Atlas: 米国法人設立(デラウェア C-corp)+ EIN + 銀行口座 + 株式発行を 1 画面で。
$500 - Identity: 30 か国の KYC/KYB、身分証 + セルフィー検証、
$1.50/チェック - Issuing: Visa/Mastercard カード発行(仮想・物理)、Brex・Ramp はこの上に構築
- Capital: 売上ベースの融資、AI による与信
- Climate: 売上の一部を炭素除去に自動寄付
- Connect: マーケットプレイス精算(eBay、Shopify、Lyft が利用)
基本的な決済フロー(PaymentIntents API、2026 年標準):
import Stripe from 'stripe'
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!, {
apiVersion: '2026-01-15',
})
// 1) サーバで PaymentIntent を生成
const intent = await stripe.paymentIntents.create({
amount: 1999, // $19.99 (セント単位)
currency: 'usd',
automatic_payment_methods: { enabled: true }, // カード + ウォレットを自動表示
metadata: { order_id: 'ord_abc123' },
})
// 2) クライアントは client_secret で決済 UI をマウント
// <Elements options={ clientSecret: intent.client_secret }>
// <PaymentElement />
// </Elements>
// 3) 決済完了後のウェブフック処理
export async function POST(req: Request) {
const sig = req.headers.get('stripe-signature')!
const body = await req.text()
const event = stripe.webhooks.constructEvent(
body,
sig,
process.env.STRIPE_WEBHOOK_SECRET!
)
if (event.type === 'payment_intent.succeeded') {
await fulfillOrder(event.data.object)
}
return new Response('ok')
}
2026 年に注目すべき変化 3 点:
- Stripe Tax が韓国・日本を追加 — 2025 年 11 月から韓国 VAT 自動申告、日本消費税自動計算に対応。グローバル SaaS が東アジア税務を外部委託なしで処理可能に。
- Stripe Issuing が EU・UK で正式ローンチ — Brex・Ramp 的な経費管理スタートアップを欧州で構築可能に。
- Agent Commerce Protocol (ACP) ベータ — AI エージェントがユーザに代わって決済する場合の新しい認証フロー。Anthropic、OpenAI と共同設計。
Stripe の弱点: 韓国国内カードの接続が弱い(PayPal 経由か Toss 併用が必要)、日本でも PayPay・LINE Pay 非対応、エンタープライズ規模では Adyen のほうが安価な場合が多い。
3. Adyen — 欧州エンタープライズの標準
Adyen は 2006 年にオランダで創業した PSP で、グローバルエンタープライズ市場で Stripe の最大の競合です。Uber、Spotify、McDonald's、eBay、Microsoft、Booking.com がすべて Adyen で決済を処理しています。
Adyen の差別化点:
- 単一プラットフォームモデル: カードアクワイアリング(acquiring)、処理(processing)、精算(settlement)、リスク管理を 1 社で完結。Stripe は一部を外部委託
- 安いインターチェンジ++ 価格: 取引額が年間
$10Mを超えるなら Stripe より 10–30% 安い - オンライン + オフライン統合: 店舗 POS とオンライン決済を同じコンソールで管理 — McDonald's グローバル導入の決め手
- 地域決済手段の広いカバレッジ: iDEAL(オランダ)、Bancontact(ベルギー)、MB Way(ポルトガル)、Klarna(BNPL)、韓国カードの一部対応
API は RESTful ですが Stripe より学習曲線が急です。標準フローは paymentMethods.json → payments.json → payments/details.json の 3 段階で、すべてのリクエストが JSON、すべてのレスポンスに pspReference というトランザクション ID が付きます。
// Adyen Checkout API の基本フロー
import { Client, CheckoutAPI } from '@adyen/api-library'
const client = new Client({ apiKey: process.env.ADYEN_API_KEY!, environment: 'TEST' })
const checkout = new CheckoutAPI(client)
// 1) 利用可能な決済手段を取得
const methods = await checkout.PaymentsApi.paymentMethods({
merchantAccount: 'YourMerchantAccount',
amount: { value: 1999, currency: 'USD' },
countryCode: 'US',
shopperLocale: 'en-US',
})
// 2) 決済リクエスト
const result = await checkout.PaymentsApi.payments({
merchantAccount: 'YourMerchantAccount',
amount: { value: 1999, currency: 'USD' },
reference: 'order-abc-123',
paymentMethod: { type: 'scheme', encryptedCardNumber: '...' },
returnUrl: 'https://your-site.com/checkout/result',
})
// 3) 3DS チャレンジが必要なら result.action を処理
if (result.resultCode === 'IdentifyShopper') {
// クライアントで 3DS チャレンジ実行
}
Adyen は 月間取引が 1 万件以上、複数の国を同時運用、店舗とオンラインを統合 したい場合は Stripe より優れた選択です。逆に取引量が小さいか、迅速なセルフサービス登録が必要なら Stripe が圧倒的に有利。
4. Toss Payments — 韓国の標準
Toss(Viva Republica)が 2020 年に LG U+ の決済事業を買収して設立した Toss Payments は、2026 年現在 韓国 SaaS・EC のデフォルト です。新興スタートアップの 80% 以上が最初に Toss Payments を検討します。
強み:
- 韓国における開発者体験は圧倒的: ハングルドキュメント、コード例、Postman コレクション、さらに KakaoTalk チャンネルでのサポート
- カカオペイ・ネイバーペイ・サムスンペイ・トスペイを 1 つの SDK で — 別契約なしでトグル切替
- 無料テスト環境: 実カードなしで全シナリオを再現可能
- 手数料: 通常カード 2.5–3.3%、ウォレット 2.2–3.0%、PayCo・カカオペイ +0.1–0.5%
- 入金が早い: D+1(営業日翌日)、一部プロモーションでは D+0
Toss Payments JavaScript SDK の基本フロー:
// クライアントサイド
import { loadTossPayments } from '@tosspayments/payment-sdk'
const tossPayments = await loadTossPayments(
'live_ck_xxx' // クライアントキー
)
await tossPayments.requestPayment('カード', {
amount: 50000,
orderId: 'order_abc_123',
orderName: 'プレミアム購読 1 か月',
customerName: 'ホン・ギルドン',
successUrl: 'https://example.com/success',
failUrl: 'https://example.com/fail',
})
// サーバサイド — successUrl で決済承認
const response = await fetch('https://api.tosspayments.com/v1/payments/confirm', {
method: 'POST',
headers: {
Authorization: `Basic ${btoa(process.env.TOSS_SECRET_KEY + ':')}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
paymentKey,
orderId,
amount: 50000,
}),
})
ウェブフック署名検証は 2024 年から必須化され、TossPayments-Signature ヘッダを signing_key で HMAC-SHA256 検証します。冪等性のため、すべての決済承認リクエストに Idempotency-Key ヘッダを付けることが推奨されます。
Toss Payments の弱点: グローバルカード決済はサポートしていますが、為替変換と精算には別途手続きが必要で、グローバル中心の売上構成なら Stripe との併用が必要。また一部業界(アダルト、ギャンブル、一部フィンテック)は加盟店審査が厳しいです。
5. PortOne(旧 Iamport)— 韓国の決済アグリゲータ
PortOne(旧 Iamport、2024 年リブランド)は韓国のあらゆる PSP を 1 つの SDK にまとめる 決済アグリゲータ です。1 回の統合でトス、KCP、イニシス、ダナル、カカオペイ、ネイバーペイ、PayCo、スマイルペイ、クレジットカード、仮想口座、キャリア決済、海外決済(Stripe / PayPal パススルー)まですべて利用可能。
PortOne を使う理由:
- PSP を変えてもコードは同じ: トス → KCP 移行は環境変数 1 行
- マルチ PSP ルーティング: PSP A がダウンしたら PSP B に自動フォールバック
- 統合ダッシュボード: 複数 PSP の取引を 1 画面で照会・返金
- 手数料: PortOne 独自手数料は取引あたり約 30–50 ウォン、PSP 手数料は別途
- 2024 年 V2 API: TypeScript ファーストの SDK、自動生成 OpenAPI 型
// PortOne V2 SDK の例
import * as PortOne from '@portone/browser-sdk/v2'
const response = await PortOne.requestPayment({
storeId: 'store-xxx',
channelKey: 'channel-xxx', // チャネルが PSP を決定 (トス/KCP/イニシス等)
paymentId: `payment-${crypto.randomUUID()}`,
orderName: 'プレミアム購読',
totalAmount: 50000,
currency: 'CURRENCY_KRW',
payMethod: 'CARD',
})
// サーバで決済検証
const verification = await fetch(
`https://api.portone.io/payments/${response.paymentId}`,
{ headers: { Authorization: `PortOne ${process.env.PORTONE_API_SECRET}` } }
)
PortOne の最大の価値は 複数 PSP の交渉力 です。取引量が増えれば PSP A と交渉して手数料を下げ、一部取引をそちらにルーティングできます。逆に PSP 1 社しか使わないなら PortOne レイヤはむしろコスト増になります。
2026 年、PortOne は日本の KOMOJU、インドネシアの Xendit との統合を追加し、東南アジア展開 SaaS のデフォルトとして地位を固めつつあります。
6. KCP / イニシス / ダナル — 韓国クラシック PSP
トス以前の韓国決済市場の 3 強です。
- KCP(韓国サイバー決済): 1999 年設立、NHN の子会社。カード・口座振替・キャリア決済・商品券など全領域対応。大企業導入率が高い(新世界、11 番街、Coupang の一部)
- イニシス(KG イニシス): 1998 年設立、KG グループ。最古参 PSP の 1 つ、保守的業界(公共、教育、金融)で強い
- ダナル: 1997 年設立、キャリア決済 1 位。本人認証サービスでも有名
API 表面は 2010 年代初期の設計が多く残っており、キー発行・暗号化・コールバック URL 設定が複雑です。JSP/PHP の例が依然として正規ドキュメントで、モダンな TypeScript SDK は乏しい。
# イニシス決済結果コールバック検証の概念例
# 加盟店は P_MID, P_OID, P_AMT, P_TID 等のフィールドを KCP と共有キーで HMAC 検証
# ほぼすべての韓国クラシック PSP には EUC-KR エンコーディングの名残があるので UTF-8 変換に注意
KCP / イニシス / ダナルを直接統合する場合:
- 新規プロジェクトなら PortOne 経由の間接統合がほぼ常に有利
- 直接統合は大企業加盟店のポリシー上必要な場合(メインネットキーの直接保持要求)に限定
- 返金・部分キャンセル API が PSP ごとに微妙に異なるため、抽象化レイヤが必須
2026 年、この 3 PSP は RESTful なモダン API へリニューアル中ですが、マイグレーション速度が遅く、PortOne のようなアグリゲータの価値は依然として大きいです。
7. Square + Cash App — Block エコシステム
Square は 2009 年に Jack Dorsey が作ったモバイルカードリーダーから始まり、2021 年に親会社を Block にリブランドして 決済 + 送金(Cash App)+ ビットコイン 統合フィンテックグループになりました。
Square(B2B 決済):
- 物理端末(POS)が強み: 米国・カナダ・英国・豪州・日本の飲食店・小売店 80 万店で利用
- Square Online: 無料の EC ストアビルダー(Shopify 対抗)
- Square Reader:
$10–49でカードリーダーを販売、処理手数料で収益化 - API: REST + GraphQL、OAuth 2.0、Subscriptions/Catalog/Inventory/Orders を統合
- 手数料: 対面 2.6% + 10 セント、オンライン 2.9% + 30 セント
Cash App(P2P 送金 + B2C):
- 米国で 5,500 万アクティブユーザ
- Cash App Pay: チェックアウトで QR コードをスマホでスキャンして決済(Venmo に類似)
- ビットコインの売買・送金が可能
- B2B には直接公開されず、Square 加盟店がオプションとして有効化
// Square Payments API の例
import { Client, Environment } from 'square'
const client = new Client({
accessToken: process.env.SQUARE_ACCESS_TOKEN,
environment: Environment.Production,
})
const response = await client.paymentsApi.createPayment({
sourceId: 'cnon:card-nonce-from-web-sdk',
idempotencyKey: crypto.randomUUID(),
amountMoney: { amount: 1999n, currency: 'USD' },
locationId: 'L1234567890',
})
Square は 物理店舗があるビジネス に強く、Stripe は ソフトウェア企業 に強い。直接競合する領域は狭く、併用するケース(店舗は Square、Web 決済は Stripe)もよくあります。
8. Mollie / Checkout.com / Braintree — 欧州 + PayPal 系
Mollie(オランダ、2004 年設立):
- 欧州 SMB 市場の王者、35 か国対応
- iDEAL、Bancontact、SOFORT、Klarna、Apple Pay、Google Pay など欧州決済手段が豊富
- 手数料が明瞭で安い(iDEAL は
€0.29/取引) - API は RESTful で非常にクリーン(Stripe に次ぐ開発者体験との評価)
- 2024 年に Adyen 買収説があったが独立を維持
Checkout.com(英国、2012 年設立):
- エンタープライズ集中、Klarna・Wise・Sony の決済処理
- インターチェンジ++ 価格モデル、取引量が大きいと非常に安い
- 150 通貨、グローバルアクワイアリングライセンス保有
- 2022 年評価額
$40Bでピーク、2024 年に$11Bに再評価 - API 表面は豊富だがセルフサービス登録は不可(営業コンタクト必須)
Braintree(PayPal 子会社、2007 年設立 → 2013 年 PayPal が買収):
- PayPal・Venmo・カードを統合 SDK で提供
- Drop-in UI で迅速な統合が可能
- 米国 SaaS・EC で PayPal ユーザを取り込みたい時の標準選択
- 手数料: 2.59% + 49 セント(米国カード)
- 欠点: API が 2010 年代初期の設計、GraphQL はベータのまま停滞
// Mollie Payments の例 — 最もクリーンな欧州 API
import { createMollieClient } from '@mollie/api-client'
const mollie = createMollieClient({ apiKey: process.env.MOLLIE_API_KEY! })
const payment = await mollie.payments.create({
amount: { currency: 'EUR', value: '19.99' },
description: 'プレミアム購読',
redirectUrl: 'https://example.com/return',
webhookUrl: 'https://example.com/webhook',
metadata: { orderId: 'order-abc-123' },
})
// ユーザを payment.getCheckoutUrl() にリダイレクト
3 プロダクトのポジション: Mollie は欧州 SMB、Checkout.com は欧州・中東エンタープライズ、Braintree は米国・PayPal 親和市場。韓国でメインに使うケースはほぼなく、グローバル決済オプションの 1 つとして有効化する場合が大半です。
9. Razorpay — インドの決済標準
Razorpay は 2014 年に IIT 卒業生が創業したインド版 Stripe です。2026 年現在、インド決済市場の約 40% を占有。
特徴:
- UPI(Unified Payments Interface) がインドのデフォルト: QR スキャンで即時送金、手数料ほぼゼロ
- GST(インド付加価値税)の自動処理: 請求書に GST を自動付与
- Razorpay Capital: 売上ベースの融資、インドスタートアップの主要資金調達経路の 1 つ
- 手数料: UPI 無料(
< ₹2,000)、カード 2%、国際カード 3% - API は Stripe に非常に類似: 創業者が公にモデルにしたと認めている
import Razorpay from 'razorpay'
const razorpay = new Razorpay({
key_id: process.env.RAZORPAY_KEY_ID!,
key_secret: process.env.RAZORPAY_KEY_SECRET!,
})
// 注文作成
const order = await razorpay.orders.create({
amount: 50000, // 500 INR (paise 単位)
currency: 'INR',
receipt: 'order_rcptid_11',
})
// クライアントで Razorpay Checkout を呼び出し
// 決済後、razorpay_payment_id, razorpay_signature を受け取って検証
韓国 SaaS がインド進出する場合、Stripe だけでは UPI 決済を取り込めず、Razorpay 統合がほぼ必須です。インド決済の 70% 以上が UPI 経由だからです。
10. 日本 — GMO Payment Gateway / PAY.JP / KOMOJU / PayPay / LINE Pay
日本は韓国と全く異なる決済エコシステムを持ちます。
GMO Payment Gateway:
- 日本最大の PSP、東証上場(4784)
- 任天堂、楽天、メルカリの基幹決済インフラ
- API は保守的、日本語ドキュメント中心、英語ドキュメントは乏しい
- 手数料は交渉可能(大規模加盟店はカード手数料 1.5% まで下がる)
PAY.JP:
- BASE(日本最大の EC ビルダー)が作った PSP、「日本の Stripe」を標榜
- API が意図的に Stripe に類似、JavaScript SDK もよく整理されている
- カード決済はクリーン、ウォレットは弱い
- 手数料 3.6%(一律)
KOMOJU:
- 外国 SaaS の日本決済進出の標準(Patreon、itch.io、Discord などが利用)
- 日本のクレジットカード + コンビニ決済 + 銀行振込 + PayPay + LINE Pay を統合
- 英語ドキュメント完備、韓国の PortOne のようなアグリゲータ役
- 本社は東京、Degica が運営
PayPay:
- ソフトバンク発の QR 決済、日本のアクティブユーザ 6,000 万
- 直接 API 統合は難しく、通常は KOMOJU・GMO PG 経由で受け付ける
LINE Pay:
- LINE アカウントに決済を紐付け、韓国 LINE Pay とは別運営
- 2024 年に日本事業の一部を縮小、店舗決済は PayPay に統合中
// KOMOJU API の例 — 外国 SaaS が日本決済を受け付ける時の最もクリーンな経路
import KomojuApi from 'komoju-node'
const komoju = new KomojuApi({
secretKey: process.env.KOMOJU_SECRET_KEY!,
})
const session = await komoju.sessions.create({
amount: 1980, // 1,980 円
currency: 'JPY',
email: 'customer@example.jp',
return_url: 'https://example.com/return',
payment_types: ['credit_card', 'konbini', 'paypay', 'linepay'],
})
// session.session_url にユーザをリダイレクト
韓国 → 日本進出 SaaS への推奨組合せ: KOMOJU(少額・外国人フレンドリー)+ GMO PG(大口取引) の併用。日本カードは 3DS 強制が増えているため、3DS2 SDK 統合の重要性が徐々に高まっています。
11. 課金 — Stripe Billing vs Lago vs OpenMeter vs Orb vs Metronome
SaaS ビジネスの課金(サブスクリプション + 従量)は決済(payment)と分離した別ドメインです。2026 年の課金市場は 6 プロダクトに固まりました。
| プロダクト | 運用モデル | 強み | 弱み |
|---|---|---|---|
| Stripe Billing | SaaS, Stripe 専属 | 決済との統合がスムーズ、サブスク標準 | 複雑な従量メータリングは弱い |
| Lago | OSS + Cloud | セルフホスト可能、無料で開始 | 新興、一部機能はまだ発展途上 |
| OpenMeter | OSS、CNCF | 従量メータリング専業、Kafka ベース | 課金自体は別ツールが必要 |
| Orb | SaaS | 複雑な従量モデルに強い、AI 企業御用達 | 高価 |
| Metronome | SaaS | OpenAI、Anthropic、Databricks 採用 | エンタープライズ専用 |
| Maxio(旧 Chargify + SaaSOptics) | SaaS | B2B 特化、MRR/ARR レポーティング強い | モダンな従量モデルは弱い |
Stripe Billing の基本サブスクリプションモデル:
// 1) Price 登録(1 回)
const price = await stripe.prices.create({
product: 'prod_premium',
unit_amount: 1999,
currency: 'usd',
recurring: { interval: 'month' },
})
// 2) サブスクリプション作成
const subscription = await stripe.subscriptions.create({
customer: 'cus_xxx',
items: [{ price: price.id }],
payment_behavior: 'default_incomplete',
expand: ['latest_invoice.payment_intent'],
})
// 3) 従量ベース価格 — 2025 年に Meter Events API として再設計
await stripe.billing.meterEvents.create({
event_name: 'api_request',
payload: { stripe_customer_id: 'cus_xxx', value: '1' },
})
Lago の魅力(OSS):
# Docker Compose 1 行でセルフホスト可能
# https://github.com/getlago/lago
services:
api:
image: getlago/api:v1.x
environment:
DATABASE_URL: postgres://...
REDIS_URL: redis://...
Lago は 決済処理を Stripe・Adyen に委譲 し、従量メータリング・請求書生成・サブスク管理のみを担当します。決済 PSP を変えるのが容易で、データ主権が必要な EU・韓国企業にとってセルフホストに最適。
Orb / Metronome のポジション:
- どちらも「従量課金が非常に複雑な企業」専用
- OpenAI は Metronome でトークン単位課金を処理(月数十億イベント)
- Anthropic も同規模で Orb・Metronome を評価
- 価格は高い(月
$2,000–$10,000以上)が、従量モデルが複雑なら自社構築比較で圧倒的 ROI
12. 従量課金(consumption pricing)— Tier / Stripe Billing
2023–2026 年の SaaS 価格モデル最大の変化は シートベース購読から従量ベースへの移行 です。OpenAI(トークン)、Snowflake(コンピュート)、Vercel(ビルド分)、Cloudflare(リクエスト)が標準化し、2026 年にはほぼすべてのインフラ SaaS のデフォルトに。
従量モデルの実装難点:
- 正確なメータリング: 毎秒数万イベントを欠損なく集計
- 遅延請求: 課金時点で 1 か月分のイベントを集計 → 課金システムに負荷
- 予算アラート: ユーザに予想外の高額請求が来ないよう 80%、100% アラート
- 前払いクレジット + 後払い請求のミックス: OpenAI モデルが典型例
- 複数単位の統合: API 呼び出し + ストレージ GB + 転送 GB を 1 つの請求書に
Tier(OSS) は従量課金を SDK 1 行で追加できるツールです。
// Tier SDK 例(概念)
import { Tier } from 'tier'
const tier = new Tier()
// 使用量を報告
await tier.report('org:acme', 'feature:api-calls', 100)
// 価格モデルは YAML で宣言
// plans:
// premium:
// features:
// api-calls:
// tiers:
// - upto: 10000
// price: 0
// - upto: 100000
// price: 0.001
// - upto: inf
// price: 0.0005
Stripe Billing の Meter Events(2025 年リリース)は同じ問題を Stripe 内部で解決します。
// API 呼び出しごとにメーターイベントを発火
await stripe.billing.meterEvents.create({
event_name: 'api_calls',
payload: {
stripe_customer_id: 'cus_xxx',
value: '1',
},
})
// Stripe が自動集計し月末の請求書を生成
従量課金の核心は イベント収集インフラと課金システムを分離すべき という点です。OpenMeter、Tinybird、ClickHouse のような分析 DB にイベントをまず蓄積し、課金システム(Stripe/Lago/Orb)がそこから読み取るパターンが標準になりました。
13. セキュリティ — ウェブフック検証 / 冪等性キー / SCA / 3DS2
決済統合作業の 80% は「基本トランザクションフロー」、残り 20% がセキュリティと信頼性ですが、その 20% が事故の 99% を占めます。
ウェブフック署名検証(Stripe の例):
import { headers } from 'next/headers'
export async function POST(req: Request) {
const sig = (await headers()).get('stripe-signature')!
const body = await req.text() // raw body、JSON.parse 前
let event
try {
event = stripe.webhooks.constructEvent(
body,
sig,
process.env.STRIPE_WEBHOOK_SECRET!
)
} catch (err) {
return new Response('Invalid signature', { status: 400 })
}
// event は検証済み、処理続行
}
stripe-signature ヘッダは t=timestamp,v1=signature 形式で、Stripe SDK が次を自動検証します。
- タイムスタンプが 5 分以内か(リプレイ攻撃対策)
- HMAC-SHA256(body, secret) が signature と一致するか
- timing-safe compare で比較
冪等性キー(Idempotency-Key):
同じリクエストを 2 回送っても同じ結果になるよう保証します。Stripe・Square・Razorpay・Toss Payments すべてサポート。
const intent = await stripe.paymentIntents.create(
{ amount: 1999, currency: 'usd' },
{ idempotencyKey: `order-${orderId}-${attempt}` }
)
要点: 冪等性キーは 24 時間有効、同じキーで違うペイロードを送るとエラー。UUID を 1 回生成してリトライ間で同じ値を使うのが標準パターン。
SCA(Strong Customer Authentication):
EU PSD2 の要件で 2021 年から義務化。ほぼすべての EU 取引で次の 2 つの認証が必要:
- 知っているもの(パスワード、PIN)
- 持っているもの(スマートフォン、セキュリティトークン)
- 自分自身(生体認証)
実務では 3DS2(3D Secure 2.x) が標準実装方式で、カードネットワークがリスクスコアを評価し、一部取引は自動通過(frictionless)、一部は OTP・生体認証(challenge)を要求します。
// PaymentIntent 生成時に SCA フローが自動トリガー
const intent = await stripe.paymentIntents.create({
amount: 1999,
currency: 'eur',
payment_method_types: ['card'],
// automatic_payment_methods が SCA を自動処理
})
// クライアントの PaymentElement が 3DS チャレンジモーダルを表示
韓国では SCA ではなく 本人認証(携帯電話・公認認証) が一部取引に義務で、Toss Payments・PortOne が SDK 1 行で処理します。日本は 2025 年から 3DS2 段階的義務化が始まりました(大型加盟店から適用)。
14. 誰が何を選ぶべきか — グローバル / 韓国 / 日本 / B2B SaaS / マーケットプレイス
最後にシナリオ別の推奨を整理します。
| シナリオ | 第 1 選択 | 第 2 / 補助 | 課金 |
|---|---|---|---|
| グローバル SaaS(英語圏) | Stripe | Adyen(エンタープライズ) | Stripe Billing |
| 韓国中心 SaaS | Toss Payments または PortOne | Stripe(海外カード) | Stripe Billing or Lago |
| 韓国 + 日本同時展開 | PortOne(韓国)+ KOMOJU(日本) | Stripe(西側) | Lago(分離) |
| 日本中心 | GMO PG + KOMOJU | Stripe(西側) | Stripe Billing |
| インド進出 | Razorpay | Stripe(国際カード) | Stripe Billing |
| 欧州 SMB | Mollie | Stripe | Stripe Billing |
| 欧州エンタープライズ | Adyen | Checkout.com | Stripe Billing or Orb |
| AI 従量課金 | Stripe(決済) | — | Metronome or Orb |
| OSS / セルフホスト必須 | Stripe + Lago | — | Lago |
| 店舗 + オンライン | Square(US)/ Adyen | Stripe(Web 部分のみ) | Stripe Billing |
| マーケットプレイス(Uber、Etsy 型) | Stripe Connect | Adyen for Platforms | Stripe Billing |
| B2B 請求書発行重視 | Stripe Billing | Maxio | Maxio |
| ワンクリックチェックアウト重視 | Bolt + Stripe | PayPal + Braintree | Stripe Billing |
意思決定ヒューリスティック:
- 第 1 の質問: 売上の 50% 以上はどの国か? その国の標準 PSP が第 1 選択
- 第 2 の質問: 従量課金はビジネスの中核か? Yes なら課金を PSP と分離(Lago/Orb)
- 第 3 の質問: 取引量が月 1 万件未満か? Yes ならセルフサービス可能な Stripe/Toss で開始
- 第 4 の質問: 12 か月以内の海外展開予定? Yes なら最初から Stripe を併設設計
最もよくある失敗:
- 最初から複数 PSP を直接統合する → PortOne・KOMOJU 等のアグリゲータから始め、取引量が増えたら交渉して直接統合に切り替えるのが正解
- Stripe Billing で従量課金を始める → モデルが複雑化するとマイグレーション苦痛が大きい。従量が中核なら最初から Lago/Orb を検討
- ウェブフック検証を後回しにする → 本番事故の 1 位原因。最初の統合から署名検証必須
- 冪等性キーを使わない → ネットワークリトライで重複決済。すべての決済 API が冪等性キーをサポート、無条件に使用
決済はインフラであり、インフラは一度間違って敷くとマイグレーションコストが売上の 1–3% に達します。上の表のシナリオマッチングだけでも半分は成功です。残り半分はウェブフック・冪等性・3DS2 を最初から正しく扱うことです。
15. 参考 / References
- Stripe Documentation —
https://docs.stripe.com/ - Stripe API Reference —
https://docs.stripe.com/api - Stripe Atlas —
https://stripe.com/atlas - Stripe Tax —
https://stripe.com/tax - Stripe Identity —
https://stripe.com/identity - Stripe Issuing —
https://stripe.com/issuing - Stripe Billing Meter Events —
https://docs.stripe.com/billing/subscriptions/usage-based - Adyen Documentation —
https://docs.adyen.com/ - Adyen API Explorer —
https://docs.adyen.com/api-explorer/ - Toss Payments Developers —
https://docs.tosspayments.com/ - Toss Payments GitHub —
https://github.com/tosspayments - PortOne Documentation —
https://developers.portone.io/ - PortOne V2 API —
https://developers.portone.io/api/rest-v2 - KCP 韓国サイバー決済 —
https://developers.kcp.co.kr/ - KG イニシス開発者センター —
https://manual.inicis.com/ - ダナル決済 —
https://www.danalpay.com/ - Square Developer —
https://developer.squareup.com/ - Cash App Pay —
https://developers.cash.app/ - Mollie Documentation —
https://docs.mollie.com/ - Checkout.com Documentation —
https://www.checkout.com/docs - Braintree Documentation —
https://developer.paypal.com/braintree/docs - Razorpay Documentation —
https://razorpay.com/docs/ - GMO Payment Gateway —
https://www.gmo-pg.com/service/ - PAY.JP Documentation —
https://pay.jp/docs/ - KOMOJU Documentation —
https://docs.komoju.com/ - PayPay for Developers —
https://developer.paypay.ne.jp/ - LINE Pay Developers —
https://pay.line.me/developers/apis/onlineApis - Lago Open Source —
https://github.com/getlago/lago - Lago Documentation —
https://doc.getlago.com/ - OpenMeter —
https://openmeter.io/ - Orb —
https://www.withorb.com/ - Metronome —
https://metronome.com/ - Maxio (Chargify + SaaSOptics) —
https://www.maxio.com/ - Tier —
https://www.tier.run/ - Bolt —
https://www.bolt.com/ - Standard Webhooks —
https://www.standardwebhooks.com/ - PCI DSS —
https://www.pcisecuritystandards.org/ - PSD2 / SCA —
https://www.ecb.europa.eu/paym/intro/mip-online/2018/html/1803_revisedpsd.en.html - 3D Secure 2 Spec —
https://www.emvco.com/emv-technologies/3d-secure/