My bank stole 9 cents
At the end of each month I spend about half an hour doing accounting for my Tarsnap online backup service. I record the number and total amount of incoming payments, the fees charged by PayPal, the amount of backup usage which Tarsnap users were charged for, the website hosting costs, et cetera. A few days later, when Amazon Web Services finishes its monthly accounting I record that number as well, at which point I know how much profit Tarsnap made in the month. Today I took some extra time to compare numbers, and I came to an unsettling realization: My bank stole my money -- 0.09 US dollars of it, to be precise.For obscure reasons involving PayPal and international banking, I withdraw money first from my PayPal account to an account at Harris Bank, then write myself a cheque (yes, on paper) which I deposit into a US dollar account at the Royal Bank of Canada, and then finally pay myself by converting this money into Canadian dollars (ideally when the exchange rate is good). On April 27 the second step failed.
On that day, I was depositing two US dollar cheques: One was a cheque for $X.19 from Tarsnap, and the other was a cheque for $Y.00 for some consulting I was doing. The automated teller machines at RBC branches are only able to handle Canadian dollar transactions, so I waited in line for an available bank teller and then handed over the two cheques asking that they be deposited into my US dollar account. She typed in the amounts of the two cheques; passed them through a machine which printed some information on the back; stamped them; and then entered the total deposit value into her computer as $(X+Y).10 -- 9 cents less than the correct total. I glanced at the receipt, thanked her, and left -- and didn't notice the discrepancy until 4 months later.
Several things went wrong here.
First, I should have checked the receipt more closely -- but I was distracted with thinking about key-value data stores and at first glance the receipt looked correct. Second, the bank teller should have input the correct total. I don't know if this was a typographical error or an error in reading the cheque -- my writing certainly can be difficult to read at times -- but there was certainly an error at some point.
Most importantly, however, the bank's computer systems should have refused to accept a deposit where the total value did not match the sum of the individual elements! If I was depositing cheques at an ATM, it certainly wouldn't have allowed me to enter a total different from the sum of the values I entered for the individual cheques; but I can see why this validation might have been missing in this case.
US dollar transactions are considered to be "foreign currency transactions" (which, of course, they are) and thus are subject to exchange rates (which isn't necessarily appropriate). If you transfer money between two US dollar bank accounts at RBC, the transaction will be shown as "foreign exchange" at a USD/USD exchange rate of 1.000000. If the items being deposited are in a different currency than the account they are being deposited into, the deposit value will almost certainly not match the sum of the values of the items being deposited, so skipping such a validation step is reasonable; but the bank's computer systems treat a transaction as foreign exchange if any non-Canadian dollars are involved, rather than treating it as foreign exchange only if there is more than one currency involved.
As a computer scientist who abhors even the slightest of errors, I hope RBC fixes its systems and correctly validates deposits in the future; but as a busy software developer, I'm going to mark this down in my accounting as "bank error in bank's favour" and make sure I check receipts more closely in the future.