[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Cancel Recurly subscriptions at the end of the term

> Cancel Recurly subscriptions so they end at the term or next billing cycle, with the end date reported back, from Claude Code, n8n or a script.

Source: https://cotlet.dev/integrations/recurly-api-mcp-server/cancel-subscription-at-term-end

A batch of customers asked to leave, and support has a list of account codes. Each cancellation is a few clicks, and the wrong timing option ends access earlier or later than promised.

Cotlet does it in your own Recurly account with list\_subscriptions and cancel\_subscription, called by your AI agent, an n8n workflow or a script.

[Sign up free](https://cotlet.dev/app/signup?app=recurly) [All Recurly tools](https://cotlet.dev/integrations/recurly-api-mcp-server.md)

Hosted · nothing to install or maintain

## Can Recurly do this on its own?

Recurly's API cancels a subscription so it stays active and expires at the end of the current bill cycle (checked 14 Oct 2026). The Admin Console also lets you pick the end of the term and has a separate Terminate Subscription that ends access now. The API has no timing option on cancel, and it does not read your list of accounts for you.

## How you do it in Recurly today

1. In the Admin Console, open the customer account.
2. Click the subscription name to open the Subscription Details page.
3. From the Subscription Actions dropdown, choose Cancel Subscription.
4. Select the timing: immediately, at the next billing cycle, or at the end of the term.
5. Repeat for every account on the list, and note the end date each time.

## How to cancel Recurly subscriptions at the end of the term

Prompt

```
Cancel the subscriptions of acme-co and bright-lab at the end of their current term, and tell me the date each one ends.
```

1. 01  
### Match each account to a live subscription  
The agent calls list\_subscriptions with state live for each account on your list, so it sees every subscription that is not expired. An account with two subscriptions is shown to you before anything is cancelled.
2. 02  
### Skip what is already ending  
Subscriptions that are canceled or expired are listed as already handled and are not cancelled again.
3. 03  
### Cancel with the timing you named  
cancel\_subscription runs with the timing from your prompt. If you named none, the agent uses the end of the current bill cycle, which is the API behavior, and says so.
4. 04  
### Report the end dates  
Each result includes the date the subscription stops renewing, so the customer reply has a real date in it.

### What you get back

Example data

```
Cancelled 2 of 3 subscriptions
- acme-co, Team plan: access ends 14 Nov 2026
- bright-lab, Starter plan: access ends 2 Nov 2026
Skipped: north-yard, already canceled on 28 Sep
```

### Other ways to ask

- Cancel at the end of the term every subscription of accounts in this CSV, and list the end dates.
- Show me which of these accounts have two subscriptions before you cancel anything.
- Cancel the subscription of acme-co at the next billing cycle, not at the end of the term.
- Undo the cancellation of bright-lab before it expires.

## What Recurly allows, and what to know first

- A canceled Recurly subscription stays active until the selected end date, and the customer keeps access until then.
- You can reactivate a canceled subscription from Subscription Actions with Reactivate Subscription before it expires; after expiry you must create a new subscription.
- Terminate Subscription moves a subscription straight to expired, and an expired subscription cannot be reversed.
- If a subscription is cancelled outside dunning, its past-due invoices stay open and in dunning; mark them as failed manually to stop collection.
- Recurly sends a cancellation webhook when a subscription is canceled and an expired webhook once it is no longer active.

cancel\_subscription asks for your OK by default. To run it on a schedule without you, switch confirmation off for that tool in your dashboard.

Sources: [Recurly Docs: Expire/cancel subscription](https://docs.recurly.com/recurly-subscriptions/docs/expire-subscription) · [Recurly API reference: Cancel Subscription](https://docs.recurly.com/recurly-subscriptions/reference/cancelsubscription)

## Call cancel\_subscription from a script

curl

```
curl -X POST https://cotlet.dev/api/v1/recurly/subscriptions/44f83d0cbf86d2b8a5b3d3e6c3e8b16f/cancel \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"timing":"end_of_term"}'
```

Example response

```
{
"subscription_id": "44f83d0cbf86d2b8a5b3d3e6c3e8b16f",
"account_code": "acme-co",
"state": "canceled",
"canceled_at": "2026-10-14T10:20:00Z",
"expires_at": "2026-11-14T00:00:00Z"
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is recurly\_write → cancel\_subscription. Example data.

[Schedule it in n8n, Make, Zapier or cron](https://cotlet.dev/integrations/recurly-api-mcp-server.md#automations)

## Recurly tools this automation uses

__Cotlet Recurly tools used to cancel Recurly subscriptions at the end of the term__
| Tool | Parameters |
| -------------------- | ------------------------ |
| list\_subscriptions | state, per\_page, cursor |
| cancel\_subscription | subscription\_id, timing |

[All 11 Recurly tools with descriptions](https://cotlet.dev/integrations/recurly-api-mcp-server.md#tools)

## Frequently asked questions

### Does the agent terminate subscriptions?

No. It cancels, which keeps access until the end date and can be reactivated before then. Terminating ends access at once and cannot be undone, so it stays a manual step in Recurly.

### Is it safe to connect Recurly to Cotlet?

Yes. You sign in to Recurly yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Recurly once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.

## More Recurly automations

- [List past-due Recurly accounts](https://cotlet.dev/integrations/recurly-api-mcp-server/list-past-due-accounts.md)
- [Refund a Recurly invoice line item](https://cotlet.dev/integrations/recurly-api-mcp-server/refund-invoice-line-item.md)
- [Recurly API and MCP server: every tool](https://cotlet.dev/integrations/recurly-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to Recurly.

Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with Recurly.

[Sign up free](https://cotlet.dev/app/signup?app=recurly)

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.

## For AI agents: sign your user up

Is your user asking you to sign them up for Cotlet? You can do it for them, no account or key needed.

1. Read the fields and their allowed values: GET https://cotlet.dev/api/v1/access-requests
2. Ask the user for each value: email, apps, what you will do with them. If they leave the password to you, generate a strong one and show it to them.
3. Show the user what you will send, then POST it as JSON to https://cotlet.dev/api/v1/access-requests.

One call creates the account and sends the access request; we email the user when access is granted.
