Developer reference
Subscription lifecycle
Treat recurring relationships as future context and actual charges as independent financial evidence.
A subscription is a recurring relationship with expected cadence, amount, currency and status. Its next date helps answer what is coming.
Plan lifecycle
Create the relationship with known details. Change, pause or end it when future expectations change. These actions affect the plan; they do not erase earlier payments or issue a refund.
Unknown or variable amounts should remain explicit instead of being projected as a fixed certainty.
Payment lifecycle
A due occurrence is not automatically a completed payment. An actual recorded movement, or a supported match to payment evidence, establishes what settled.
For a fictional USD 8 monthly service that settles as EGP 405 on 5 October 2026, the USD expectation and EGP bank movement have different roles. Keep the original charge evidence when available.
Duplicate prevention
Before recording a charge manually, inspect imported activity. A plan and its payment can both be valid, but two recorded copies of the same payment are not justified by the plan existing.
A credit-card repayment should also stay distinct from the original subscription purchase.
Service and UI review
Check next-date calculation, status transitions, actual payment links and unavailable reads. After changing a plan, refresh the upcoming read model; after recording money, refresh the affected financial reads.
See customer subscription guide, bills and ledger semantics.