Problem/Motivation
Verifications, and thus Braintree transactions, are failing when the API key is assigned to a user that doesn't have acces to the Marketplace Master Merchant (default) Merchant Account ID
In a large organization, there might be several Merchant Account IDs that subdivide a larger Braintree account. There is also a Marketplace master merchant (default) Merchant Account ID.
The merchant account ID is a unique identifier for a specific merchant account in your gateway, and is used to specify which merchant account to use when creating a transaction.
Verifications are happening under the default master merchant account, even when a different merchant account is specified. All transactions will fail if the API user doesn't have access to that master merchant account (common in a large organization).
Steps to reproduce
Make sure there are at least two merchant account IDs defined in a Braintree environment. Create a user that has access to only the non-default/master Merchant Account ID. Also make sure that user has the following in their role:
- Customer Management
- Manage Customers and Payment Methods (Add/Edit/Delete)
- Download Vault Records with Masked Payment Data
Attempt to add a credit card in checkout. On submit, the credit card verification will fail with: "Verifications are not supported on this merchant account"
If you allow the user to have access to "all" Merchant Account IDs, the verifications will succeed, but the verifications will be linked to the default master merchant account id instead of the one provided on the payment gateway definition. This is not desirable or allowable in many organizations.
Proposed resolution
Make sure verifications are happening against the defined/provided merchant account id.