I had the same question and don't see an answer here (yet). My guess is that Schweizer is not an adjective here but part of the name of the currency. Perhaps it should be written Schweizerfranc. If 'swiss franc' is translated using the adjective form it should be: "Das kostet einen schweizerischen Franc". I'm not a native speaker, so if this is incorrect, I would be happy to learn the right answer.
Hamoudeh6, above, wrote this (I think he's right):
"Taking an educated guess here but I think it's because "Frank" is a weak (and masculine) noun like "Geldautomat." Weak masculine nouns take an "en" at the end in all cases except the nominative."
So, do some sideline studies on 'strong and weak nouns in German" and check out the links below.
More on weak nouns here:
That's what I was wandering about,too. Following the German logic the adjective Swiss should take the en suffix before a masculine noun in the accusative case. However there seems to be a unique exception involving the term Swiss Frank or Schweizer Frank in that Schweizer is part of the currency's name and hence it doesn't conform to the rules that apply to adjectives but remains unaffected by the change in cases.