First realize you do not store a customers bank or credit card information, the service handles that.
Then whatever service you use, start with their documentation.
Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.
Hi, I am new here, and been using Laravel for a while now. I have been requested to create a billing system with recurring invoices payable via EFT or bank. Where can I find a tutorial on how to do this? I know nothing about tasks, queables and cronjobs. Any and all advice would be very much appreciated!
That's a big question with little to go on. I'd suggest looking into Stripe or Braintree as a payment processor. They can handle subscriptions, which do the monthly invoicing/charging automatic. I suggest Stripe/Braintree because Laravel has a nice Cashier package which handles a lot of the harder stuff. https://laravel.com/docs/5.8/billing
Beyond that, like if you're using a different processor, you'd probably have to search around and see if there are tools/packages that make it easy to work in laravel with. The most basic way to invoice someone regularly would be to have a day of the month the user gets invoiced, such as the 10th of every month. Then you create a daily() scheduled task that just scans the db for all invoices that need to be processed on this date (today). If today is the 10th, you query all users whose invoice_date is the 10th, and send an email with a pdf invoice, or whatever you plan to do. If today is the 11th, you'd query each person due on the 11th. Basically just use `date('j') to get the current day of the month and query against that. Of course you'd have to build in logic to handle days that don't exist, such as if the billing date is the 31st of the month (like if they signed up on the 31st), then obviously you can't send an invoice for the 31st for months that don't have 31 days. Every month has at least 28 days, so if they sign up on the 29th/30th/31st, you'd enter it as 28 for the billing date (or something like that) https://laravel.com/docs/5.8/scheduling
The simplest is to use Stripe/Braintree. It basically does everything for you and tremendously simplifies this.
Please or to participate in this conversation.