Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

cboxdk's avatar

Add subscription manually without creditcard

Hi,

I have a couple of customers who dosn't have a creditcard and would like to pay manually by invoice. That's all fine with enterprise packages.

However, if i add a subscription, the customer isn't able to cancel og switch package as no stripe subscription is available.

We also have a couple of customers who already paid on our old platform and needs to be transfered to the system including already prepaid time. Same problem, but a different usecase though.

Is there a way to handle a manual subscription or what's the solution to solve this in your opinion?

0 likes
7 replies
chrisland's avatar

@cboxdk

There's a way to manually create customers through the Stripe Dashboard, but it wouldn't work in your situation because Stripe requires a payment method to be linked to the customer's account before you can assign them to a subscription manually.

You could probably spoof it with a $1 plan and archiving but it would get ugly. Not sure how archiving exactly works, but I think you would have to subscribe all customers at once then archive the plan.

Keep in mind I never tested the spoof.

cboxdk's avatar

Thanks for the ideas @ChrisL

But it seems there's no way a subscription can exist without adding the customer, creditcard and subscription in Stripe.

Whenever a user tries to cancel, upgrade or downgrade, stripe is called as it tries to make the corrections to the subscription.

I guess i will need to rewrite the spark code to accept a manual subscription. Or well, create a manual subscription not using cashier code.

That's going to be one huge pain in the a...

nickf's avatar

What about adding a trial date to the customer that is what the subscription would be?

I just tried creating a new customer through my Stripe dashboard and was able to subscribe a customer to a plan and manually set the trial date without adding credit card details. Maybe this is what you're after?

cyclonedigital's avatar

Please please please please add the ability to manual subscriptions; it will change my life!

We have a similar scenario, customers who have to pay outside of credit card/Stripe environment and I can't manually enter a plan to ensure they have the right access to their tier. If I use Trial they can see everything, even bits they haven't paid for.

It would be amazing!

2 likes
martinbean's avatar

@cboxdk You should be storing subscriptions in your own database.

When you create a subscription in Stripe, create a record in your database. When someone cancels their subscription via Stripe, you’ll receive a web hook and can mark the subscription as cancelled in your application.

It’s easier to check the status of a subscription in a local database than making an HTTP request to a third-party service.

EDIT: Apologies, realise this is tagged “Spark”. I realise the above now probably isn’t an appropriate answer now!

drbob's avatar

Same here, a strong desire to be able to service customer that cannot (or will not) use a credit card. I absolutely love the current robust integration with Stripe, it will cover probably 90% of our customers. But we don't want to reject the other 10% ...

The scenario that I'd prefer most is to be able to offer prepaid accounts next to the monthly subscriptions. Like that someone can add $100 to his or hers account (thru Paypal for example) and that costs will be substracted from the credits in the account.

It might take a while before we're going to build this ourselves, and I'm happy to share our solution when we have it. But if someone else has this sooner, I'd really like to hear more on how you managed to do it.

1 like
ejdelmonico's avatar

You can customize whatever you want by using the features available in Cashier. Spark is built on top of Cashier but is very specific in what you can do. When you write your code, just make sure you are storing your data like Spark does in the database.

1 like

Please or to participate in this conversation.