December 6th, I got my credit card bill for the month of November. Being the holiday season, the bill was a bit higher than usual, and I didn't quite have the funds to pay it off until the next paycheck. Specifically, the bill was around $950, and I had $1900 in my chequing account. I didn't want to make the payment, because if I can keep the balance above $1000, most of the service fees associated with the bank account are waved. Anyway, I got my paycheck on Thursday, but being the busy person that I am, I only had a chance to make the deposit tonight. In the meantime, I also got a cheque from the government for the QST credit.
So I show up at the ATM, ready to make the deposit. I punch in my pin, choose "deposit" and choose "chequing". A few weeks ago, I noticed, TD Canada updated the interface to their ATMs. At the time, I was a bit paranoid. Upon seeing an entirely new GUI, my first reaction was "Did they get hacked?" but I eventually dismissed that idea as too improbable, so today I the new GUI didn't phase me much at all.
One of the new features in the GUI is the ability to put in multiple values in the deposit, to have the ATM calculate the sum for you. So if you had two checks, one for $1200 and one for $100, you could enter in "$1200" and "$100", and the ATM would automatically calculate your total deposit to be "$1300", instead you calculating it in your head. Or that's my guess as to what the feature is for, anyway. So that's exactly what I did: I put in the amount of my paycheck, and the amount of the QST credit cheque, and the ATM calculated the sum.
Then I paused... I keep my own records of my finance, because my software does stuff like forecast cash flow. I figured I better make them separate transactions so that they show up as separate transactions in my bank records, so as not to confuse my software when it tries to sync up with my bank info. So I canceled the transaction, and made two separate deposits, in two envelopes — one for each cheque. After the first deposit, but before the second one, the machine glitches for a moment. I typed "1095", because that's the first 4 digits of my paycheck, and I hear "Beep beep beep..." One beep for every button I press... except the last! I look at the screen, and I see "109" displayed. I figure I didn't press the 5 hard enough, so I press it again. Another pause, then I hear "Beep Beep", and see "10955" on the screen.
I chuckle, figuring they must be using Java internally, and this was a garbage collection. (You only need to understand that last phrase if you're a Java programmer). So I hit the "correction" button which seems to erase the entire figure, so I re-enter "1095" followed by the rest of the digits (which I can't remember now), and complete the second deposit. Now I'm done, and I tell the ATM so, and it gives me a receipt. I've got about $3000 in my account now. Great, so now I can pay my credit card bill.
Now I get home and I log into TD's online interface, and I want to pay my credit card bill. I'm a bit nervous about that too. I forgot what the deadline was (it was December 31st), but I knew it was approaching somewhat soon, so I had better pay it before they start charging me interest. I go to the "pay bills" section, and choose my credit card company, and fill in "$1000" as the figure to pay, and hit pay. It tells me I have insufficient funds. Huh? Maybe I had hit "$10'000" by mistake. So I click on the "Pay another bill" button, which takes me back to the same screen, and I press "1", and Firefox helpfully auto completes "1000". That's a 4 digit figure, which means I had typed it correctly in the first place. Well, I type in the remaining three zeros, and hit pay again. And again, it tells me insufficient funds. WTF?
So I look around the screen for an "e-mail the manager" link, but all I see is a "help" link. I click on that, and it gives me some blurb about when I can expect the transactions to actually occur (in summary, during business hours, duh). Then it says "If you have a question, type it here". Argh, I hate that, 'cause surely they won't have an answer for my question. But I copy waste the error message, and surround it with "Why am I seeing [error message] when I try to pay my bills?" Sure enough, the "Here are some similar questions" are nowhere near the ballpark of my question. At the bottom, it says if none of the above applies, I can e-mail them. Great, so I click that.
Well, instead of an e-mail link, it's actually a link to a form asking me for my name, e-mail address, and the body of my message. These are annoying (I'd rather use my own client, so I have a saved copy in my "sent" folder for my records), but semi-tolerable. I fill in the info, and click send. It says the e-mail is invalid. Huh? I double check. "nebu@gta.igs.net". That's my e-mail address all right. I click send again. Again, it tells me my e-mail address is invalid.
I look around the screen some more, and find a 1-866 number. I dial it, and an automated voice asks me to enter my 13 digit card number. I'm stunned. I have to enter a 13 digit number just to get some service? So I'm fumbling around for my card which is in my wallet which is in my pants which is on the floor instead of around my legs. Yeah, that's right: I do banking without any pants on. The voice keeps repeating the instruction to me 4 or 5 times, and when I finally get my card out, it tells me since I didn't enter in my number, I have to hold on the line for an agent to contact me. Fine. It'll probably be faster that way.
So I'm on hold for a surprisingly short amount of time (measurable in seconds, not minutes), considering that it's like 8pm, not business hours (does TD have a 24 hour service line? If so, I'm impressed). The guy slurs his name, so I don't really know what it was (Kal? Karl? Call? Cole?) and he has an accent which MAY be Indian (I don't want to perpetuate any stereotypes here, just stating facts), but his English is perfectly understandable, grammatically and syntactically correct, and all that. He asks what I want help with.
I tell him I've got a couple of problems, but the first one is that I their help form is rejecting my e-mail. He asks me if that's it, and I tell him that's not it, but it's one of the problems I want fixed. He says okay, but he has to ask me all these security questions. As an aside, these security questions are pretty much a hoax. They are PUBLICLY AVAILABLE information. Like what my name is, where I live, and who I work for, etc. But that's a rant for another time. Accepting I'm who I claim to be, he asks me for my e-mail address, and this takes quite a while because B, D, E, G and T all rhyme, and it seems like we go through every permutation of this. And yes, I did use the "G as in George" trick, but apparently, some mistakes still managed to get through.
Anyway, after a while, he tells me it's fixed, and I have to raise an eyebrow at this. (If you're not a web developer, feel free to skip to the next paragraph). The form that's rejecting my e-mail address is at https://secure.tdcanadatrust.com/cgi-bin/contact/selfService/selfServFeedback.pl so I'm thinking "Okay, Kal/Karl/Cole/Whatever, unless you're a Perl coder who has fun answering customer service calls when not coding, and you have FTP access to the server, and you're a cocky enough cowboy coder to have modified the regular expression that my e-mail address is obviously being verified against, and then brave enough to post those changes to a FUCKING LIVE TD CANADA TRUST BANKING SERVER IN THE EVENING WHEN EVERYBODY IS HAMMERING IT, then no, I don't think you fixed it." But I decide to humour him, and try re-submitting my help request. And it works. Oops.
Okay, so now he asks me what the second problem is. I tell him I'm trying to pay my credit card bill, making a payment of $1000, but the payment is being rejected due to insufficient funds, but I have like $3000 in my account. So he tells me that I made two deposits today, and that all but $200 of those funds are withheld for five business days. I tell him I know that, but I had like $2000 in the account before those two deposits I made. So he acknowledges that, and is looking around, when he says, no shit, "Uh oh..." I'm thinking "Uh oh?! WTF?" but before I can vocalize my thoughts, he tells me to "please hold, there's a problem with your account."
So I'm on hold for maybe 40-60 seconds, and he gets back to me and asks me did I make a deposit, but then cancel it, because of some error? I said yes. And he said that's why there was a problem, and it's fixed now. I'm thinking "'That's why'?! WTF?" but my thoughts are interrupted by him asking me if there's any other problems. I ask him if I can make the payment now. He says "yes". I say "Okay hold on, I'm gonna try right now." I get some sort of error which is reminiscent of SQL (I'm paraphrasing the error message here): "Sorry, you transaction could not be processed. Please call 1-866-[whatever number I just called]. Error in SELECT statement." I tell him it doesn't work, and he tells me I have to log out and log back in, because they did an UPDATE (his words) on my account.
So I do that, and everything works now, and I tell him so, and we thank each other, and hang up. And now I'm alone with my thoughts, and it goes back to that canceled ATM transaction. I canceled a deposit, and that was enough to corrupt my account? What the fuck kind of two bit programmer writes code like that? But then again, bank programmers are human too. And maybe their code base is more complicated than I imagine it to be.