# Upgrade or downgrade a PushPress member plan

> Move a PushPress member to a bigger or smaller recurring plan, now or at the next bill date, with setup fee and discount checked first.

Source: https://cotlet.dev/integrations/pushpress-api-mcp-server/upgrade-or-downgrade-member-plan

A member who started on 3x a week now comes every day and asks for Unlimited, or someone cutting back wants the cheaper plan from next month. The request lands in a DM, and the switch waits until somebody sits down at the Core dashboard.

Cotlet does it in your own PushPress account with list\_members, get\_member, list\_plan\_templates and switch\_member\_plan, called by your AI agent, an n8n workflow or a script.

[Request access](https://cotlet.dev/app/signup?app=pushpress) [All PushPress tools](https://cotlet.dev/integrations/pushpress-api-mcp-server)

Hosted · nothing to install or maintain

Official options

## Can PushPress do this on its own?

PushPress Core has Switch Plan on the member profile and sends a Plan Switch email to the admin and the member (help center checked 12 Oct 2026). The Platform API has no endpoint to switch a plan, and Zapier only fires triggers on new, activated, paused and cancelled subscriptions (checked 11 Oct 2026). Every switch is still a staff member clicking through Core.

By hand

## How you do it in PushPress today

1. Open People > Members in Core, or use the search bar, and find the member.
2. Click the three dots next to the current plan, choose Switch Plan, select the new plan and click Next.
3. Check the prefilled discount and setup fee; set the setup fee to $0 to waive it.
4. Pick Now or Next Bill Date, apply the payment method, review the billing summary and click Save.
5. The pain: every switch hides three money decisions (proration, setup fee, discount), and a wrong pick surfaces weeks later as a charge the member disputes.

With an agent

## How to upgrade or downgrade a PushPress member plan

Prompt

```
Jordan wants to go from 3x Week to Unlimited starting at his next bill date. Waive the setup fee.
```

1. 01  
### Find the plan that is moving  
The agent finds the member with list\_members and opens the profile with get\_member. A member with two live plans, say a membership and a punch card, gets a question about which one changes. A plan in Alert is flagged first, because a failed payment usually needs fixing before any change.
2. 02  
### Match the target plan  
list\_plan\_templates gives the plans you sell. The agent matches the words the member used ("unlimited", "the 3x") to one recurring template and asks when two fit. A non-recurring target, such as a 10-class pack, cannot go through Switch Plan, so the agent says so instead of switching.
3. 03  
### Choose now or the next bill date  
Upgrades default to now, so the member gets the bigger plan today. Downgrades default to the next bill date, since Core greys out Now when the prorated difference is tiny. A date you named in the prompt always wins.
4. 04  
### Settle the fees before saving  
The agent states the setup fee on the new plan and whether you want it waived. It warns when the current plan carries a discount limited to a set number of payments, because that count restarts after a switch.
5. 05  
### Switch after your OK and read it back  
switch\_member\_plan runs once you approve the summary. The agent then rereads the profile to confirm the two statuses and tells you on which date the new price starts.

### What you get back

Example data

```
Jordan Reyes: 3x Week (149.00 USD/month) to Unlimited (189.00 USD/month).
Timing: next bill date, 1 Nov 2026. 3x Week is Pending Cancel, Unlimited is Pending Active.
Setup fee: 25.00 USD waived as asked.
Discount: Founding Member 10% carried over; it is a 12-payment discount, so its count restarted at 0.
Plan Switch email sent to Jordan and to you.
```

### Other ways to ask

- Upgrade Priya to Unlimited today and put the prorated difference on her first bill.
- Downgrade Sam to 2x Week from his next bill date and keep his discount.
- Everyone on the old Summer Unlimited plan: move them to Unlimited at their next bill date, no setup fee.

Before you automate it

## What PushPress allows, and what to know first

- PushPress Switch Plan only lists recurring plans; a non-recurring plan such as a class pack has to be added to the profile as a new entry.
- With Now, PushPress ends the current plan at once and puts the prorated plan fees, discount included, on the first bill of the new plan.
- PushPress disables Now on a downgrade when the prorated difference is $1 or less, below the Stripe minimum charge, so that downgrade can only happen on the next bill date.
- A PushPress discount with a fixed number of occurrences restarts its count at 0 after a switch; other discounts carry over as they are.
- The Plan Switch automatic email reaches both the admin and the member and can be turned off under Control Panel > Communicate > Automatic.

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

Sources: [PushPress Help: Upgrade or downgrade with Switch Plan](https://help.pushpress.com/en/articles/7908117-core-upgrade-downgrade-member-plan-using-switch-plan-feature) · [PushPress Help: Automatic emails](https://help.pushpress.com/en/articles/5482449-core-communications-automatic-emails-setup-management)

REST

## Call switch\_member\_plan from a script

curl

```
curl https://cotlet.dev/api/v1/pushpress/switch_member_plan \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"member_id":"usr_8f2k41","current_plan_id":"pln_30917","new_plan_template_id":"tpl_unlimited","when":"next_bill_date","waive_setup_fee":true}'
```

Example response

```
{
"member_id": "usr_8f2k41",
"current_plan": {
"plan_id": "pln_30917",
"name": "3x Week",
"status": "pending_cancel",
"ends_on": "2026-11-01"
},
"new_plan": {
"name": "Unlimited",
"status": "pending_active",
"starts_on": "2026-11-01",
"setup_fee": "0.00 USD"
},
"confirmation_email": "sent to member and admin"
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the tool is pushpress\_switch\_member\_plan. Example data.

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

Tools

## PushPress tools this automation uses

__Cotlet PushPress tools used to upgrade or downgrade a PushPress member plan__
| Tool | Parameters |
| --------------------- | ------------------------------------------------------------------------------- |
| list\_members | search, plan\_status, limit, cursor |
| get\_member | member\_id |
| list\_plan\_templates | none |
| switch\_member\_plan | member\_id, current\_plan\_id, new\_plan\_template\_id, when, waive\_setup\_fee |

[All 14 PushPress tools with descriptions](https://cotlet.dev/integrations/pushpress-api-mcp-server#tools)

## Frequently asked questions

### What if Switch Plan is greyed out for a member?

PushPress help puts a greyed-out switch down to a prorating conflict and suggests cancelling the current plan, then adding the new plan as a first-time entry. Cotlet can cancel the old plan but has no tool to add a plan, so the agent reports the conflict and leaves the new plan to you.

## More PushPress automations

- [Cancel a PushPress class and notify booked members](https://cotlet.dev/integrations/pushpress-api-mcp-server/cancel-class-and-notify-members)
- [Review PushPress no-shows and late cancels every week](https://cotlet.dev/integrations/pushpress-api-mcp-server/review-no-shows-and-late-cancels)
- [Pause a PushPress membership for injury or travel](https://cotlet.dev/integrations/pushpress-api-mcp-server/pause-membership)
- [PushPress API and MCP server: every tool](https://cotlet.dev/integrations/pushpress-api-mcp-server)
- [All use cases](https://cotlet.dev/use-cases)

## Give your agent access to PushPress.

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

[Request access](https://cotlet.dev/app/signup?app=pushpress)
