---
title: "Stripe webhook receiver"
method: POST
path: "/v1/billing/webhook"
tags: ["billing"]
---

# Stripe webhook receiver

`POST /v1/billing/webhook`

## Request

- Base URL: `https://api.ctindex.io`
- URL: `https://api.ctindex.io/v1/billing/webhook`
- Auth: none declared

Receives Stripe events and updates the matching api_keys row on checkout completion, subscription update, and subscription cancellation. Verified via the Stripe-Signature header. Idempotent: every Stripe event id we successfully apply is recorded in processed_stripe_events; replays are no-ops.

## Headers

- `Stripe-Signature` string

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/ctindex/apis/certindex-api.md) · [All operations](https://skmtc.dev/ctindex/apis/certindex-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ctindex/apis/certindex-api/revisions/d5bc0ec85bc9?raw)
