Personally, I don't' think that I would send something as specific as an account number to target. The reason being, you might have millions of users and account numbers and this could be very cumbersome to manage. And Target won't be good at managing something so specific. You could create an audience and within the audience list each account number. Each line/return is considered an or statement, but again this isn't a good practice and is difficult to manage with something that could have lots of rows.
Target doesn't have a way to hit a database and look up an account number or import data.
Instead, I would create groups that you want to target, and then send the group as an mbox parameter like we mentioned above, and not something as specific as the account number. So when the user attempts to make a payment and fails, on the fail page, you would add an mbox parameter and make the value a group. Something like payment=expired credit card. Or payment=insufficient funds. Then you can set up an audience to target all of the people to fit that group.
One other thing. I try not to expose personal or possibly embarrassing info directly in code. So in this case, instead of payment=insufficient funds, I would make up internal codes that my team understood internally. Something like payment=145.