The problem is with the payment verification gateway of amex and some times visa. Depending on what your card provider has set up there is usually a verification step before the payment is cleared (entering a password/phrase, a code sent to you by sms text message etc). It seems many US bank have that verification step switched off for their customers. I have noticed that if such step is deactivated (prime example: Chase switched off 'secured by visa') then the airline will not accept payment for fear of fraud.