you never know, that one dollar mistake could make them overdraft or something. don't punish them for a math mistake. $3 dollars is already a generous tip for a $12 dollar bill
You run the card for $15 ($12 + $3 tip) as that’s what was specified....had there been no tip amount listed and the total listed as $16, I think you would have better justification for presuming a $4 tip. It’s simply the right thing to do. Here the intent to give a $3 tip was stated, so you would run the lower amount of $15 rather than the higher amount....why cheat a person out of a dollar for an error that you caught. I have worked as a server, and my self-respect was never more important than a little more money (even though I was working the job for the money).