---
title: "Paddle Cancel Current Sub"
method: POST
path: "/api/users/{user_id}/paddle-cancel-current-sub"
---

# Paddle Cancel Current Sub

`POST /api/users/{user_id}/paddle-cancel-current-sub`

## Request

- Base URL: `https://api.adplug.app` (the document declares no server; this is the origin it was published from)
- URL: `https://api.adplug.app/api/users/{user_id}/paddle-cancel-current-sub`
- Auth: HTTP bearer

Cancel the user's active Paddle subscription immediately.

Sandbox-only: gated on the API key prefix. Returns 403 on live accounts.
Built for Playwright lifecycle tests to clean up the `sub_…` they create —
without it, every successful test run leaves a lingering active sub that
breaks subsequent runs (Paddle's Checkout overlay routes "already-subscribed"
customers through a different flow).

Production users cancel via the Paddle customer portal — this endpoint is
NOT a public cancel UX; the response intentionally exposes the underlying
Paddle state so test failures are diagnosable from the spec output.

## Path parameters

- `user_id` string, required

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

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