---
title: "Subscription lifecycle"
description: "The states an invoice and a subscription move through, how extending differs from switching plans, and when remaining days are converted or dropped."
canonical: https://docs.afp.monster/reference/subscription-lifecycle
updated: 2026-08-19
pageType: reference
---

A subscription starts when a payment for a plan settles, runs for the days that payment bought, and ends when those days run out. Buying the same plan again adds days to the running subscription; buying a different plan replaces it and converts the days you had left. Expiry is noticed the next time you do something that needs an active subscription, not at the minute it falls due.

Payment is by cryptocurrency. Choosing a plan and a term creates an invoice with a checkout link, and AFP re-checks that invoice with the payment provider until the provider reports a final result.

## Summary

| State | Applies to | What it means | Leaves this state when |
|---|---|---|---|
| Pending | Invoice | Created, checkout link issued, no payment confirmed yet | Payment is confirmed, you cancel it, or you start another payment |
| Confirmed | Invoice | Paid for the amount asked, or over it | Never — confirmation is what starts or extends a subscription |
| Cancelled | Invoice | Closed without payment, by you or by a newer invoice | Never |
| Failed | Invoice | The payment provider reported a failure result | Never |
| Active | Subscription | The one subscription in force on the account | Its days run out, a different plan replaces it, or it is transferred away |
| Expired | Subscription | Its days ran out and an access check noticed | Never — a payment creates a new subscription instead of reviving this one |

## From payment to subscription

```d2 title="An invoice from creation to confirmation, and how a confirmed invoice starts, extends or converts a subscription"
direction: down
pick: Pick a plan and a term
invoice: "Invoice created, pending\ncheckout link issued"
recheck: "AFP re-checks the invoice\nwith the payment provider"
confirmed: Invoice confirmed
cancelled: Invoice cancelled
failed: Invoice failed
active: "Is a subscription\nalready active?" {shape: diamond}
fresh: "New subscription starts\nwith the days you bought"
extended: "Days added to the\nrunning subscription"
converted: "Remaining days converted,\nold subscription deactivated"
retried: "Comments that failed while\ninactive are re-attempted"
pick -> invoice -> recheck
recheck -> confirmed: paid, or overpaid
recheck -> cancelled: you cancel, or re-pay
recheck -> failed: provider failure
confirmed -> active
active -> fresh: No
active -> extended: "Yes, same plan"
active -> converted: "Yes, different plan"
fresh -> retried
extended -> retried
converted -> retried
```

## Pending invoice

- **Created by:** choosing a plan and a term
- **Holds:** the amount, the network the payment arrives on, and a checkout link
- **Open for:** as long as it takes — no timer closes it

One invoice can be pending per account. Starting a payment cancels every earlier pending invoice on the account, so the checkout link you opened most recently is the only one that can still settle.

An invoice you never pay stays pending until you cancel it from your payment history, until you start another payment, or until the payment provider moves it to a final result of its own.

:::caution
Pay from the checkout link of the most recent invoice. Reopening an older link pays an invoice that a later payment attempt already cancelled.
:::

## Confirmed invoice

- **Confirmed by:** a payment matching the amount asked, or exceeding it
- **Effect:** creates or extends the subscription, and links the invoice to it
- **Also:** records the payment towards the commission of the account that referred yours

Confirmation is the only event that starts or lengthens a subscription, and the re-checks run without you, so the subscription appears whether or not you are watching the app when the payment settles.

Comments that failed while the subscription was inactive are re-attempted as part of confirmation, so a lapse in coverage does not quietly lose them.

## Cancelled or failed invoice

- **Cancelled by:** you, from payment history, while the invoice is still pending; or by a newer invoice
- **Failed by:** a failure result from the payment provider
- **Effect on the subscription:** none

Cancelling is refused once the invoice has reached a final result: an invoice confirmed moments earlier cannot be cancelled, and neither can one already cancelled. Both refusals are reported rather than accepted silently. The invoice stays in your payment history either way, with the plan it was raised for.

## Active subscription

