---
title: "Verify and normalize one Stripe webhook"
method: POST
path: "/api/v1/payments/stripe/webhook"
tags: ["Payments"]
---

# Verify and normalize one Stripe webhook

`POST /api/v1/payments/stripe/webhook`

## Request

- Base URL: `https://axiomrelay.io`
- URL: `https://axiomrelay.io/api/v1/payments/stripe/webhook`
- Auth: none declared. Required headers: `Stripe-Signature`

Stripe-only public ingress. The signed event's livemode selects the corresponding TEST or LIVE verification secret, then raw-body signature verification, timestamp tolerance, body limit, event allowlist, replay evidence, environment matching, and fail-closed reconciliation apply.

## Headers

- `Stripe-Signature` string, required

## Request body

- object

## Response `200`

Verified event recorded, applied, gated, duplicated, or quarantined

## Other responses

- `400`: Invalid signature, environment, or event metadata
- `409`: Verified event is unmatched or out of order and remains retryable
- `413`: Body exceeds 64 KiB

---

[API](https://skmtc.dev/axiomrelay/apis/axiom-relay-control-plane-api.md) · [All operations](https://skmtc.dev/axiomrelay/apis/axiom-relay-control-plane-api/llms.txt) · [OpenAPI document](https://skmtc.dev/axiomrelay/apis/axiom-relay-control-plane-api/revisions/64ba55463cd2?raw)
