you can do as many operations as the card and physics will allow. the more
you try to do, the more risk of messing things up. if the tag is not held steady,
there could be a disconnect which might leave the card in an undesirable
state (eg, balance wrong).
reading a tag for its balance is normally a separate passive action.
as far as making a purchase and deducting the amount from
the balance, it is actually a built-in function designed expressly to avoid (as
much as possible) what might happen if the user draws the card away from the
reader before the transaction is complete. in other words, you (the user) don't
have to read the balance and then deduct some amount from it and write it
back. mifare handles it as a single operation.
normally you would keep a backup copy of the balance in case something
goes awry.
it's been a while since i posted my imaginary buspass app, but i remember it
fondly:
https://www.b4x.com/android/forum/threads/mifare-classic-buspass.157825/.
you could initialize a tag with a balance, top it off, read the balance and
then "purchase" your bus ticket and have the amount of the ride (3 Slurn in
this case) deducted from the balance. brilliant!
i used the mifare classic as
the nfc tag. i imagine it would have worked with other mifare varietals.
i amassed quite a collection of nfc tags for my little museum before moving on.
as a side note: i think the hardest part you will encounter is encryption. while
the classic and lite tags use a minimal kind, other tags do, and you may have a very
difficult time reading encrypted tags with android's standard nfc support. all of
this was a long time ago, but i distinctly recall never getting beyond a certain
stage with certain tags even when i had the keys. so if security is a concern
(which it should be when money is involved), the types of tags used for
encryption may not let you develop your app. just sayin'