---
title: "Retry custom plan billing"
method: PUT
path: "/custom-plan-billings/{custom_plan_billing_id}/retry"
tags: ["plans"]
---

# Retry custom plan billing

`PUT /custom-plan-billings/{custom_plan_billing_id}/retry`

## Path parameters

- `custom_plan_billing_id` string, required

## Request body

- RetryCustomPlanBillingRequestBody
  - `activation_strategy` 'on_payment' | 'on_publish'
  - `billing_cycle_anchor` string, date-time, nullable — The date the subscription's billing period renews on. Only honored when the retry creates a subscription.
  - `customer_email` string, required
  - `days_until_due` integer, nullable
  - `prorate_first_period` boolean, nullable — When true, the partial period between the subscription starting and its renewal date is billed pro rata straight away. When false that period is free and no invoice is raised until the renewal date. Only applies alongside billing_cycle_anchor. Defaults to true.
  - `send_invoice` boolean, nullable — Whether Stripe emails the invoice when it is finalized. Defaults to true.

## Response `200`

OK

- object
  - `data` CustomPlanBillingResponseData, required
    - `activation_strategy` 'on_payment' | 'on_publish', required
    - `billing_cycle_anchor` string, date-time, nullable — The billing period renewal date pinned when the subscription started, when one was set. When no invoice exists yet, the first invoice is raised on this date.
    - `company_id` string, required
    - `created_at` string, date-time, required
    - `days_until_due` integer, required
    - `external_invoice_id` string, nullable
    - `id` string, required
    - `paid_at` string, date-time, nullable
    - `plan_billing_source` 'custom_plan' | 'manage_plan', required
    - `plan_id` string, required
    - `prorate_first_period` boolean, nullable — Whether the shortened period the renewal date created was billed pro rata when the subscription started. False means that period is free and the first invoice is the one raised on the renewal date.
    - `published_at` string, date-time, nullable
    - `send_invoice` boolean, required
    - `status` 'active' | 'expired' | 'paid' | 'pending', required
    - `stripe_invoice_url` string, nullable
    - `updated_at` string, date-time, required
  - `params` object, required — Input parameters

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not found
- `500` — Server error

## Changes

> 132 revisions in range; 1 not diffed.

- **2026-08-24** `05da7dce1cf9` — 3 info
  - added the new optional request property `billing_cycle_anchor`
  - added the new optional request property `prorate_first_period`
  - added the optional property `data/prorate_first_period` to the response with the `200` status
- **2026-08-13** `776228e28d67` — 1 info
  - added the optional property `data/billing_cycle_anchor` to the response with the `200` status
- **2026-08-12** `4a9d0e476c08` — 1 info
  - added the required property `data/plan_billing_source` to the response with the `200` status
- **2026-07-28** `1f5b7fcc3c65` — 2 info
  - added the new optional request property `send_invoice`
  - added the required property `data/send_invoice` to the response with the `200` status
- **2026-06-09** `96d06fa89a73` — 1 warning
  - removed the request property `pay_in_advance`

[Full history](https://skmtc.dev/schematichq/apis/schematic-api/changes/custom-plan-billings/:custom_plan_billing_id/retry/put.md)

---

[API](https://skmtc.dev/schematichq/apis/schematic-api.md) · [All operations](https://skmtc.dev/schematichq/apis/schematic-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/schematichq/schematic-api/revisions/d9cc73df1389/schema)
