Where this file lives
- This path (
docs/payments/scheduled-payment-subscription-eligibility.md) is inside the rakletv3 repo for review and maintenance.- This document describes the current eligibility rule for subscription options in the manager scheduled payment modal.
Scheduled Payment Subscription Eligibility¶
Generated: 2026-05-06
Repo: rakletadmin/rakletv3
Focus: Manager scheduled payments that are created from an existing contact subscription.
Purpose¶
The manager "Add Scheduled Payment" modal can create recurring scheduled payments. When the payment type is Subscription, the subscription dropdown must not offer subscriptions whose plan cannot produce a recurring charge.
Scope¶
This rule applies to the AngularJS manager modal implemented by modal-update-payment.controller.js and the contact subscriptions API response from V2ContactsController.GetSubscriptions().
Business Rules¶
| Subscription plan state | Dropdown eligibility |
|---|---|
MembershipFee > 0 and MembershipFeeInterval != PaymentInterval.OneTime |
Eligible |
MembershipFee <= 0 |
Not eligible |
MembershipFeeInterval == PaymentInterval.OneTime |
Not eligible |
| Missing plan data | Not eligible |
Implementation Notes¶
CustomMembershipDto.CanCreateScheduledPayment() owns the eligibility predicate. V2ContactsController.GetSubscriptions() exposes onlyScheduledPaymentEligible; when the scheduled payment modal calls the endpoint with this flag, the API returns only paid recurring subscriptions. ContactService.getSubscriptions() avoids overwriting the shared unfiltered subscription cache for these filtered calls, so invoice and one-time payment flows keep their existing subscription list behavior.
QA Checklist¶
Open the manager contact membership screen and create a scheduled payment. After switching Payment Type to Subscription, verify that paid one-time subscriptions and free subscriptions are absent from the Subscription dropdown, while paid recurring plans such as monthly or yearly plans remain selectable.