0
votes

I've got a business.

We use a paypal account to collect cash from our customers.

We currently use the braintree SDK to actually get the user's payment authorization. We use a barely-changed implementation of these instructions

We are currently pricing and settling in Canadian dollars, as we're a Canadian company and we didn't really think we'd get this big.

We'd like to expand to using USD price and settle, since most of our customers and suppliers are in USD and we'd like to avoid the currency conversion. I had been hoping this would be easy: Our code currently creates a Braintree::Transaction::Sale() with merchantAccountId: 'CAD', and I was hoping I could just switch to merchantAccountId: 'USD'. However, this gets me a 2091 decline: "Currency of this transaction must match currency of your PayPal account".

How can we make our PayPal account's currency USD? I have tried (in the sandbox) to switch to it having USD as primary, but no luck.

I have confirmed that USD is selected as a currency in my "Express Checkout via Braintree SDK" settings here.

In the labyrinth of documentation sprayed around PayPal and Braintree's sites, I haven't been able to figure out how exactly to solve this problem that doesn't involve creating entirely new PayPal and/or Braintree accounts. I'm not even certain creating entirely new accounts would solve my issue, because I don't remember setting CAD as any kind of permanent setting while setting up our original PayPal account.

1
It's possible you generated a client token using a non-USD merchant account, went through the PP flow, and then attempted transaction.sale() with the USD merchant account. According to the Braintree docs for the 2091 decline code you cited, "Your PayPal account can only process transactions in the currency of your home country. Contact PayPal's Support team for more information."Shea
Annoyingly, going to one of Braintree's support pages actually recommended posting on Stack with the tags paypal and braintree, which is what I've done. Going through other similarly-tagged questions, it appears that actual Braintree employees often reply, so that is/was my hope here. That said, while googling stuff to make sure I wasn't crazy, there appears to be many, many other support pages, so I may try some of them tomorrow.ArtHare
I had previously generated my client token with the wrong account, but that produced a different generic authorization error. Once I changed my client-token generation to exactly match my transaction::sale attempt, it reverted to the "wrong country" response.ArtHare
I don't know if this will be our long-term solution, but for now we've applied for a production braintree account with USD/CAD capabilities. Since the sandbox braintree solution lets us do exactly what we want, this seems like the way to go.ArtHare

1 Answers

0
votes

Our solution: We switched to use Stripe. It was an easier signup and far better docs. We missed the desire to keep our old PayPal account, but it's not the end of the world.