There are lot of things the reason why the authentication failed. It can be either the card holder input incorrect authentication detail (such as; wrong OTP) or because the issuer decline the authentication due to their on reason.
Xendit in here responsible to support authentication page when the card is enrolled in 3DS authentication, but the result of authentication itself coming from the issuer. During the journey, we can't proceed transaction continue to be charged if on the authentication we got failed result since transaction without success authentication will have no chargeback liability for merchant.
It's necessary to ensure that card holder need to put correct authentication detail and if there's a case where the end user seemly already put the correct detail (OTP) but still have failed authentication, merchant can use again the authentication URL for them to retry or we can suggest them to ask the issuer for the reason why.