@crypt.001111101 Payments are taken via a client-side approach such as Stripe Elements, and a subscription is created in your database via a webhook.
You’d do well to have a good read through of the Cashier docs until you understand them, as you’re started many threads around it where you’re asking questions that are covered in those docs.
@martinbean Maybe I didn't express myself correctly. My client-side code is literally copied from "Billing with Laravel Cashier" lesson. And what do you mean by "a subscription is created in your database via a webook"? I just opened a new NGROK tunnel and started Laravel cashier webooks pointing to my NGROK link so I can test what you've said and without the second code I posted above the subscription is not creating after "successful" payment.
@crypt.001111101 Stripe is an API. It’s only going to do what you tell it to. So if it’s charging customers twice, then that’s because you’re executing two requests to charge a customer somewhere.