frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

We tried to make billing backendless

https://useautumn.com/blog/backendless
43•ayushrodrigues•1y ago

Comments

robertlagrant•1y ago
Why not just authenticate the user against that customer_id, and then you can pass the customer_id around as much as you like (or have a surrogate key to it for a little more security)?

A JWT with the customer_id (or surrogate) in would let you do that in serverless function.

ayushrodrigues•1y ago
yep, this is the plan
robertlagrant•1y ago
Oh, I must have misread? I thought the thing was a custom encryption/decryption dance instead of a signed JWT.
taurath•1y ago
I'm rather confused by this article - I've made products and pricing services, and just on the first line its said that billing requires webhooks and state syncing.. but why? Is it a way to utilize payments in an otherwise static site? Whats the benefit? You can absolutely accept payments without webhooks. Please help, I really don't understand the niche!

I'm left with the sense that this is a sort of solution that's trying to do auth permissions via the billing process, without calling it auth. Any access token you'd set up for auth with roles or permissions can give you access to both a customerId and whatever access grants you'd want to give.

ayushrodrigues•1y ago
Yes you're right -- payments can definitely be done without webhooks, but it is typically all controlled server-side. Especially things like upgrade and downgrade flows, as they involve automatically charging a user's card.

What we were exploring is whether there's a way to do this securely from the frontend (eg on a pricing page) without needing to open up backend routes.

You're also correct that our niche is trying to control feature permissions, so that we can decouple pricing logic from an application (which makes it easier to handle pricing changes, custom plans etc). We are moving more towards a solution that just uses the JWTs to handle this instead of a customer_id.

taurath•1y ago
I've made solutions before that a product can have many permissions, a product can have many prices, and a product can also be a bundle of products. The products service does the heavy lifting by having systems to determine things like addons (If have Product1 that gives Permission1, you can purchase Product43 as an Addon to give Permission2).

This will not give you clean easy to understand reporting if you make bundles willy-nilly (N product line makes $ dollars, if bundled products exist), but to me, it gives accurate data that matches up with the pricing complexity that the business is designing.

