The way it works at my university is that PhD students receive a 'base' funding of around $25k (unless they win an external scholarship), but its broken up like this:
Faculty Scholarship: $9k
TA/RA: $8k
Tuition & Fees: $8k
The TA and RA wages, while 'guaranteed', are paid by the hour and there's no real minimum you can earn, if you only TA or RA for $5k that's what you're going to see instead of the $8k you would have originally been informed about. You don't actually see the Tuition and Fees money, its billed and paid direction, plus minus zero. So your real takehome is $17k, assuming you work enough.
You got fucked on reporting your hours, and their strict policy. If you got a contract for $25k that means the $25k was allocated and your supervisor fucked up by only 'spending' 1/5th of his/her budget, money that isn't exactly going to be sitting around again next year. You should have maxed out your time sheets for every hour you were eligible to be paid.