Websocket - pay for the next 100 tokens (send a prepared string), get next 100 tokens, pay for the next 100 tokens (send another prepared string), get next 100 tokens.
Or 10 or whatever.
But send and get change is basically acountless what you have. A little trust in the provider (same as with account model) and get refunded for not used credits.
Nothing to store at the server.