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