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

  • Id 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
Request Example for delete/public-api/v1/invoices/{invoice_id}/recurrence
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"
  }
}