Show HN: BillaBear – Self-Hosted SaaS Subscription Management and Billing
github.com
github.com
> Is BillaBear Open Source?
> No. BillaBear is released under the source-available license Business Source License. You can find it in the license.md. This is the same license as used by Sentry, CoackroachDB, and many more.
> After 3-years from the release date of a version, it will then become open-source.
If your main customer base is other SaaS providers, then making the app impossible to host on the same network or customize is essentially a bait-and-switch poison pill.
Companies are not obligated to make their source code available (excl: copy-left, where they are).
Those that do, often choose to do so in a way that balances aiding a community, and growing their business.
That's a good thing IMO. Being commercially savvy, and ensuring the company that authors software today, will be here tomorrow, is good for the software, and therefore, for it's community.
I don't understand where the sense of entitlement comes from that it's OK to shame/berate/insult a company who publishes their source code, because of the restrictions they elected to impose.
Companies like Lago are small startups, who need to pay the staff to author the software. They also created a company to generate profits. Electing to do so under an Open Core model is a good thing - as we get Open Source software as a side-effect.
They have no obligation to do so under a permissive license. That they do so under any license should be celebrated, IMO.
> many new YC open core companies are doing this now.
Great! Long may this continue. Companies that are open-core are beneficial for everyone. Splitting hairs over the license they elect seems ungrateful IMO.
They are doing it as a growth hack, to ride the publicity of being open source without allowing any of their actual customers to benefit from it. They are not doing it out of the goodness of their hearts or altruism. The class of software they provide are next to useless for non-commercial customers. If they are not open source, they won't get the free attention and eyeballs. It is very much a bait and switch, and they very much deserve to be insulted and dragged through the mud for their bullshit. Don't apologize for their bad behavior, Open Source is not a magic panacea that waives all ethical judgment.
> "How much does BillaBear cost? To get pricing email sales@billabear.com."
I’m in a position where I need to build something like this, but there’s still a lot of things I haven’t dealt with. The thing I’m building could potentially have thousands of different custom subscription plans - can this accommodate that?
Also, how tightly coupled to Stripe is it? My other concern is that Stripe shuts down accounts so whatever solution I settle on, I’m looking for a “dumb pipe” approach where the vast majority of things are handled by the software and the payment processor can be replaced quickly.
Also I tried to go to your user documentation and got a 403 forbidden error.
This confused me -- is it standalone, or is it a front-end for Stripe?
FYI, the links for "User Documentation" and "Technical Documentation" in your readme.md are pointing to the wrong place.
It's both. Which is a bit confusing to be fair. My main idea was to target folk who are using Stripe Billing but want to migrate away or have more control over things. So you can continue to use Stripe Billing and use BillaBear for email templates, invoices, subscription management and have invoice customers which are separate.
Or you're able to have a complete standalone billing process which just uses Stripe for payments. You're also able to migrate away from Stripe Billing to a standalone billing system by importing data from Stripe and then disabling the Stripe billing - which will go through and cancel the subscriptions and then bill them manually.
> FYI, the links for "User Documentation" and "Technical Documentation" in your readme.md are pointing to the wrong place.
Thanks! The doc site deployment process process. I've fixed that and the links will start to work.
Stripe Subscriptions and Subscription Schedules are massively complicated and don't support our use case. Subscriptions support complex scenarios like proration and metered billing, but miss the mark on simple use cases.
All I want to do is ship products when people are charged, but I also want to move the next charge (or next several charges around) based on end user requests. This is accomplished in Stripe using their "trial" functionality - which is a hack because the Subscription isn't in "trial", the customer just wanted to move the next invoice. Putting the Subscription in "trial" screws up Stripe out of the box analytics because they don't get counted as active Subscriptions.
I'm not surprised you were driven to build your own Subscription platform, I wasn't around for the decision for us, but knowing what I know now, I probably would have built as well or looked at Chargebee or similar.
Interestingly, we actually have the opposite problem—our subscription model (effectively a payment plan) is so specialized that no-one, stripe included, supports our requirements out of the box.
EDIT: I re-read your comment and saw that you mentioned wanting to track active subscriptions easily, so I'm not sure my suggestion really solves your problem. Maybe you could classify any scheduled subscriptions as active/paused, if you're not using them anywhere else in your billing system?
Another hacky way my CX team has been solving moving the next invoice date around is to pause their subscriptions then unpause/bill now (Stripe supports bill now but not reschedule next out of the box) - they'll set calendar invites for themselves to unpause when the customer requested then blow through them in the morning in the Stripe UI. At least we've upgraded from that scenario to the current "trial hack" scenario. We can pull analytics and treat "trial" as active, it's just annoying that their dashboard analytics are hard baked to treat trial as inactive.
I really think what Stripe did was launch Subscription then get a bunch of customer requests, created Subscription Schedules which was supposed to be the layer of advanced functionality you opt in to if you really need it, but created a product that's too complicated and misses the mark.
Oh another fun note I'll leave you with - we never want proration (the price of the product is always the price, since we're shipping physical products). But the proration radio is always on. So a team member using the Stripe UI forgets to turn it off every few days or so and we charge the customer the wrong amount (and have to sidestep proration line items when shipping)
1. Does "lifetime upgrade license" mean you can upgrade forever without any additional fees?
2. Is the standard upgrade license going to behave that way as well, or will it be valid for a certain period of time and/or number of upgrades?
3. Emailing for pricing on a very tech-oriented, non-Enterprise, automated billing SaaS product seems like a chance to try to just gauge how much I can pay rather than just having set pricing. Or like you just haven't decided how much to charge yet.
4. Who did the logo at the top of the readme? I love it.
Seriously? I think we should consider it controversial, then, as I have the opposite reaction.
Nefarious users can deconstruct my app to by-pass payments, but the juice to support them isn't worth the squeeze. If someone is willing to go through that much effort, they must really want to use my app and I will let them enjoy their prize :)
For more complex and mature applications there are tons of functionality still needed. Tax reports, subscription reports, auditing, webhooks, etc. But I wanted to get something released so I could start getting feedback on what to work on first instead of just guessing what needs done and never releasing.
As is, for indie hackers it'll get the majority of the job done and more. And for quite a few SaaS platforms. It's when it comes to mature applications is where it's just not there yet.
I am not sure if this is the first time you work with Symfony but before going to add anything new you should really improve the code quality, add static analysers like Phpstan and Psalm, bring them to level 9 and 1, restructure your src dir, create reasonable entities, improve the unit tests.
Also, your license needs to be reviewed by legal and your it insurance company (I hope you have one as you will need one for sure working in the billing area), it is completely flawed. I think you just copied it from somewhere and added your information.
Code quality wise it has a scrutinizer score of 9.85 out of 10. Sure code quality could be improved like all other applications in the world, but let's not act like it's low or poor quality.
If you have specific feedback I would like to hear it but "improve code quality" is one of the biggest things people say when they have no concrete improvements or can even explain why their changes improves code quality. It's normally "I would do it this way".
> improve the unit tests.
I made the decision since it's MVP to focus on functional tests since it gives a wider range and could be done quicker. For things where the logic is important I wrote unit tests which is why there aren't so many Unit tests but 20 minutes worth of functional tests.
> Also, your license needs to be reviewed by legal and your it insurance company (I hope you have one as you will need one for sure working in the billing area), it is completely flawed. I think you just copied it from somewhere and added your information.
It's literally a template given by MariaDB Corporation Ab which it states and even says the license is copyrighted to them. It's used by quite a few companies. Such as Sentry and CoackroachDB. So, yes. I copied it and edited the parts it said to edit. Just like I would a standard open-source license. And considering it's used by multiple multi-million dollar companies, I am going to go with it passes the legal test of actual lawyers.
You might like to re-read the site guidelines,. especially the "In Comments" section: https://news.ycombinator.com/newsguidelines.html
Add Paypal.
Stripe is toxic.
Excited to see what you contribute.