Back date a Subscription?

1,327 views
Skip to first unread message

Nate Richards

unread,
Feb 7, 2018, 9:55:00 AM2/7/18
to Stripe API Discussion
So we have a paper contracting process which yields a contract signed by hand with an effective date.  By the time we get it to post the data to Stripe (either by API or via the dashboard) the effective date (for billing) has passed - typically by several days to a week or so.

How can we reflect a start date for a subscription that is in the past?

Would we do a "one time" fee for the "catch up" partial month, and then a free trial to the "month-aversary" for the next billing cycle?

Ideally I would just back date the subscription so it is easier to "read" alongside the paper (scanned PDF or Docusign) document.

Thanks,

Nate

Jonathan Redford

unread,
Feb 7, 2018, 7:10:40 PM2/7/18
to Stripe API Discussion
Hi Nate,

I faced a similar problem not too long ago and as far as I know, there's no way to back-date a subscription.

I have a web-app where clients fill out a form, and can choose to pay with a credit card or via bank transfer. Stripe doesn't handle bank transfers but I still wanted to utilise their subscription functionality as the majority of subscriptions would be paid via credit card.

To allow people to pay via bank transfer, yet still start their subscription at the point of form submission was a bit of a challenge but here's my work around:

The only way to add a subscription without a payment source is on a trial so through the API I put them essentially on a 4 minute trial (set "trial_end" to a 4 minutes from the current time). After that, they're subscription is in the system as 'past_due' and an invoice in generated - when the invoice in created Stripe will attempt to charge the user but since there's no payment source, it fails. Once we receive the funds via bank transfer, we manually close and forgive the invoice, activating their subscription with the billing date being the time they submitted the online form. If they don't pay, the Stripe settings make the subscription inactive after x amount of days.

So if you know the effective date, this could be a solution.

Nate Richards

unread,
Feb 7, 2018, 8:19:03 PM2/7/18
to api-d...@lists.stripe.com

Right – my problem is I want to charge them a full month for really 3 weeks and have the true annuity of the subscription reflected vs. the “first factional month” date.  I could do two subscriptions maybe, one for a fractional month, one for 11 months, then renew for 12…? Who knows..

 

Nate

 

Nate Richards
President
Energy Frameworks
m: 832-721-3412
e: na...@energyframeworks.com

CORE: the most comprehensive retail energy sales & commissions management platform in the world. Processing over 20 TWh and 6 BCF of new business annually.

Join the COREvolution! Request a Demo now.
https://energyframeworks.com/contact-us/request-a-demo/

--
You received this message because you are subscribed to the Google Groups "Stripe API Discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to api-discuss...@lists.stripe.com.
To post to this group, send email to api-d...@lists.stripe.com.
Visit this group at https://groups.google.com/a/lists.stripe.com/group/api-discuss/.

 

Remi J.

unread,
Feb 7, 2018, 9:23:13 PM2/7/18
to api-d...@lists.stripe.com
Hey Nate,

At the moment, this is not something that the API supports. You can not backdate a subscription or force it to start in the past. There are multiple approaches that you can take depend on what's the most important about the state.

The first one is what Jonathan advised. You create the subscription with a short trial period so that it does not trigger the first charge. When you get the invoice a few minutes later you close it and you wait to receive the contract. Once you do, you can open the invoice again and charge the customer as expected. If the payment is done out of band you would simply forgive the invoice instead.

Another solution is to wait for the contract to be signed. When it is, you create an invoice item fo the expected plan amount. You can then put the customer on a trial period until their next payment date. This ensures that you charge the correct amount but prevents having the correct start date or having proration.

Yet another solution would be to use the `billing_cycle_anchor` parameter. This parameter is getting officially shipped soon (though it was undocumented before).

At creation time, passing a non-now value for `billing_cycle_anchor` allows you to set up a subscription to have its first "regular" billing date be at a specified point in the future.  In particular (and unlike `trial_end`) billing_cycle_anchor lets you make a prorated charge for a fraction of the month, and then "snap" the billing cycle to the day that you desire.

So, for instance, if on the 20th of January you did a create subscription request with `billing_cycle_anchor` equal to February 1st, your customer would immediately be charged for about 1/3 of a month, and then subsequently be charged the full amount on the 1st of each month, going forward.

The benefit of this is that the subscription is not on a trial and you get the prorated amount for the rest of the period until their next payment date. The downside is that you can't easily charge for the full amount upfront.

Hope this helps!
Remi

To unsubscribe from this group and stop receiving emails from it, send an email to api-discuss+unsubscribe@lists.stripe.com.


To post to this group, send email to api-d...@lists.stripe.com.
Visit this group at https://groups.google.com/a/lists.stripe.com/group/api-discuss/.

 

--
You received this message because you are subscribed to the Google Groups "Stripe API Discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to api-discuss+unsubscribe@lists.stripe.com.

Nate Richards

unread,
Feb 8, 2018, 7:42:53 AM2/8/18
to api-d...@lists.stripe.com
Ah I like the anchor approach, and seems like that combined with an invoice for the time between contract effective date and anchor date could make up the difference.  Thanks!

Nate Richards
CEO, Energy Frameworks

The most comprehensive retail energy sales and commission management solution in the world!


From: 'Remi J.' via Stripe API Discussion <api-d...@lists.stripe.com>
Sent: Wednesday, February 7, 2018 8:22:49 PM
To: api-d...@lists.stripe.com
Subject: Re: [stripe-api-discuss] Re: Back date a Subscription?
 
To unsubscribe from this group and stop receiving emails from it, send an email to api-discuss...@lists.stripe.com.

Marc Rohloff

unread,
Feb 8, 2018, 9:32:34 AM2/8/18
to Stripe API Discussion

I would think that you would be able to do something similar to the anchor by setting a trial end date when you create the subscription.

Marc

Adam Reis

unread,
Mar 13, 2019, 7:50:38 PM3/13/19
to Stripe API Discussion, na...@energyframeworks.com
Is backdating or starting a subscription with a past date something the API will ever support?

I just naively removed someone's current monthly subscription which started on the 1st of this month, and voided their invoice, thinking I could simply put them on an annual sub starting on the 1st of this month. Well, that didn't work, so now I can't bill them for this month anymore unless I jump through some hoops like adding a line item for 1 month extra (forcing them to pay for 13 months) or sending a manual invoice (forcing them to make 2 payments).

Remi J.

unread,
Mar 13, 2019, 7:58:14 PM3/13/19
to api-d...@lists.stripe.com, na...@energyframeworks.com
Hey Adam,

We're working on this feature right now and we're adding a `backdate_start_date` parameter to the Create Subscription API which would let you do what you're trying to achieve!

The feature is in private beta but it's stable so if you reach out to our support team [1] and ask for access they should be able to help you!

Hope this helps,
Remi


--

Adam Reis

unread,
Mar 13, 2019, 8:34:19 PM3/13/19
to api-d...@lists.stripe.com, na...@energyframeworks.com
Brilliant that's awesome, glad to hear. 

Thanks, 
Adam 

howard...@gmail.com

unread,
Nov 15, 2021, 12:34:40 PM11/15/21
to Stripe API Discussion
Hello Remi & the Stripe devs,

    The backdate_start_date parameter is useful, but it would be better if: (a) the parameter was accessible via the Dashboard at subscription creation and (b) it could be applied to existing subscriptions as well. 

Thanks,
   Howard
Reply all
Reply to author
Forward
0 new messages