Skip to content
Published on

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

Authors

「決済はソリューションではなくインフラだ。インフラは 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税金計算・申告、KYCStripe 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_records API が 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 点:

  1. Stripe Tax が韓国・日本を追加 — 2025 年 11 月から韓国 VAT 自動申告、日本消費税自動計算に対応。グローバル SaaS が東アジア税務を外部委託なしで処理可能に。
  2. Stripe Issuing が EU・UK で正式ローンチ — Brex・Ramp 的な経費管理スタートアップを欧州で構築可能に。
  3. 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.jsonpayments.jsonpayments/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 は欧州 SMBCheckout.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 BillingSaaS, Stripe 専属決済との統合がスムーズ、サブスク標準複雑な従量メータリングは弱い
LagoOSS + Cloudセルフホスト可能、無料で開始新興、一部機能はまだ発展途上
OpenMeterOSS、CNCF従量メータリング専業、Kafka ベース課金自体は別ツールが必要
OrbSaaS複雑な従量モデルに強い、AI 企業御用達高価
MetronomeSaaSOpenAI、Anthropic、Databricks 採用エンタープライズ専用
Maxio(旧 Chargify + SaaSOptics)SaaSB2B 特化、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. 正確なメータリング: 毎秒数万イベントを欠損なく集計
  2. 遅延請求: 課金時点で 1 か月分のイベントを集計 → 課金システムに負荷
  3. 予算アラート: ユーザに予想外の高額請求が来ないよう 80%、100% アラート
  4. 前払いクレジット + 後払い請求のミックス: OpenAI モデルが典型例
  5. 複数単位の統合: 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 が次を自動検証します。

  1. タイムスタンプが 5 分以内か(リプレイ攻撃対策)
  2. HMAC-SHA256(body, secret) が signature と一致するか
  3. 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(英語圏)StripeAdyen(エンタープライズ)Stripe Billing
韓国中心 SaaSToss Payments または PortOneStripe(海外カード)Stripe Billing or Lago
韓国 + 日本同時展開PortOne(韓国)+ KOMOJU(日本)Stripe(西側)Lago(分離)
日本中心GMO PG + KOMOJUStripe(西側)Stripe Billing
インド進出RazorpayStripe(国際カード)Stripe Billing
欧州 SMBMollieStripeStripe Billing
欧州エンタープライズAdyenCheckout.comStripe Billing or Orb
AI 従量課金Stripe(決済)Metronome or Orb
OSS / セルフホスト必須Stripe + LagoLago
店舗 + オンラインSquare(US)/ AdyenStripe(Web 部分のみ)Stripe Billing
マーケットプレイス(Uber、Etsy 型)Stripe ConnectAdyen for PlatformsStripe Billing
B2B 請求書発行重視Stripe BillingMaxioMaxio
ワンクリックチェックアウト重視Bolt + StripePayPal + BraintreeStripe Billing

意思決定ヒューリスティック:

  1. 第 1 の質問: 売上の 50% 以上はどの国か? その国の標準 PSP が第 1 選択
  2. 第 2 の質問: 従量課金はビジネスの中核か? Yes なら課金を PSP と分離(Lago/Orb)
  3. 第 3 の質問: 取引量が月 1 万件未満か? Yes ならセルフサービス可能な Stripe/Toss で開始
  4. 第 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/