My set-up:
ZC 1.5.5f
PHP 7.1.23
mySQL 5.5.60
Template: BusinessSet_res Black for ZC 1.5.5
Plugins: Sales report 3.2.0, Group price per item 155, InstantSearch 1.0.2, CEON URI Mapping 4.5.5 and Optional payment method 1.2

We are running a web store from Canada. We have our default currency set to USD and allow customers to check out in USD, CAD and Euro. Works great with PayPal and payments go into the same respective currency in PayPal.

Since we where doing upgrades we decided to add Square Payments. Our Square account is in CAD (this is Square's rule - since our business is located in Canada). The installation went smoothly, Square payments show up at checkout, all looks good.

When we checkout using Square and the order total is in USD the amount captured by Square is correct (as seen both in the Square dashboard and on the Admin Orders details page). That is, the order total in USD times the exchange rate into CAD. Eg. rate is 1:1.3, sale for a $1.00 USD order gets captured by Square as $1.30 CAD.

Problem: But if the checkout is done in CAD the amount captured by Square is wrong. It only captures the value amount in USD but in CAD. Eg. customers checks out with a product priced in the admin at $1.00 USD but they have their log in currency set to CAD, so they see it as $1.30 CAD, OK so far. At check out, Square then captures the sale as $1.00 CAD. Essentially shorting us by 30% (the current exchange rate) rather then just capturing the $1.30 CAD displayed to the customer and matching the currency used by Square. Afterwords, when logged in as a customers (or admin side) the order details, amounts and currencies display correctly, just not the amount captured by Square (as seen both in the Square dashboard and on the Admin Orders details page).

There is one warning created in the log file: Illegal string offset 'id' in /homepage/.…./Store/includes/modules/payments/square.php on line 143

Update: For a test I installed a fresh 1.5.5f with only Square Payment 0.94 and a fresh database with only example products no other plug-in or mods and I get the same results (but without the log warning).

Any ideas?