---
title: "Create a one-off cycle on a subscription"
method: POST
path: "/subscription/{id}/cycle"
tags: ["Subscription Payment"]
---

# Create a one-off cycle on a subscription

`POST /subscription/{id}/cycle`

Triggers an extra capture against an active subscription's saved payment method — useful for billing ad-hoc items like setup fees, add-ons, or upgrades without touching the recurring schedule. The regular cycles keep running unchanged.

Send `capture_at` to schedule the capture for later, or omit it to capture right away. The subscription must be active; a one-off cycle on an inactive subscription is rejected with a `409 Conflict`.


**Required scope:** <code style="background:#e8f0fe;color:#1a73e8;padding:2px 8px;border-radius:12px;font-size:0.85em">subscription:create</code>

## Path parameters

- `id` string, uuid, required

## Request body

- object
  - `value` number, double, required — Must have at most two decimal places.
  - `capture_at` string, Y-m-d H:i — When to schedule the charge, in UTC. Must not be in the past. Omit to capture immediately.
  - `description` string — Free-form text shown on the bank statement or in the MB WAY app.
  - `key` string — Your internal identifier for this charge. Useful for reconciliation on your side.

## Response `201`

Created

- OneTimeChargeResponseOnPost
  - `status` string, required
  - `message` string[], required
  - `id` string, uuid, required — The UUID of the newly created cycle.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `409` — Conflict
- `412` — Pre condition failed
- `429` — Too Many Requests
- `500` — Internal Server Error

---

[API](https://skmtc.net/easypay/apis/easypay-payments-api.md) · [All operations](https://skmtc.net/easypay/apis/easypay-payments-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/easypay/easypay-payments-api/versions/cdf25a9ad7b2/schema)
