Stop an invoice recurrence
Ends a recurring or subscription series in one call. No further invoices are generated, and for a subscription your client's card is no longer charged automatically — the same thing the Bonsai app does when you end a billing cycle.
Nothing already issued is touched. An invoice that is outstanding stays outstanding and still needs paying, and nothing is deleted.
Pass any invoice in the series; the schedule always lives on the most
recent one, and that is the invoice you get back. So the id in the
response is often not the invoice_id you sent.
Read the result from recurrence_active, which is false once a series
is stopped. repeat_interval keeps reporting the cadence the series ran
on, because a stopped series keeps its schedule so it can be started
again. kind still reads recurring when the series issued more than
one invoice, because the invoice remains part of that series and keeps
its series_id — the app shows this as a completed recurring invoice.
Only an invoice that had not repeated yet comes back as single.
Stopping a series that never repeated leaves a draft invoice behind, and stopping a subscription also turns off the auto-send that issued it. Both match the app.
There is nothing to undo here and the call is not repeatable: an invoice
with no live recurrence returns 422 rather than quietly doing nothing.
A series that issued more than one invoice reports that it was already
stopped; one that never repeated is a plain one-off afterwards, and
reports that it is not recurring.
If your access is limited to certain projects and the most recent invoice
in the series is not one you can reach, the call returns 422 and stops
nothing, rather than stopping the newest invoice you happen to see and
leaving the series running.
Path Parameters
- Type: integerinvoice
_id requiredId of any invoice in the series. Every invoice in one reports the same
series_id.
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://app.hellobonsai.com/public-api/v1/invoices/1/recurrence \
--request DELETE \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": {
"id": 3310,
"invoice_number": "INV-001",
"title": "Acme Corp Invoice",
"currency": "USD",
"issued_date": "2026-04-14",
"due_date": "2026-04-28",
"sent_date": "2026-04-14T09:12:04.000Z",
"project_id": 51,
"client_email": "alex@example.com",
"public_url_token": "x7f2a9c4b1e8d",
"created_at": "2026-04-14T09:12:04.000Z",
"total_amount": "200.0",
"discount_amount": "25.0",
"status": "outstanding",
"due_date_option": "custom",
"company_id": 42,
"client_name": "Acme Corp",
"subtotal": "200.0",
"tax_amount": "0.0",
"kind": "recurring",
"repeat_interval": "monthly",
"repeat_finish_date": "2027-04-14",
"series_id": 3310,
"recurrence_active": true,
"url": "https://app.hellobonsai.com/invoices/3391",
"invoice_items": [
{
"id": 4471,
"name": "Design",
"description": "Homepage and pricing page",
"amount": "2.0",
"rate": "100.0",
"unit_type": "per_hour",
"total": "200.0"
}
]
},
"meta": {
"request_id": "b1f0d2c4-7a9e-4c3b-8d5f-1e2a3b4c5d6e"
}
}