Yes, you can charge customers in Stripe without using their Subscriptions logic.
To do this you'd want to collect card information on your front-end, then save it to a Customer in Stripe; you would store the id of this customer in your database.
When it comes to charge the user, you can have your application charge the saved card on a Customer you've created within Stripe.
# Create a Customer:
customer = Stripe::Customer.create({
source: 'tok_mastercard',
email: '[email protected]',
})
# Charge the Customer instead of the card:
charge = Stripe::Charge.create({
amount: 1000,
currency: 'usd',
customer: customer.id,
})
# YOUR CODE: Save the customer ID and other info in a database for later.
# When it's time to charge the customer again, retrieve the customer ID.
charge = Stripe::Charge.create({
amount: 1500, # $15.00 this time
currency: 'usd',
customer: customer_id, # Previously stored, then retrieved
})
See https://stripe.com/docs/saving-cards for more