Can a bitcoin transaction be used to send usernames? I'm looking to implement a secure mobile messaging service and looking for a payment system that will allow users to buy message credits and have them be allocated to a specific account however I want to keep user data to a minimum (currently I'm planning for no more than a public key, user name (five random characters), account balance and optionally an e-mail address (in case the user loses their phone).

My questron is can I send the five character username with bitcoin transactions?
I'm not sure how you would make vanity addresses work for this. You don't want to store an address for each user, and if you did you wouldn't need vanity addresses. If you force the user to create a vanity address, I don't see what they would do with it that would help you. It seems kind of bizarre to force them to transfer the coins to their own vanity address and then transfer them to you, so you can see the vanity address as the source.

One possibility is to publish a simple algorithm to convert their user name to a Bitcoin address (that nobody could claim). Then have them use the sendmany API call to send the payment to you and a satoshi to their user name's corresponding Bitcoin address. You would receive the funds and then know what user to credit them to by decoding the address that had received a satoshi. This would waste one satoshi for each transfer.

There are really only two issues with this. First, it's a bit of a pain for your users. They can't use the GUI to send the funds since it doesn't support sendmany. Second, the users have to be careful not to send the actual funds to the Bitcoin address corresponding to their user name. If they did, those coins would be lost forever. They need to understand that they should only send a tiny fraction of a Bitcoin to that address so as to 'mark' the transaction.

All in all, I think all the possible solutions are ugly and you should rethink the decisions that led you to these unusual requirements.