- **How many:** one per account
- **Runs:** from its start date, for the days it holds
- **Shown:** with your account details, together with its plan

An active subscription is what every gated action checks: creating a campaign, linking pages, starting a cleaner job, moderating comments by hand, and processing comments that arrive on your pages. [Plan quotas](/reference/plans-and-quotas) lists those checks and the allowance each applies.

Expiry is the start date plus the days held, so adding days moves the end date outward instead of restarting the clock.

## Expired subscription

- **Detected by:** an access check, not a timetable
- **Effect:** the subscription is marked inactive, and the action that triggered the check is refused
- **Recovery:** a confirmed payment creates a new subscription

AFP compares the expiry date against the current time whenever something needs an active subscription, and marks the subscription inactive at that moment. An account nobody touches keeps a subscription marked active past its end date until the next check runs.

Automation stops with the subscription. For up to five days either side of the expiry date, comments arriving on a connected page are recorded as subscription errors instead of being processed — [Moderate comments](/guides/comment-moderation) covers finding those and retrying them.

## Extending the same plan

- **Applies when:** the plan you buy is the plan your active subscription is already on
- **Days:** the purchased days are added to the running subscription
- **Subscription:** the same one, with the same start date and a later end date

A purchase grants the plan's duration multiplied by the months in the term, and extending adds that figure to whatever the subscription still holds. [Plans and billing](/guides/plans-and-billing) covers choosing the term and paying for it.

:::caution
On an account that signs in with an email address, a payment confirmed while a subscription is already active can leave that subscription unchanged instead of extending it. Check your remaining days once the invoice confirms, and [open a support ticket](/guides/support-tickets) quoting the invoice if the count did not move. 
:::

## Switching to a different plan

- **Remaining days:** converted, not discarded
- **Conversion:** the days you have left, multiplied by the cost of the plan you are leaving, divided by the cost of the plan you are joining, rounded to whole days
- **Old subscription:** deactivated, while a new one starts with the converted days added to the days you bought

Moving to a more expensive plan carries fewer days across, because a day on a cheaper plan is worth less than a day on a costlier one. Moving to a cheaper plan carries more days across for the same reason.

Switching away from the trial plan is the exception: nothing is converted, and the new subscription holds only the days the purchase granted.

## Transferring a subscription

- **Identified by:** a transfer code on the source account, in the form `AFPM-XXXX-XXXX`
- **Redeemed by:** the receiving account, in its settings
- **Requires:** an active, non-expired subscription on the source account, and two different accounts

The receiving account redeems the code, and the subscription moves across with the days it has left. A subscription already active on the receiving account is deactivated, and its remaining days are converted onto the arriving subscription by the same cost ratio a plan switch uses.

Redeeming regenerates the source account's code, so each code works once, and the source account is left with no active subscription. [Manage profiles under one account](/guides/profiles-and-master-accounts) covers where the code lives.

## Expiry warnings

- **Raised when:** an access check finds seven days or fewer remaining
- **Carries:** the number of days left
- **Repeats:** once per day, and once per remaining-days value

The warning rides on the same access check that detects expiry, so it arrives the next time you use AFP inside the final seven days rather than on a fixed schedule. [Notification catalogue](/reference/notifications) covers the channels it reaches.

## Notes

- A confirmed invoice is linked to the subscription it paid for, which ties a plan switch back to the payment that caused it.
- Days are whole days throughout, and conversions on a switch or a transfer are rounded, so a converted balance can sit a day away from your own arithmetic.
- A new account begins with a trial subscription on the default plan, which is granted rather than bought and leaves no invoice in your payment history.

## Related

- [Plan quotas](/reference/plans-and-quotas) — what each plan governs, and which action each allowance blocks.
- [Plans and billing](/guides/plans-and-billing) — buying a plan, cancelling an invoice, and reading your payment history.
- [Notification catalogue](/reference/notifications) — the subscription-expiring warning and where it is delivered.
- [Moderate comments](/guides/comment-moderation) — retrying comments that errored while a subscription was inactive.
