---
title: "Reactivate Subscription"
method: POST
path: "/api/billing/reactivate"
tags: ["Billing"]
---

# Reactivate Subscription

`POST /api/billing/reactivate`

## Request

- Base URL: `https://api.soeru.biz` (the document declares no server; this is the origin it was published from)
- URL: `https://api.soeru.biz/api/billing/reactivate`
- Auth: none declared. Required headers: `authorization`

Reactivate a subscription that was set to cancel at period end.

Only works if the subscription hasn't actually been deleted yet
(status is cancel_pending, Stripe still has it as active with
cancel_at_period_end=True).

Phase 3 (2026-04-26 fix): brand_id 対応。multi-brand owner で brand_id を
渡さずに呼ぶと 400 で拒否。1-brand owner は brand_id 省略可 (legacy 互換)。
DB UPDATE は WHERE id = (target row id) で 1 行限定 — owner_id 単条件で
全 sub の status を上書きする旧バグの再発を防ぐ。

## Headers

- `authorization` string, required: Bearer <token>

## Request body

- ReactivateRequest
  - `brand_id` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

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