Two kinds of right, one flow
A boolean grant ("has a Pro subscription") and a consumable budget ("200 emails a day") coexist in the same fulfillment call, drawn in an order you declare.
Ask "may this happen, and can they afford it?" — get an answer, a ledger entry, and a way to undo it. Storage-agnostic, with a Django backend.