"У меня не хватает [денег] на такси", "Мне не хватает [денег] на такси" = Ok

1. Хватать/схватить, схватывать = to grab, to grasp, to catch etc, when somebody takes/gets/understands something quickly
хватать/схватывать + accusative

Мария схватила сумку и побежала на работу.
Мария хватает сумку и бежит на работу. (the present)
Грабитель схватил пистолет.
Грабитель хватает пистолет. (the present)
Полицейский схватил грабителя.
Полицейский хватает грабителя. (the present)
Полицейский схватит грабителя. (the future)
Мария схватывает правила русского языка на лету. (understands quickly)
Он моментально схватил условие задачи.


2. Хватать/хватить = to suffice, to be enough
хватать + genitive

Ему не хватает денег, чтобы купить телевизор.
Ей не хватит денег, чтобы доехать туда. (the future tense)
Нам не хватает времени, чтобы закончить эту работу.
Ему хватило мужества спасти человека.
Нам всего хватает. (we have everything we need = У нас есть всё [, что нам нужно])


may I use "хватит" instead of "хватает"
"Хватит" is the future tense. If you say "мне не хватит на что-то" it implies you will be out of money and you know it.
Марии не хватало на такси, и она пошла пешком. (describes the situation in the past in general, as a result)
Марии не хватило на такси, и она пошла пешком. (sounds as if Maria found out that she didn't have enough money)
Марии не хватает на такси, у тебя есть 10 евро? (like a part of the conversation, right now)
Марии не хватит на такси, ей придется идти пешком. (the future tense)