supportengineer•1y ago
The browser allows JavaScript to be modified. Therefore, you can never trust the client side. You can’t put “trust” there.
FinnLobsien•1y ago
I work in the billing space at Lago, so I think I can add a bit of color (though I'm also somewhat confused).

Technically speaking, billing and payments are two separate things.

For example: OpenAI needs to calculate how much you need to pay for the tokens you consumed across all of its models. That usage aggregation, calculation and then issuing of an invoice is billing—payments is only the transfer of money.

baobun•1y ago
You should look deeper into JWTs and what you can do with them. Sounds like you are on the way to reinventing them.
ayushrodrigues•1y ago
Yes! This is exactly what we're doing now which also helps us be a little more framework agnostic. Nextjs kind of just lets us have them built-in
MobiusHorizons•1y ago
JWT is a standard that is supported by a lot of frameworks and auth libraries. It’s also reasonably straightforward to implement yourself. It’s very easy to make big security mistakes when you roll your own security, though, so it’s best to at least stick with proven paradigms even if you implement it yourself for a new framework. Also read up on the mistakes people have made in implementing it and avoid repeating those mistakes.
beej71•1y ago
I don't get it. If someone gets a hold of the encrypted customer ID, can't they impersonate the customer? Is it just that the customer ID is guessable?
johnyeocx•1y ago
That's true for now -- we definitely don't recommend using the encrypted customer ID as a fully secure method for auth, but implemented it more as a way for users to quick start without friction

1. This is also why we've built plugins for popular auth providers like Clerk, Better Auth and Supabase, which are called on the backend to fetch the user / org ID.

2. The encrypted customer ID is more of an experiment atm, and down the line if we continue working on it we might even build an auth system involving JWTs -- though that'd be reinventing the wheel and not something we're keen on

3. We are actually now working more on a framework agnostic pattern where users register a middleware on their backend which will spin up routes for Autumn, and the frontend provider contains a client which simply calls these routes

ayushrodrigues•1y ago
Also we can make these rotate with each request
serbuvlad•1y ago
I find everything about web technology nowadays to be extremely obtuse.

I am mostly an embedded/Linux driver engineer, but I think I know the basics of HTTP, REST APIs, Docker containers, how the web works overall etc.

But, like. What are we doing?

What do you mean make the billing backendless? Obviously there has to be a backend to process the payment. What are you even saying? You are presumably not building a distributed blockchain - and even that requires permanent nodes.

Same with serverless (which are just Edge Functions and could just be called that, or serviceless, if you really wanted to define it negatively).

If these people named NoSQL, it would be called databaseless.

elteto•1y ago
They encoded the billing rules into the fabric of spacetime, making them a fundamental property of the universe. Now there is no backend anymore, only reality.

That will be $6.62607015e-34 please.

taurath•1y ago
Give yourself some credit here, I'm a web developer who works on billing systems and I also have no idea what it is that they mean. My best guess is that they're making a marketing message that they do not have a very particularly annoying workflow of a very particular billing integration (Stripe webhooks maybe?).

My problem is when you know that workflow, and that integration... you actually don't need it, its just nice to have. Its just a way for Stripe to send you updates to an endpoint with the status, like if say a card has declined as the charge is closing. But you can just poll.

MobiusHorizons•1y ago
I believe the marketing material around serverles functions is at fault. Clearly there is a server, because there is a computer answering requests on a specific ip address mapped to dns. So the wording is maddening. It’s a bit like cgi-bin except it spins up a vm or other sandbox to run the serving code instead of just starting a process.
jollyllama•1y ago
Functions-as-a-service was a better descriptor.

This is just billing as a service.

serbuvlad•1y ago
Oh, so there is a billing backend. It's just managed by someone else.

Then yeah, just call it billing as a service.

I just dislike the wording of it all. "You don't have to do the billing in the backend, you can do it on the frontend". As if the frontend and the backend were mythical realms fighting for control.

We went from PHP generated websites, to PHP backend generation bad, use "client-side rendering" and "single-page applications", as the shiny new thing.

Then we went to Server Side Rendering (SSR), as a new thing. What do you mean a new thing? You're just doing in Node what everyone was doing in PHP 15 years ago.

And that's fine!

Not every idea has to be revolutionary, not everything has to be "the future", or "the only way".

You've found a service that does billing for you without having to integrate it into your backend. Great! Amazing! Good for you! I'm sure it's of interest to a lot of people!

But why can't you just, you know, say it like that?

skeptrune•1y ago
>If these people named NoSQL, it would be called databaseless.

Lmao, this is way too good. I'm going to steal this.

ljm•1y ago
One day there will be a type of web developer who completely dismisses the concept of running a backend and instead whips out their wallet and subscribes to a dozen SaaS providers instead. Literally everything else will be client side inside NextJS.
UK-AL•1y ago
It's not really backendless more like outsourcing backend.
singron•1y ago
> Server actions are public, unauthenticated routes

Why can't they be authenticated? That seems like the obvious fix. Otherwise how you are handing out the correct customer_id unless you authenticate somehow?

This scheme also complicates API key rotation, although you can work around it by trying to decrypt with both the old and new key if you use e.g. authenticated encryption.

This also has no mechanism for expiration (besides API key rotation). If you add an expiration time and sign it, then you essentially created an authentication token that you use as the customer_id.

johnyeocx•1y ago
Maybe we didn't phrase it as well as we should've. We meant to say API routes in general are public, and so the server actions could be called by anyone.

Authentication is definitely possible, but we were trying to brainstorm a way where users could have protected routes with as little set up as possible, the ideal being they just pass in customerId into a Provider component

We also did think about things like registering an auth function but felt that being able to just pass in customerId would be a magical experience!

Definitely acknowledge that the current mechanism has flaws though -- it's really more of an experiment at the moment, and if it does indeed become very popular with users we would implement auth mechanisms like JWT and what not -- though that would kinda be reinventing the wheel

captn3m0•1y ago
The current mechanism has security flaws that are hiding because of SSR. Try to implement the same flow in pure-vanilla-js and you'll realize that you're hitting replay attacks instantly. This is the same vulnerability that companies which try to "hash the password on the client side to protect it" face - they've merely transformed the password to a different one (the hashed one) which has the exact same semantics as the original password for an attacker.

Your encrypted customer ID has the exact same semantics as the original customer ID for an attacker, and is insecure.

biker142541•1y ago
Like others, quite confused here. If it requires server actions, then it's not backendless? Just say you are simplifying the backend and how you interact with it, if that's what you are doing.
ayushrodrigues•1y ago
I intended to use backendless more as a figure of speech here. We wanted to make billing "feel" backendless.
owebmaster•1y ago
The title is lying then, hope the mods change it because I only clicked thinking it would be about something backendless and then it talks about one of the crappiest server frameworks available.
hn276•1y ago
Isn't it enough that this startup seems destined to failure? No need to beat a dead horse ;-)
oatmeal_croc•1y ago
You could also say "I made the billing a winged cow sailing a boat" and it would be a figure of speech.
Daviey•1y ago
I find this "backendless billing" approach fascinating because it highlights the tension between DX and security. As someone who's built payment systems, I understand the appeal of reducing backend boilerplate, but there's always a security tax to pay.

The real issue seems to be that they're trying to make billing "feel frontendish" when it's inherently a backend concern. The encryption approach in Part 3 is essentially recreating auth tokens but with extra steps, as others have noted - they're basically reinventing JWTs.

What struck me most was the security vulnerability they discovered with server actions. If you can make calls with any customer_id without verification, that's a textbook IDOR vulnerability. A simple curl request with a different customer_id would let you upgrade/downgrade other accounts! No amount of client-side magic can fix fundamentally flawed authorization.

Their conclusion is telling, sometimes the "boring" approach (proper backend routes with auth) exists for good reasons. I appreciate their transparency about the journey though, we learn more from these explorations than from pretending everything works perfectly from day one.

ayushrodrigues•1y ago
Appreciate the comment! Has definitely been an interesting journey for us exploring the space
codegeek•1y ago
Interesting how YC funds similar companies. useautumn looks a close competitor to another YC company getlago.
ayushrodrigues•1y ago
From a high level yes, but we are taking a very different route. They're very deep into usage-based billing and high throughput events, whereas we're more for early stage founders and "pricing in a box"
oulipo•1y ago
Reading the blog it seems the engineers there lack basic knowledge about safety (see their multiple different approaches where they learned "after the fact" that their approach wasn't secure)... this doesn't inspire a lot of safety
delusional•1y ago
If you don't have a backend, how do you make sure I'm billed?

What's stopping me from opening the console and calling the "addMoreCredits" function? Why can't I just edit the code to remove any mention of consuming credits?

I think you're about to discover why most multiplayer games have moved authoritative simulation to the server.

johnyeocx•1y ago
it was more of a figure of speech where the entire implementation for the user would be on the frontend (React). Sensitive operations are being called securely on the backend, just through Next.js server functions!
throwaway63467•1y ago
Aren’t server actions a backend?
mathgeek•1y ago
As they say, the cloud is just someone else’s server.
animitronix•1y ago
This sounds like an awful idea

VoIP brings back old-fashioned pay phones to rural Vermont (2025)

https://spectrum.ieee.org/payphone-voip
96•bookofjoe•3h ago•20 comments

Prolog Coding Horror

https://www.metalevel.at/prolog/horror
32•RohanAdwankar•1h ago•5 comments

Mercurial, 20 years and counting: how are we still alive and kicking? [video]

https://fosdem.org/2026/schedule/event/AGWUVH-mercurial-aint-you-dead-yet/
137•ibobev•2d ago•108 comments

I turned a $80 RK3562 Android tablet into a Debian Linux workstation

https://github.com/tech4bot/rk3562deb
212•tech4bot•9h ago•113 comments

GenCAD

https://gencad.github.io/
11•dagenix•1h ago•2 comments

Two EA-18 fighter jets collide at Mountain Home airshow, pilots ejected safely

https://idahonews.com/news/local/two-f-18-fighter-jets-have-crashed-during-an-airshow-at-mountain...
11•ChrisArchitect•1h ago•1 comments

ThinkPad: From IBM's Bento Box to Lenovo's AI Workstations

https://www.jdhodges.com/blog/thinkpad-history/
8•zdw•1h ago•0 comments

Magical Realism: “Northern Exposure” 25 Years Later (2015)

https://www.rogerebert.com/streaming/magical-realism-nothern-exposure-25-years-later
50•walterbell•1d ago•20 comments

Fabricked: Misconfiguring Infinity Fabric to Break AMD SEV-SNP

https://xca-attacks.github.io/fabricked/
4•negura•42m ago•0 comments

Multi-Species Canopy Latrines in Costa Rican Cloud Forests

https://onlinelibrary.wiley.com/doi/10.1002/ece3.72964
36•PaulHoule•3d ago•4 comments

Hindenburg’s Smoking Room

https://www.airships.net/hindenburg-smoking-room/
141•crescit_eundo•3d ago•78 comments

Show HN: Semble – Code search for agents that uses 98% fewer tokens than grep

https://github.com/MinishLab/semble
99•Bibabomas•7h ago•34 comments

I don't think AI will make your processes go faster

https://frederickvanbrabant.com/blog/2026-05-15-i-dont-think-ai-will-make-your-processes-go-faster/
457•TheEdonian•10h ago•329 comments

CUDA Books

https://github.com/alternbits/awesome-cuda-books
106•dariubs•10h ago•23 comments

High-Entropy Alloy

https://en.wikipedia.org/wiki/High-entropy_alloy
94•leonidasrup•3d ago•21 comments

Prolog Basics Explained with Pokémon

https://unplannedobsolescence.com/blog/prolog-basics-pokemon/
191•birdculture•2d ago•30 comments

New Nightmare Just Dropped: '3D' Animated Ads on Trucks in Traffic

https://www.thedrive.com/news/new-nightmare-just-dropped-3d-animated-ads-on-trucks-in-traffic
49•cf100clunk•1d ago•25 comments

Trials on veterans suggest ibogaine could provide a new treatment for PTSD

https://www.bbc.com/future/article/20260514-how-hallucinogenic-ibogaine-helps-veterans-overcome-ptsd
70•bushwart•11h ago•75 comments

Ask an Astronaut: 333 hours of Q&A footage with astronauts

https://askanastronaut.issinrealtime.org/
5•gaws•2d ago•0 comments

The occasional ECONNRESET

https://movq.de/blog/postings/2026-05-05/1/POSTING-en.html
82•zdw•5h ago•19 comments

Schanuel's Conjecture and the Semantics of Triton's FPSan

https://cp4space.hatsya.com/2026/05/03/schanuels-conjecture-and-the-semantics-of-fpsan/
16•c1ccccc1•1d ago•3 comments

Native all the way, until you need text

https://justsitandgrin.im/posts/native-all-the-way-until-you-need-text/
363•dive•11h ago•243 comments

AI Wearables Are Coming but They'll Need to Pass the Coffee Shop Test to Survive

https://www.inc.com/connor-jewiss/ai-wearables-are-coming-but-theyll-need-to-pass-this-crucial-co...
9•connorjewiss•1h ago•1 comments

AI is a technology not a product

https://daringfireball.net/2026/05/ai_is_technology_not_a_product
282•ch_sm•9h ago•114 comments

Apple Silicon costs more than OpenRouter

https://www.williamangel.net/blog/2026/05/17/offline-llm-energy-use.html
286•datadrivenangel•10h ago•241 comments

Tesla Solar Roof is on life support as it pivot to panels

https://electrek.co/2026/05/14/tesla-solar-roof-promise-vs-reality-pivot-panels/
121•celsoazevedo•18h ago•135 comments

Mozilla to UK regulators: VPNs are essential privacy and security tools

https://blog.mozilla.org/netpolicy/2026/05/15/mozilla-to-uk-regulators-vpns-are-essential-privacy...
603•WithinReason•16h ago•259 comments

Colossus: The Forbin Project

https://en.wikipedia.org/wiki/Colossus:_The_Forbin_Project
205•doener•3d ago•77 comments

A nicer voltmeter clock

https://lcamtuf.substack.com/p/a-nicer-voltmeter-clock
302•surprisetalk•1d ago•38 comments

How diamonds are made

https://diamond.jaydip.me/
79•lemonberry•1d ago•52 comments