New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Subscription module #572

tatarincev opened this Issue Aug 1, 2016 · 0 comments


None yet
2 participants

tatarincev commented Aug 1, 2016

Functional requirement
Payment plan
Define metadata which will be used to create subscriptions.

Each “Payment plan” should have the following characteristics:
Interval (days, months, years) - billing interval
Interval count - to set more customized intervals (every 5 month)
End interval count - time of life subscription (in interval numbers) or infinitive
Trial period days - subscription trial period in days
Grace period days - period when subscription still be active after expiration
Setup Fee? (Charge Setup Fee Before/after Trial Period)

Assign to catalog products “Payment plan” thereby making the product sold by subscription.

Allows to define new price for “Payment plan” when to product assignment or indicate that the price should take from product price. Thereby can be achieved resulting subscriptions variations. (1 year 100$ per month for 20 user - where 1 year and 1 month interval gets from payment plan, 100$ from product price and 20 users from product variation property).

Allow to make any “Payment plan” changes but it will affected only for new subscriptions.

Subscriptions allow you to charge a payment customer's on a recurring basis. A subscription ties a customer to a particular product and plan you've created.

Each “Subscription” should have the following characteristics:
Id - identifier
Created - date of creation
Customer - link to customer
Order - link to order within subscription was created
Product - link to product which associated with this subscription
Plan - copy of “Payment plan” on the base of which this subscription was created
Status - Possible values are trialing, active, past_due, canceled, or unpaid. A subscription still in its trial period is trialing and moves to active when the trial period is over. When payment to renew the subscription fails, the subscription becomes past_due. After exhausted all payment retry attempts, the subscription ends up with a status of either canceled or unpaid depending on your retry settings.
Trial start - If the subscription has a trial, the beginning of that trial.
Trial end - If the subscription has a trial, the end of that trial.
Current period start - Start of the current period that the subscription has been invoiced for
Current period end - End of the current period that the subscription has been invoiced for. At the end of this period, a new invoice will be created.
Start - Date the most recent update to this subscription started.
Ended at - If the subscription has ended (either because it was canceled or because the customer was switched to a subscription to a new plan), the date the subscription ended

Subscription as entity created when user placed order which contain products selling by “payment plan”. For each line item in order created one subscription.

Invoice should generated for placed order which contain products selling by “payment plan”. Resulting invoice should contains all order products positions and support multiple payments(transactions) list.

Need to support mixed shopping cart - which contains “normal” products and distributed through a subscription.

For products with defined Trial period customer can subscribe to a plan without providing a payment method.

Customer should view self subscriptions history in storefront with possibility to pay unpaid invoice.

Changing subscriptions
Cancellation - By default, the cancellation takes effect immediately. Once a customer’s subscription is canceled, no further invoices will be generated for that subscription. If the customer had paid for the entire billing period and the subscription was canceled part-way through the period, the customer is not credited a refund automatically.

Upgrades/Downgrades - Subscriptions can be changed by switching the plan to which a customer is subscribed. Normally this is a matter of either upgrading or downgrading the subscription, depending upon the price difference between the two plans.

Non-prorated changes (product, billing cycles) - do not trigger any prorated charges or credits. Instead, they simply change the product on the subscription, and the new amount is billed normally at the next normal billing period.
Prorated changes (product, billing cycles) - all prorated sum should be included in next invoice and also should be possibility to preview the cost of a proration before changing the customer’s subscription. This will show what the customer’s next invoice will look like if the change to their subscription is applied.

Changing the subscription amount via changing generated invoice items
Support invoice items
Automatically / Manually generate invoices for each billing period

Subscription notifications


@tatarincev tatarincev added this to the 'Dandelion' milestone Aug 1, 2016

@tatarincev tatarincev added the Epic label Aug 1, 2016

@tatarincev tatarincev modified the milestones: 'Lawn', 'Dandelion' Sep 28, 2016

@tatarincev tatarincev closed this Dec 27, 2016

@tatarincev tatarincev reopened this Dec 27, 2016

@tatarincev tatarincev closed this Jan 12, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment