---
title: "Paywall Settle"
method: POST
path: "/v1/teams/{team_id}/billing/paywall/settle"
tags: ["billing"]
---

# Paywall Settle

`POST /v1/teams/{team_id}/billing/paywall/settle`

Start the plan the moment the card field goes through.

Team access, like the checkout that minted the intent. The intent is read
back from Stripe and must have succeeded for THIS team, so a caller can only
settle what Stripe already says happened.

## Path parameters

- `team_id` string, uuid, required

## Headers

- `authorization` string, nullable
- `x-darwin-token` string, nullable

## Request body

- PaywallSettleRequest — The SetupIntent the card field just confirmed, by id — nothing else.
  - `setup_intent` string, required

## Response `200`

Successful Response

- object

## Other responses

- `422` — Validation Error

## Changes

> 32 revisions in range; 1 not diffed.

- **2026-09-27** `b09e3c4ee2af` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/stormy/apis/stormy-control-plane/changes/v1/teams/:team_id/billing/paywall/settle/post.md)

---

[API](https://skmtc.dev/stormy/apis/stormy-control-plane.md) · [All operations](https://skmtc.dev/stormy/apis/stormy-control-plane/llms.txt) · [OpenAPI document](https://skmtc.dev/stormy/apis/stormy-control-plane/revisions/b09e3c4ee2af?raw)
