Thanks Maris, I'll file a bug for this.
How often does this happen to you? Is there a way to consistenly reproduce it?
This happened quite often. Some customers were not able to pay with it at all.
But I am using my own Authorize.NET version (decompiled from Episerver's) as we need NoFroud integration. So I fixed it in my version.
Regarding NoFraud, quite long time ago I created a support ticket but seems that is is not implemented yet in Episerver :(
We will eventually release Authorize.NET as open source code project (but that will not happen anytime soon - it always comes to priority). Then you can contribute to the project.
Re: is there a way to reproduce it? Our QAs would need to verify the fix.
No, I do not have steps to reproduce. It happens randomly for different users. But someone in your team has noticed it, but made fix only for AUTHORIZE requests :) Maybe he knows how to reproduce it.
As I am not able to login into Support, I will post this here.
AUTHORIZE request handles E00039 error correctly because it uses AuthorizeNetCimBasedManager.CreateCustomer which handles this. But SALE request uses AuthorizeNetService.CreateCustomer directly without error handling.
Fix is simple, use AuthorizeNetCimBasedManager.CreateCustomer for SALE request in the AuthorizeNetCimBasedManager.ProcessSaleRequest method.
I have Commerce 11.6.1