I strongly suspect that Magento 2 (as of 2.4.4) is missing the redirection that must be done on PayPal error 10486, during normal checkout and with "skip payment review" enabled. Notice that this is an error usually originated in PayPal, due to some problem with the selected source of funds (although there are some other possible reasons...), and therefore it can be some times solved by the user just by selecting another source of funds (therefore, we should really try to redirect).
My proposal would be to add in vendor/magento/module-paypal/Controller/Express/OnAuthorization.php:, within and by the end of the ApiProcessableException catch the following 5 lines of code (to inform the frontend where to redirect, since this is the backend running in the context of an ajax request):
// ...
} catch (ApiProcessableException $e) {
$responseContent['success'] = false;
$responseContent['error_message'] = $e->getUserMessage();
if (ApiProcessableException::API_UNABLE_TRANSACTION_COMPLETE === (int)$e->getCode()) {
$responseContent['error_message'] = __('The transaction could not be completed. Redirecting to PayPal to review details.');
$responseContent['error_code'] = (string)(int)$e->getCode();
$responseContent['redirectUrl'] = $this->_config->getExpressCheckoutStartUrl($this->_initToken());
}
}
// ...
To trigger the redirect in the frontend, I would then add the following 8 lines or so, before the return reject(...), in the afterOnAuthorize method, in vendor/magento/module-paypal/view/frontend/web/js/view/payment/method-renderer/in-context/checkout-express.js:
// ...
if (
typeof res['error_code'] !== 'undefined'
&& typeof res['redirectUrl'] !== 'undefined'
&& res['error_code'] === '10486'
&& res['redirectUrl']
) {
return actions.redirect(res['redirectUrl']);
}
// ...
I cannot certify how stable is my suggestion, so use it at your own risk.