David Kimura PRO said almost 4 years ago on Payment Gateway Basics with Stripe :
This needs to be changed. You cannot scope subscriptions on the customer anymore.
subscription = customer.subscriptions.create(source: params[:stripeToken], plan: 'starter')

to something like this. I haven't tested this, but this is likely the basic flow where you attach the source to the customer (i.e., the payment method) and then you create the subscription.

customer.update({ default_source: params[:stripeToken] })
Stripe::Subscription.create({
  customer: customer,
  plan: 'starter'
})