Stopping a Turn Should Not Cost More Than Finishing It

    September 2026~4 min readProduct

    You ask for something, the model starts, you see it going the wrong way, and you hit Stop two seconds in. Until v14.45, Atlarix billed that as though it had run to completion — not the two seconds of output you actually got, but the entire output budget the model had been allowed. The same request, measured twice: 45c when we let it finish, 58c when we cancelled it early. Stopping cost more than finishing. This is what went wrong, what it does now, and why we would rather write this post than quietly ship the fix.

    Why a cancelled turn was priced at its worst case

    Atlarix quotes you a cost before a Core request goes out, and to do that it has to reserve against your balance — you cannot know the real number until the provider reports usage at the end. That reservation is necessarily the worst case: the maximum output the model is permitted to generate for that request.

    On a completed turn the reservation is then settled against what the provider actually billed, and the difference goes back. On a cancelled turn there was no settlement step. The reservation simply stood. So the meter charged for tokens that were never generated, never sent, and never paid for by us either — and it charged more the *earlier* you stopped, because the gap between the budget and the reality was widest at the start.

    What it does now

    A stopped generation is priced from what was really produced up to the moment it stopped, and it is bounded twice: it can never exceed the estimate you were quoted, and it settles against the provider's own reported usage like any completed turn.

    The same rule covers the case where you did not press anything. If the connection drops mid-stream, that is a turn that ended early too, and it is now priced the same way.

    The principle we are actually arguing for

    None of these are large sums. The reason we care is that a meter you cannot audit is worse than an expensive one, and every one of these bugs failed in the same direction — ours.

    That is not a coincidence, it is a design smell. Reservations, clamps and partial failures all resolve ambiguity somehow, and if nobody states which way they should resolve, they drift toward whatever is easiest to implement, which is usually whatever is safest for the vendor. So the rule we hold now is explicit: when the real cost is unknowable, the user is charged the lower bound, not the upper one.

    Atlarix shows the exact cost of every call in the app for the same reason. A number you can check is the only kind worth quoting.

    Where this fits

    Atlarix Core is the managed option: we route your request through our proxy — not logged, not retained — to the provider that serves it. You can equally bring your own API key, or run a local model through Ollama or LM Studio, and in both of those cases nothing touches our infrastructure and nobody meters you at all. The billing above applies only to Core.

    If you want the current model in full, [the pricing page](/pricing) has it, and [the changelog](/changelog) has everything that shipped in v14.45.

    We could have fixed this in silence — it is a small amount of money and nobody had complained. But the fix is only half of what makes a meter trustworthy; the other half is being told when it was wrong. If you ran cancelled turns on Core before v14.45, you were overcharged for them, and now you know by how much.