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利用のための設計パターン
- Webhookファーストアーキテクチャ:ステータス変更にはポーリングの代わりにWebhookを使用
- バッチ操作:利用可能な場合はStripeのバッチエンドポイントを使用
- 読み取りキャッシュ:顧客、商品、価格データをローカルにキャッシュ
- 書き込みキューイング:緊急でない書き込み(メタデータ更新など)をキューに入れ、制御されたレートで処理
- 冪等性キー:レート制限後に安全にリトライするため、書き込み操作には常に冪等性キーを使用
ユースケース
5分間で10,000件の注文が予想されるフラッシュセールを実施しています。各注文には3回のStripe APIコール(payment intent作成、決済確認、メタデータ更新)が必要です。注文量がStripeのレート制限内に収まることを確認し、フォールバック戦略を設計する必要があります。