Free plan to Paid plan: "Can't combine currencies on a single customer. "

2,096 views
Skip to first unread message

Gildas Lormeau

unread,
May 20, 2015, 8:39:42 AM5/20/15
to api-d...@lists.stripe.com
Hi,

We want to attach a paid plan to a subscription which was previously attached to a free plan. Indeed, by default, when a user creates an account in our service, we automatically create a subscription to a free plan.

The problem is that the free plan costs 0$ and the new paid plan we want to attach to the subscription is in €. Unfortunately, Stripe does not allow this and says it "Can't combine currencies on a single customer. ". Is there any way to fix this issue? I can understand the restriction when the original plan is not free but when it's a free plan I do not expected to have this kind of issue since $0 = 0€...

Regards,
Gildas

Remi J.

unread,
May 20, 2015, 8:57:37 AM5/20/15
to api-d...@lists.stripe.com
Hey Gildas,

Thanks for writing in about this, I'm happy to help! Unfortunately,
there is no way to do this at the moment. Once a subscription or an
invoice is created on a customer, he is sort of locked into that
currency. You can't create a new subscription for that customer in a
different currency from now on. Even though the plan is "free", we
still create invoices that would allow you to add invoice items and
charge the customer and those invoices are in a specific currency.

The only solution here would be to ask your customer for his card
details again and create a separate customer so that you can subscribe
him to a plan in a different currency. Otherwise, adapt your code to
not create that free subscription by default at first or at least in
the currency the customer would end up paying once he decides to
upgrade.

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

Gildas Lormeau

unread,
May 20, 2015, 9:13:22 AM5/20/15
to api-d...@lists.stripe.com
Hi Remy,

Thanks for the quick response.

The only solution here would be to ask your customer for his card
details again and create a separate customer so that you can subscribe
him to a plan in a different currency.

