Currency options in the Web storefront
This online shop offers multi-currency payment. In most cases the Web site will automatically guess the most convenient payment currency for you by default based on your IP address; but you can also select others. At the moment we select Canadian dollars, Euros, British pounds, Japanese yen, US dollars, Bitcoin, and Ethereum. Here are some notes on currencies and how to use them.
You can change the display and payment currency on most shop pages with the currency widget at the upper right of the page, or this one here:
Announcing crypto payment
Starting 1 July 2024, we accept payment in Bitcoin and Ethereum. This feature is still somewhat experimental and depending on how well it works and how popular it is, we may or may not keep it. As a decentralized payment system, crypto frees me from having to deal with the nonsense of credit card processors. Over the years I've had a lot of trouble with those, so a system that eliminates them seems quite appealing. On the other hand, cryptocurrency as a payment system is technically complicated; has dubious environmental and tax consequences; and is subject to wildly fluctuating exchange rates.
I chose Bitcoin and Ethereum as the ones to accept because they seem to be the most stable and popular cryptocurrencies. Users of others seem to be accustomed to exchanging into these two when necessary, so they are reasonable choices for a shop like mine which isn't really in the business of speculating on a wide variety of crypto prices.
Each has disadvantages. Bitcoin's transaction fees are significant, and its proof-of-work system consumes a lot of energy, which raises environmental concerns. Ethereum seems to be preferable on those points, but it is based on Javascript. You have to choose which issues are most important if you're going to use one of these.
I've posted crypto-related updates to the terms and conditions and privacy policy pages. In particular, you should be aware that if you select cryptocurrency as your payment method, then you're expected to make the payment within 24 hours. We won't lock in the exchange rate longer than that. Also, cryptocurrency transactions are fundamentally public.
As a special promotion for the month of July 2024, you can enter the discount code "FOMOBUXX" during checkout for 10% off on your order when you pay with cryptocurrency.
Getting the best rate with a credit card
I've found that most customers who use credit cards really want to pay in the "native" currency of their credit card. For instance, someone with a US dollar credit card wants to be charged in US dollars. If I put through a charge in some other currency (for instance, Canadian dollars) then the customer ends up unhappy because they are afraid that their card company will charge an extra fee for the conversion.
However, credit card processors make it very difficult for me to charge customers in their native currency. They all advertise that they will allow me to charge "international cards," but they often demand an extra fee for doing so, and then on top of that, it usually turns out that in the small print it says they will put the charge through in "the currency of [my] shop"; that is to say, even on an "international card" when they charge me the extra fee, they'll still put through the charge in Canadian dollars and so the customer will end up unhappy. My requirement of being able to really charge customers in the customers' own currency is one reason I've had so much trouble finding satisfactory payment processing and I am still using Stripe despite my dissatisfaction with Stripe: despite other problems, at least Stripe (when used carefully) allows me to charge the customers in the customers' own currency.
But the damned thing about it is, paying in your own currency might not really be your best option! People are sure they want that, so I make a big effort to provide it, but it's not clear that it is really a good thing. My basic rule is that I don't want to care what currency you use. I ought to get the same amount (the same number of Canadian dollars) regardless. When you choose to pay me in a currency other than Canadian dollars, I offer you an exchange rate that is calculated to match the exchange rate Stripe offers me. Usually it's the "interbank" rate plus 2%, though it occasionally varies up or a down a small fraction of a percent because of short-term fluctuations.
If you pay in Canadian dollars and let your credit card do the conversion, then you're not paying any exchange rate to me, but you pay the exchange rate offered by your card. Businesses like Stripe will hit you with a lot of fear, uncertainty, and doubt about whether your credit card rate might be worse than theirs, but in fact, the credit card rate is often "interbank plus 2%"; that is, the same as what Stripe offers. It depends on your card, so I can't make a general recommendation valid for everybody; some cards are better or worse; but quite often they're just the same.
The bottom line, then, is that if you pay me in Canadian dollars, or if you pay in the native currency of your card when it's something else, you'll probably get about the same exchange rate. Which one is better depends on your card, and you have to check with your card company to find out, but it's likely to be quite close even if not identical. This is one reason I don't make a big effort to add a large number of international currencies to my storefront: people in places with currencies I don't support will actually end up getting about the same rate anyway by paying in Canadian dollars, even if they use a native currency not supported by my storefront.
The one thing you should probably not do is to pay in some other currency that is neither Canadian dollars nor the "native" currency of your card. Because then you'll be in effect paying a fee for currency conversion twice: once to Stripe via my offered exchange rate, and once again to your own card company. If you're paying with a card whose native currency is not on my list, then you're better off to pay in Canadian dollars, not to choose some other currency from my list.
Current rates
Here's a summary of the rates our e-commerce system currently offers, and how they are calculated.
1 CAD =
- 0.67747 EUR
- 0.56704 GBP
- 110.51 JPY
- 0.74123 USD
- 0.00001162 BTC
- 0.000297 ETH
Canadian dollars are the baseline; our prices are all set in Canadian dollars.
For other national currencies, we use the Bank of Canada's API to get a quote of the interbank rate every business day, and then add 2%. This attempts to approximate the rate we get from our credit card processor, so we hope to make neither a profit nor a loss on currency conversion.
For cryptocurrencies, which trade over-the-counter without an officially reported interbank rate, we use the APIs of several different commercial exchanges to get their prices in US dollars. Then we take a geometric mean of the exchanges' prices and call that the "spot" rate. Then we apply double exponential smoothing ("Holt linear" method, on the logarithms of the rates) to project it 24 hours into the future; use whichever is worse of the projected or most recent spot rates; convert it to CAD at the most recent Bank of Canada rate; and we do all that once every 8 hours. The idea is to get a rate that fairly reflects the market, our desire not to take risks when volatility is high, and the fact that it will probably take about 24 hours between when an order is placed and when we can cash out the payment into Canadian dollars. The internal calculation is done in USD because the USD rates seem to have better data from the exchanges.
That description of how we calculate the rates is intended to be informative for whoever finds it interesting, but not as a legally binding commitment; our formal price offers are simply whatever prices we do offer, however we happen to have calculated them.
◀ PREV Build your own commercial module part 5: pricing your module || Carmilla NEXT ▶