Credits stop working the moment two actions are 12x apart in cost
Credits look like a solution to variable cost. They're really a way of moving the variance onto the user without telling them.
In Arteza a quick edit and a full multi shot render are about 12x apart in what they cost us to run. Both are priced in the same unit. So someone learns an exchange rate from the cheap action, builds a mental model, then spends a third of their balance in one click and feels robbed. That isn't a pricing bug. We asked them to hold a cost model in their head that we never showed them.
What's worked is putting the credit cost on the button before the click instead of in a docs table. Boring fix, and it cut the where did my credits go messages more than any price change we made.
The part I haven't solved is failures. A bad output still burned the compute. Refund it and people retry until they like the result. Don't refund and credits feel like a slot machine. We refund and eat it, which won't scale.
Curious where others have landed on charging for output the user rejects.
Replies
That slot machine feeling is so real when users burn credits on bad outputs. I've seen a few teams use a free retry token for failed jobs instead of touching credit balances. How are you detecting system failures vs bad prompts on your end?
the binary refund/no-refund framing might be the actual trap here, not just the exchange rate problem. what if failures split into a small flat "attempt fee" that's non-refundable no matter what (covers your infra overhead on every call, priced low enough nobody notices) plus the real compute cost only charged on an accepted output? that way a bad multi-shot render costs the user roughly what a bad quick edit costs them, and the expensive part of your margin only gets collected when you actually delivered something they wanted. doesn't fully solve the "retry until happy" abuse case, but it stops a single failed 12x action from feeling like getting robbed, which sounds like the actual trust problem you're describing.
Softorino 💻📲
I market a file converter where a voice memo and a 2 hour video are both one conversion in the UI and nothing alike underneath, so the exchange rate problem is familiar. On failures, most of the ones I see turn out to be the file being wrong rather than the service breaking, which makes charging feel unfair either way. How would you tell someone an attempt is going to fail before they spend anything on it?