Stripe APIの決済処理向けレート制限

読み取りおよび書き込み操作のStripe APIレート制限について学びます。Stripeが決済処理とWebhookデリバリーのレート制限をどのように処理するかを理解します。

API Limits

詳細な説明

Stripe APIレート制限

Stripeのレート制限は、Eコマーストラフィックのバースト的な性質を処理しながら、決済インフラを保護するように設計されています。

デフォルトレート制限

操作タイプ 制限 備考
読み取り (GET) 100/秒 APIキーあたり
書き込み (POST/DELETE) 25/秒 APIキーあたり
検索 20/秒 APIキーあたり
ファイルアップロード 20/秒 APIキーあたり

Stripeのレート制限の仕組み

Stripeは秒あたりのスライディングウィンドウアプローチを使用しています。時間あたりや日あたりの制限とは異なり、Stripeの制限は秒レベルで適用されます:

  • 未使用のリクエストを「貯める」ことはできない
  • 各秒は独立して評価される
  • 制限はAPIキー(本番またはテスト)ごとに適用

レート制限レスポンス

レート制限された場合、Stripeは以下を返します:

HTTP/1.1 429 Too Many Requests
Retry-After: 1

{
  "error": {
    "type": "rate_limit_error",
    "message": "Too many requests..."
  }
}

大量Stripe利用のための設計パターン

  1. Webhookファーストアーキテクチャ:ステータス変更にはポーリングの代わりにWebhookを使用
  2. バッチ操作:利用可能な場合はStripeのバッチエンドポイントを使用
  3. 読み取りキャッシュ:顧客、商品、価格データをローカルにキャッシュ
  4. 書き込みキューイング:緊急でない書き込み(メタデータ更新など)をキューに入れ、制御されたレートで処理
  5. 冪等性キー:レート制限後に安全にリトライするため、書き込み操作には常に冪等性キーを使用

ユースケース

5分間で10,000件の注文が予想されるフラッシュセールを実施しています。各注文には3回のStripe APIコール(payment intent作成、決済確認、メタデータ更新)が必要です。注文量がStripeのレート制限内に収まることを確認し、フォールバック戦略を設計する必要があります。

試してみる — Rate Limit Calculator

フルツールを開く