I've just been trying to download all my old credit card statements from the American Express website. That's the kind of exciting life I lead.

I had hoped that this would be a fairly straightforward task, but every step of the process seemed designed to frustrate and annoy me, leading me to pen this quick list of a number of suggestions for how the functionality could be improved.

Here's what the "Download PDF Statement" page on the Amex website looks like:

American Express - Download PDF Statement

The first thing that irks me is learning that only my last six months' worth of statements are immediately available for download - the rest must be requested and will be available 24 hours after ordering, for 14 days. Bear in mind that these monthly PDFs weigh in at about 30 kilobytes apiece. Is online storage really such a scarce resource these days? If Google can make up to 7622 Mb available for anyone who wants a GMail account, surely a company the size of American Express could find a couple of megabytes for each paying customer?

OK, so I have to request the statements. How do I do that?

You can order any of the statements listed below. To order, please check the appropriate box and submit your order.

Well, I want them all. But there are no bulk-selection options. I have to check each checkbox individually. Would it have been so difficult to add a control which toggled the state of every checkbox? Or maybe a checkbox next to each year which toggled the state of each statement within that calendar year?

Having carefully selected each of 61 checkboxes, I click "Order Now" and am presented with the following dialog box:

American Express Dialog

Woah, who said there was a limit of twelve months?! There's nothing about this in the explanatory blurb inviting me to order "any of the statements listed below". If such a restriction existed, it would have been nice to know about it before I checked 61 checkboxes.

Even if I had been forewarned about this limit - the American Express developers clearly understand the capabilities of client-side JavaScript, so it would have been polite to have prevented me from selecting more than twelve checkboxes, by prompting me and/or disabling the unselected checkboxes after I selected my twelfth checkbox.

By this time I'm pretty frustrated at the whole experience. I have discovered (the hard way) that it isn't possible to download all my old statements, just the last six months' worth, plus any other twelve of my choice. That seems a very strange business rule. Oh well. Twelve it is. I reload the page, select the most recent twelve statements, and click "Order Now". A familiar dialog box appears:

American Express Code

What the?! But I have limited my selection to twelve months. I recount - yep, definitely twelve checkboxes selected - before resorting to viewing source and searching for "please limit", which reveals the following function:

American Express Dialog

Yowza, an off-by-one error on the website of a financial services provider. That's reassuring.

I give another sigh, uncheck one of my twelve checkboxes, and submit a request for the most recent eleven statements. The following confirmation message appears:

American Express Confirmation

Notice anything odd? I almost didn't - I was just about to navigate elsewhere when I noticed the text on the button on the left:

Request Another Statement

But I thought I was limited to selecting only eleven or twelve statements? It seems not - and indeed, the website lets me go round the bend loop another five times, picking no more than 11 statements on each iteration until I've eventually ordered all the statements.

Let's think about this for a moment. There is no business policy preventing the customer from requesting more than eleven historical statements, and there are certainly no web/HTTP issues with POSTing a form containing more than eleven selected fields. Presumably then, there is some technical limitation deeper within Amex's offline systems restricting processing to batches of no more than eleven statements. Why expose that technical limitation to the customer and force them to mentally perform the batching? Why not allow the customer to simply click a few buttons requesting all of their statements, and have some server-side code batch this request into multiple commands to downstream systems, if that is what is required? Shouldn't web front ends be all about façades and anti-corruption layers?

24 Hours Later...

If you thought that would have been the end of my little rant, then I'm sorry to disappoint. But the usability of this functionality didn't improve much when I returned the following day to download the statements that I had ordered.

Sure enough, the page listed individual hyperlinks to each statement that had been ordered:

American Express Links

Requiring 61 clicks, and 61 downloads of individual PDF files. Why so hard? Again, I turn my attention to how the mighty GMail works - when I receive a message containing multiple attachments I have the option of opening/downloading them individually or downloading a single ZIP file containing all attachments. It is the little touches like this that make GMail so enjoyable to use, and serve to embarrass other sites which omit the same niceties.

But hey, I finally got all my statements downloaded:

American Express Statements

...and now I just need to write a quick little script to rename the files into a more useful format, say YYYY-MM! I don't know about you, but I've never seen a benefit in sorting alphabetically by the name of the month.

On the face of it, then, the American Express website has provided exactly the functionality that I wanted - to be able to download PDF copies of all my historical statements. But the functionality has been designed and developed in such an ill-conceived way as to be unpleasant and time-consuming to use at every step of the unnecessarily long process.