Troubleshooting
| What you see | Why | What to do |
|---|---|---|
| “Braintree did not accept the API keys” | Public and private key are from another account or environment | Copy both keys again from the same Control Panel (sandbox or production) and Save and test |
| “The keys belong to merchant …” | The merchant ID does not match the keys | Enter the merchant ID shown in the Control Panel next to the keys |
| The method is not shown at checkout | Not connected, not licensed, no merchant account for the cart currency with conversion off, or (Multi-Vendor, owner mode off) a cart with several vendors or a vendor without a connection | Test the connection; check the merchant accounts on the Connection page and the “Charge other currencies” setting |
| “Your bank did not confirm the payment (3D Secure)” | 3D Secure could shift the liability but did not | The customer tries again or uses another card; switch off “Require liability shift” only if you accept the chargeback risk |
| “Braintree has not confirmed your payment yet” | Braintree did not answer clearly (timeout) | Nothing to do: the cron books the payment as soon as Braintree reports it; make sure the cron runs |
| Refund not offered on the order tab | The payment is not settling yet | Void it instead, or refund it after settlement (usually within a day) |
| Webhook “Check URL” fails | The URL is not HTTPS, or a firewall / bot filter blocks Braintree | Run the storefront on HTTPS; allow POST requests to the webhook URL |
| Red banner “Payments that need your attention” | A payment that did not match the order still holds money, or a settlement was declined | Open the payment in the list; void or refund it, or check it in the Braintree Control Panel |
Turn on “Debug log” (add-on settings) to see every API call in Orders > Braintree > Log; keys, card data and personal data are masked. Switch it off when you are done.