Payment Options Do Not Match Currencies

We started our shop with 2 payment options and just one currency. Both payment options are set to US dollars - which is currently the only currency - so far so good.

However, If I add Euro now as a new currency, everything is converted correctly, but I still see our 2 US-dollar payment options at checkout. Those options should be not available at checkout, since the only capable of receiving US dollars. I will create a 3rd option for Euro - which then also only can accept Euro and should be hidden when a customer selects USD as currency.

Am I missing something? Is that a bug? Or where can I exclude payment options from currencies even if they are already bound to a certain currency?!

Thanks,

Stefan

Generally the cart deals with a single CART_CURRENCY (base currency). When a customer selects a different currency, the currency conversion shows them the price in their selected currency and their invoice and other order info will show in the selected currency when the order is placed.

But all transactions are done in the CART_CURRENCY (in your case USD). Some payment processors support utilizing separate currencies (like Paypal) but this is processor specific and needs to be dealt with within that provider payment script. Note that the payment provider uses their own "rate table" and so the actual value you receive in USD equivalent may not be the same as what the user's currency was calculated to be.

So I would think that it is a bug in your payment method that is not restricting availability of that payment method by customer selected currency.

We started our shop with 2 payment options and just one currency. Both payment options are set to US dollars - which is currently the only currency - so far so good.

However, If I add Euro now as a new currency, everything is converted correctly, but I still see our 2 US-dollar payment options at checkout. Those options should be not available at checkout, since the only capable of receiving US dollars. I will create a 3rd option for Euro - which then also only can accept Euro and should be hidden when a customer selects USD as currency.

Am I missing something? Is that a bug? Or where can I exclude payment options from currencies even if they are already bound to a certain currency?!

It is hard to create universal system here. Some payment gateways accepts only dollars, some dollars and euros, another dollars and rubles. Moreover for one payment method you should send USD as currency, for another one - 840, for third one - US

Therefore all transactions are made in the base currency.

Normally how it works in many other shop systems and as we it had before:

There is one or more payment method defined per currency and when a customer changes currency, only the assigned payment method should be shown. Otherwise the multi currency is totally useless - You cannot show a customer a certain price based on the internal rate table and when it comes to payment, the rate table of the payment processor is used - This will, in most of all cases, result in a different total amount what a customer sees at checkout and what he is actually billed. By the way: Most CC company's charge an additional fee for foreign currency processing - so when a customer selects EURO and is actually billed on USD, he has to pay a fee of 1% for the transaction to his credit card company!

That is a absolute no go and should be fixed by CS development.

The currency selected by the customer MUST be submitted to the payment processor - that's the ONLY way to handle it correctly.

Normally how it works in many other shop systems and as we it had before:

There is one or more payment method defined per currency and when a customer changes currency, only the assigned payment method should be shown. Otherwise the multi currency is totally useless - You cannot show a customer a certain price based on the internal rate table and when it comes to payment, the rate table of the payment processor is used - This will, in most of all cases, result in a different total amount what a customer sees at checkout and what he is actually billed. By the way: Most CC company's charge an additional fee for foreign currency processing - so when a customer selects EURO and is actually billed on USD, he has to pay a fee of 1% for the transaction to his credit card company!

That is a absolute no go and should be fixed by CS development.

The currency selected by the customer MUST be submitted to the payment processor - that's the ONLY way to handle it correctly.

As a result we will see a lot of threads on forum with name similar to "payment method doesn't work". it can be done for several payment methods, but not for all of them

As a result we will see a lot of threads on forum with name similar to "payment method doesn't work". it can be done for several payment methods, but not for all of them

So basically it IS possible? How can I deactivate CC & Paypal US when EURO is selected and enable Paypal EURO instead?

So basically it IS possible? How can I deactivate CC & Paypal US when EURO is selected and enable Paypal EURO instead?

Sorry, my post was not about mentioned solution, but about universal system. I am afraid, additional code modifications are required to configure store in the described way.

In Paypal, there is a currency setting. I would suggest you submit a defect if Paypal payment method is showing for an currency setting that does not match the currency in use by the customer. If you're not using Paypal and the payment method supports a Currency selector, then contact the developer (could be cs-cart or a 3rd party).

it could also be that it is NOT designed to restrict payment methods from use, but only for the transaction itself. I.e. buy $100.00USD charge the customer $140.00CAD.

But again please note that there is no guaranteed that the exchange rate used by the payment provider will match what you are using in your cart unless you have custom code that is getting the exchange rate from that payment provider.

And you could use the 'prepare_checkout_payment_methods' hook in fn.cart.php to filter payment methods within payment groups where the method currency setting (if they use one) does not match the selected currency of the user.