Un campo de RUC recibe números largos que la gente copia de facturas, correos o PDF. Usá type=text con inputmode=numeric: MDN indica que inputmode solo cambia el teclado virtual y no impone validez, por lo que la validación sigue siendo tuya. Evitá type=number, que agrega botones y no sirve para identificadores.

Aceptá el pegado y normalizá en vez de rechazar: quitá espacios y puntos y aceptá el guion. La Resolución General 79/2021 pide escribir el DV al final separado por un guion, así que mostrale al usuario ese formato en la ayuda del campo y no lo obligues a escribirlo exacto. Además, el campo no debería bloquear el autocompletado ni el pegado.

Sobre autocomplete: MDN no lista un token estándar para identificadores fiscales y advierte que los tokens inventados impiden identificar el propósito del campo. No inventes tax-id; dejá el atributo sin valor, o usá organization solo para el campo de razón social.

Mostrá el error cuando la persona terminó de escribir (al salir del campo o al enviar), no a cada tecla; es una recomendación de UX nuestra. web.dev aconseja validar en el cliente pero siempre respaldar con validación en el servidor. Un error por vez, junto al campo, con aria-invalid y un mensaje que diga qué hacer: «Revisá el dígito después del guion», no «RUC inválido».

Cuando usás la biblioteca owncoding-ui, su RucField resuelve varios de estos puntos según su documentación: limpia letras y separadores ajenos al formato al escribir o pegar, no corrige un DV equivocado y solo aplica datos de una consulta después de que la persona confirma. Un DV correcto sigue sin probar que el RUC exista: la consulta es otro paso.