/api/v1/subscription/manage and send the customer there. Emails Waffo sends
your customers can link to it too — see
Subscription emails to your customers.
Which subscriptions can I get a management link for?
Anything that has actually existed as a live subscription — including ones that have already ended:What does A0028 mean?
A0028 — Subscription is still in progress or has failed and management url is
not available
It means the subscription never became live: the customer has not finished
confirming it, has not authorised the mandate yet, or the subscription closed
before it ever activated. There is nothing to manage, so no link is minted.
It is not a permissions or configuration error, and retrying will not help
while the status is unchanged. What to do instead:
IN_PROGRESS/AUTHORIZATION_REQUIRED— the customer still owes you an authorisation. Send them tosubscriptionAction.webUrlfrom the creation response, not to a management link.CLOSE— the subscription is dead and cannot be revived. Create a new one.
Can a cancelled or expired subscription still be opened?
Yes, and that is deliberate. The customer can still see the plan and their billing history — which is usually exactly what they want after cancelling. What they cannot do there is act on it: payment-method changes are rejected on any subscription that is notACTIVE, and there is nothing left to cancel. So a
terminated subscription’s page is a read-only receipt, not a re-subscribe entry
point. If a returning customer wants the plan back, that is a new subscription
through /api/v1/subscription/create.
How long does a link last, and does a new one kill the old one?
Each call to/api/v1/subscription/manage mints a new, independent link.
Every link carries its own expiry, and the response tells you what it is:
Consequences worth designing around:
- Minting a new link does not invalidate earlier ones. Two links issued
minutes apart both work until each one’s own
expiredAtpasses. Do not rely on re-callingmanageto revoke a link you already sent. - Read
expiredAt; do not hardcode a lifetime. The window is short and is configuration, not a contract. A link is a hand-off, not a bookmark: mint it at the moment the customer clicks through, rather than storing one and mailing it later. - Calling
managerepeatedly is fine — it has no side effect on the subscription.
Can Waffo’s emails point at my own management page instead?
Yes. Whether the management link in Waffo’s customer emails points at Waffo’s hosted page or at the URL you supplied is a per-account setting:
That is what
subscriptionManagementUrl is for, and it is why the field should
point at something a customer can open in a desktop browser rather than an app
deeplink. Switching the setting is a request to your Waffo contact, not a
self-serve toggle.
There is no configuration that removes the management link from the emails
altogether. If you do not want customers routed anywhere by Waffo’s emails, the
lever is to have the emails themselves turned off and send your own — see
Subscription emails to your customers.
What can the customer actually see and do on the page?
See — the plan and its billing history, in more detail than the merchant inquiry API returns:
Do — three things:
The payment-method rules and why adding one creates a zero-amount order are in
Subscription retries & payment methods.
Can I do the payment-method management from my own backend instead?
No. There is no merchant-facing endpoint that adds, replaces, reorders or deletes the payment methods on a subscription. The public subscription API iscreate, inquiry, cancel, manage, change, change/inquiry and
update — none of them touch the bound method list.
What you can do from your own product:
- Read the bound methods and the
canChangePaymentMethodflag from/api/v1/subscription/inquiry, and render your own view of them. - Send the customer to the hosted page to make the actual change.
- Move the customer to a different payment method by doing a plan change
with a different
paymentInfo, which re-authorises at checkout — see Subscription plan changes.
Is cancellation on the page immediate, or at the end of the period?
Immediate. The customer confirms, the subscription moves toUSER_CANCELLED, and no further billing period is opened. There is no
end-of-period option on the page, and /api/v1/subscription/cancel is immediate
too.
That is worth stating plainly because it is the most common mismatch with a
merchant’s own product rules: Waffo cancels the billing, not the
entitlement. If your policy is “keep the service until the paid period runs
out”, you implement that on your side:
- Listen for the subscription status notification.
- On a cancellation, keep the customer’s access until the end of the period they
already paid for — you know that date from
nextPaymentDateTimebefore the cancellation, or from the current period’s end on the billing history. - Revoke access then.
startTime, which keeps the old plan running to the end of its
current period before retiring it. If your real requirement is “downgrade at the
end of the cycle”, that is the mechanism — not cancel.
What status change and webhook do I get when the customer cancels there?
The subscription moves toUSER_CANCELLED, and you receive the subscription
status notification with that status. There is no separate “cancelled on the
hosted page” event.
Treat that webhook as the trigger, not your own records — you did not initiate
this cancellation, so until you process the notification your side still believes
the subscription is active. USER_CANCELLED versus MERCHANT_CANCELLED is how
you tell a customer-initiated churn from one you performed.
Money already collected is not touched by a cancellation. If you want to give the
customer the current period back, refund that period’s charge — see
Refunds.
How far can the page be branded?
The page picks up the checkout appearance and logo configured on the subscription — the samecashierAppearance and brand configuration you use for
checkout — so colours, typography and your logo carry through rather than the
customer landing on an unbranded page.
What is not configurable:
So if your requirement is “the customer must not be able to cancel here”, the
answer is not to configure the page — it is not to send the customer to it, and to
point Waffo’s emails at your own management URL instead.
What language is the page in?
The same resolution Waffo uses for the subscription’s checkout and emails:- The cashier language you set on the subscription, if you set one.
- Otherwise derived from the subscription’s charging currency.
- English as the fallback.