{
  "id": "api/stripe-webhook-signature-verification-failed-timestamp",
  "signature": "Stripe webhook signature verification failed: timestamp out of tolerance",
  "signature_zh": "Stripe Webhook 签名验证失败：时间戳超出容差范围",
  "regex": "timestamp out of tolerance",
  "domain": "api",
  "category": "auth_error",
  "subcategory": null,
  "root_cause": "The webhook event's timestamp differs from the server's clock by more than the allowed tolerance (usually 5 minutes), causing signature verification to fail.",
  "root_cause_type": "generic",
  "root_cause_zh": "Webhook 事件的时间戳与服务器时钟的差异超过允许的容差（通常为 5 分钟），导致签名验证失败。",
  "versions": [
    {
      "version": "Stripe API 2023-10-16",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    },
    {
      "version": "stripe-python v7.0",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    },
    {
      "version": "stripe-node v14.0",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    }
  ],
  "os_specific": {},
  "dead_ends": [
    {
      "action": "",
      "why_fails": "Exposes the endpoint to replay attacks and invalid events.",
      "fail_rate": 1.0,
      "condition": "",
      "sources": []
    },
    {
      "action": "",
      "why_fails": "Clock drift is a symptom; manual adjustment is temporary and may break other services.",
      "fail_rate": 0.8,
      "condition": "",
      "sources": []
    }
  ],
  "workarounds": [
    {
      "action": "Sync the server's clock using NTP (e.g., `sudo ntpdate pool.ntp.org` on Linux) and ensure NTP daemon is running.",
      "success_rate": 0.9,
      "how": "Sync the server's clock using NTP (e.g., `sudo ntpdate pool.ntp.org` on Linux) and ensure NTP daemon is running.",
      "condition": "",
      "sources": []
    },
    {
      "action": "Increase the tolerance window in the Stripe SDK by passing a custom `tolerance` parameter (e.g., `stripe.webhook.construct_event(payload, sig_header, secret, tolerance=300)` in Python).",
      "success_rate": 0.85,
      "how": "Increase the tolerance window in the Stripe SDK by passing a custom `tolerance` parameter (e.g., `stripe.webhook.construct_event(payload, sig_header, secret, tolerance=300)` in Python).",
      "condition": "",
      "sources": []
    }
  ],
  "workarounds_zh": [
    "Sync the server's clock using NTP (e.g., `sudo ntpdate pool.ntp.org` on Linux) and ensure NTP daemon is running.",
    "Increase the tolerance window in the Stripe SDK by passing a custom `tolerance` parameter (e.g., `stripe.webhook.construct_event(payload, sig_header, secret, tolerance=300)` in Python)."
  ],
  "transition_graph": {
    "leads_to": [],
    "preceded_by": [],
    "frequently_confused_with": []
  },
  "official_doc_url": "https://stripe.com/docs/webhooks/signatures",
  "official_doc_section": null,
  "error_code": null,
  "verification_tier": "ai_generated",
  "confidence": 0.85,
  "fix_success_rate": 0.85,
  "resolvable": "partial",
  "first_seen": "2024-01-10",
  "last_confirmed": "2024-06-01",
  "last_updated": "2024-06-01",
  "evidence_count": 1,
  "tags": [],
  "locale": "en",
  "aliases": []
}