Until now this are the measures that we took and seams to significantly improve the transaction decline rate. After applying all 3 solutions, we didn't receive any reports of other users not being able to checkout using Braintree on our Magento 2.1 store.
Several WeltPixel users reported receiving below error when trying to checkout on our Magento 2.1 store via Braintree. "An error occured on the server. Please try to place the order again."
After several investigations we found not one but several independent issues that lead to this behaviour, you can find the solutions below:
Case when the checkout fails if there is no region, affecting UK checkouts, and any countries without preset regions.
Solved by installing this extension: https://github.com/gloong/module-quote
This a module to provide a work around for the Magento issue where checkout fails, if there is no region. The issue has been reported severally. Please find an example issue here: https://github.com/magento/magento2/issues/7387
Case when the error was generated because there was a mismatch between the accepted credit cards in Magento 2 Braintree Extension and Braintree Merchant account.
We discovered that AMEX payment method was enabled in our Magento 2 Braintree extension but not enabled in out Braintree Merchant account. In this case the server error was returned to customers on checkout page generating confusion.
Make sure your Magento 2 extension settings on credit card acceptance match your Braintree Merchant account accepted payment methods.
How to check accepted credit cards in Magento:
Magento Admin > Configuration > Sales > Payment Methods > Braintree > Advanced settings > Credit Card Types
How to check accepted credit cards in Braintree:
Go to your Braintree account > Settings > Processing > Merchant accounts
After solution 1 & 2 was applied the remaining users reporting the server checkout issue turned to be users with credit card restrictions from their bank. We checked several declined transactions, all of them were declined because of a client credit card soft decline (credit card limits reached, unusual transaction, insufficient funds, billing and shipping address not matching / zip not matchin - bank stoping the transaction to pass because of high risk, etc..)
We considered it's confusing to show the server error on checkout as remaining cases are due to client bank restrictions and decided to replace the server error message with a more explicit message that will guide the customer to reach their bank and ask for the payment to go trough.
Considering above, we replaced the initial message "An error occurred on the server. Please try to place the order again." with “Your bank is unwilling to accept the transaction. This is a soft decline. Please contact your bank and try again.”
--> How to implement Solution 3 in your SQL database:
INSERT INTO `translation` (`string`, `store_id`, `translate`, `locale`) VALUES
(‘An error occurred on the server. Please try to place the order again.‘, 1, ‘Your bank is unwilling to accept the transaction. This is a soft decline. Please contact your bank and try again.‘, ‘en_US’);
where '1' is the store_id, and ‘en_US’ the locale
Hope this helps, this is what worked for us, feel free to comment or add other solutions that may help users experiencing Braintree related problems with Magento 2.