Subscriptions & payments

Cancel or revoke a subscription

Stop a client’s subscription from your side, decide whether they keep access to the end of the paid period, refund if needed, and know what the client sees.

4 min readLast updated Oct 23, 2026

After these steps the client's subscription no longer renews. You choose whether they keep access until the end of the period they already paid for, or lose it right away, optionally with a refund.

1

Open the client's access record

Go to Products (/products), open the product and switch to the Access tab. Find the client in the list. Open the row menu (⋮) and choose Cancel subscription. The same action is on the client's detail page under the Actions button. It is not available from Transactions. On the customer profile under Customers, the Access tab offers Revoke with refund…, which opens the same form as Actions.

2

Decide whether access ends now

From the row menu (⋮) the Delete the client window opens. From Actions and from the customer profile the same window is titled Archive the client. The form's first switch is Revoke access to product:

  • Off: "The client keeps access until the end of the paid period and the subscription will not renew automatically. No refund, no archiving."
  • On: the access record is archived now and the client loses access immediately.
3

Choose the refund

With access revoked now, pick under Refund: No refunds, Refund of the last payment: amount, or The funds were manually refunded. The Refund field appears only in the Archive the client window (from Actions or the customer profile), because the row-menu window does not know the last order. To refund, open the access through Actions. Keep Cancel the Stripe subscription ticked so the gateway stops charging. The form reminds you: "Remember that if you have issued an invoice for this order, you must manually correct it." Turn on No notifications when you end access over a missed payment: no automations or access-ended e-mails run for this customer.

4

Confirm

Click Delete in the Delete the client window or Archive in the Archive the client window. With the switch off you see "Subscription renewal cancelled. The client keeps access until the end of the paid period." With it on, the client moves to Archived on the Access tab, is removed from any community bundled in their plan, and the row menu of the archived record offers Restore access.

Good to know

A client with a limited-cycle subscription that does not allow cancellation before the last payment cannot cancel from the client area, but you always can from this form.

Follow the refund

A refund of the last payment goes through the payment gateway, and some gateways confirm it later. The order shows a tag in the orders list, in the order details and on the client's orders:

TagMeaning
Refund requestedThe gateway accepted the refund and will confirm it, usually within minutes, sometimes days. Access is already revoked.
Refund confirmedThe money went back to the client. The Order refunded workflow trigger fires at this moment.
Refund failedThe gateway did not return the money. Access stays revoked: refund the client in the gateway panel, or restore their access.

Revoking access without a subscription

For free grants and one-time purchases the row menu shows Delete instead of Cancel subscription; it opens the same Delete the client window. From a customer profile in Customers (/customers) you can also use Revoke access and tick the products: "This is reversible - you can grant access again at any time. Orders and history are kept." Products billed by a live subscription are listed as skipped ("active subscription") with the hint "These products are billed by a live subscription. Cancel the subscription from the product page first:". Revoking never stops billing; cancel first.

If a client is already archived but the gateway still charges them, their profile offers Cancel subscription in Stripe: "Access is already revoked, but the payment provider still bills this customer. This stops future charges; the current period is not refunded."

What the client sees

  • In the client area of your storefront, the product's Access details card shows Cancelled and the End date, with a Resume subscription button until the period ends.
  • The client can cancel on their own from the same card with Cancel subscription; access then runs to the end of the paid period and you receive "⚠️ Client canceled subscription [product]". During a free trial the cancellation ends the trial on its scheduled date without any charge.
  • The mobile app has no cancel button and no access-period card; subscription management is browser-only.

From an integration or the agent

The Workspace API cancels with POST /products/{productId}/clients/cancel-subscription (body: the client's email) and revokes with POST /products/{productId}/clients/revoke-access. Revoking checks the subscription in Stripe: when Stripe already ended it (for example, instalments stopped coming in), the access is revoked and the answer says subscription: "already_ended". When the subscription is still live, the answer is 409 with its Stripe status; with cancelSubscription: true the subscription is canceled and the access revoked in one step. silent: true revokes without e-mails or automations. Canceling a subscription Stripe already ended answers alreadyCancelled: true. The AI agent can cancel a client's subscription for you after you approve the action, and revoke access whose subscription already ended in Stripe.

Was this article helpful?

Related articles

Spotted something off? Tell us at support@zanfia.com.