Since this use case is an exceptional case for us (it's done by hand, our UI does not permit to pay in something else than $), couldn't you fix this issue our your end without asking our customer to set the credit card details again?

 
Otherwise, adapt your code to
not create that free subscription by default at first or at least in
the currency the customer would end up paying once he decides to
upgrade.

So, it looks like free plans are quite weird. Indeed, it means that when a user will subscribe to the free plan, we will have to ask which currency he will use, even if it is free. Anyway, I wished I would have been warned of this issue via the tutorial or the developer guide because the impact is quite important.

Regards,

Gildas

Remi J.

unread,
May 20, 2015, 9:19:21 AM5/20/15
to api-d...@lists.stripe.com
Hey Gildas,

Unfortunately, that's not something we could quickly change or update
on our end at the moment even though we'd like to improve this in the
future. For now, you're correct, you would either have to ask for the
currency upfront or not subscribe your customer to a free plan and
handle the logic on your end until he decides to finally upgrade.

As for the documentation, this issue is covered at the end of the
subscriptions guide [1]. I'd love to know where you would have liked
to see this mentioned based on the documentation you read so that we
can make it clearer in the future.

All the best,
Remi

[1] https://stripe.com/docs/guides/subscriptions#working-with-local-currencies

On Wed, May 20, 2015 at 9:13 AM, Gildas Lormeau

Gildas Lormeau

unread,
May 20, 2015, 9:43:53 AM5/20/15
to api-d...@lists.stripe.com
That is really unfortunate from a customer relationship point of view to force the user to enter his credit card details again.

I think this issue is important enough to describe it here: https://stripe.com/docs/guides/subscriptions#the-lifecycle-of-a-subscription because I would never expect a tiny paragraph at the end of the page, with no direct link in the table of contents, and a vague label to describe a strong limitation like this one.

Regards,

Gildas

Remi J.

unread,
May 20, 2015, 9:49:13 AM5/20/15
to api-d...@lists.stripe.com
Hey Gildas,

That's really useful feedback and I wanted to thank you for taking the
time to talk this over. I'm sorry that this got you confused and that
you now have to adapt your integration to avoid this issue. I'm also
going to discuss this internally to see how we could improve this in
our documentation and whether this is something we could fix in the
future.

All the best,
Remi



On Wed, May 20, 2015 at 9:43 AM, Gildas Lormeau

Matthew Arkin

unread,
May 20, 2015, 10:35:42 AM5/20/15
to api-d...@lists.stripe.com, api-d...@lists.stripe.com
Note free plans don't require credit card info, so you could create a new customer without an attached card, or create a free plan in the currency of the customer's currency via the api 


Sent from Mailbox

Gildas Lormeau

unread,
May 20, 2015, 11:07:43 AM5/20/15
to api-d...@lists.stripe.com
Hi Matthew,

Note free plans don't require credit card info, so you could create a new customer without an attached card

Yes, but as soon as the free plan is attached to the subscription, the customer currency will be set to the currency of the free plan and you will never be able to change it.

Gildas

Matthew Arkin

unread,
May 20, 2015, 11:15:19 AM5/20/15
to api-d...@lists.stripe.com
The other alternative I’ve seen implemented a few times is to just not use Stripe subscriptions for free subscriptions. Only subscribe them or charge them once they have chosen a currency, but once they’ve chosen it its locked into place. 

The free subscription would be handled in your own application code (like if customer has no Stripe subscription, then give basic privileges).


The reason that free plans have to generate 0 (currency of your choice) invoices is to handle cases like set-up fees, usage based billing (like a free base but $5 per gigabyte), etc. So once that 0 invoice is created, by the nature of invoices it has some sort of attached currency.

The horrible hack to get around not asking your customer to enter a new credit card, or to handle working around this currency issue in your application logic would be to abuse Stripe Connect’s shared customer feature allowing you to create a new token. Its really a horrible hack and an abuse of the existing APIs, but it would allow for a new token.

--
Matt Arkin
Kollective Solutions

signature.asc

Jonathan Parker

unread,
May 20, 2015, 11:22:46 AM5/20/15
to api-d...@lists.stripe.com
is it a requirement that the user is on the free plan when they initially sign up? If you're not billing them for anything, what is the need for the free subscription?

If not, you could simply create the customer, attach the credit card, and then when they need the subscription, put them on the appropriate plan.

Gildas Lormeau

unread,
May 20, 2015, 11:28:07 AM5/20/15
to api-d...@lists.stripe.com

On Wednesday, May 20, 2015 at 5:15:19 PM UTC+2, Matthew Arkin wrote:
The other alternative I’ve seen implemented a few times is to just not use Stripe subscriptions for free subscriptions. Only subscribe them or charge them once they have chosen a currency, but once they’ve chosen it its locked into place. 

Yes, I think this is the best solution.


The reason that free plans have to generate 0 (currency of your choice) invoices is to handle cases like set-up fees, usage based billing (like a free base but $5 per gigabyte), etc. So once that 0 invoice is created, by the nature of invoices it has some sort of attached currency.

I guess you're right. Maybe this is the kind of information that should also appear clearly in the documentation.
 

The horrible hack to get around not asking your customer to enter a new credit card, or to handle working around this currency issue in your application logic would be to abuse Stripe Connect’s shared customer feature allowing you to create a new token. Its really a horrible hack and an abuse of the existing APIs, but it would allow for a new token.

Thanks for the info, I was not aware of this hack. However, I think handling customers with no subscriptions as you suggested above is simpler to implement ;) 

Gildas Lormeau

unread,
May 20, 2015, 11:35:09 AM5/20/15
to api-d...@lists.stripe.com

On Wednesday, May 20, 2015 at 5:22:46 PM UTC+2, Jonathan Parker wrote:
is it a requirement that the user is on the free plan when they initially sign up? If you're not billing them for anything, what is the need for the free subscription?

If not, you could simply create the customer, attach the credit card, and then when they need the subscription, put them on the appropriate plan.


No, it is not a requirement. When we added the payment feature, it seemed the right way to implement the free offer in our service: i.e. a free offer = a free plan. It was a mistake :p.
Reply all
Reply to author
Forward
0 new messages