Product Craft Bible
Fintech UI
Inicio Verticales Fintech UI
Verticales

Fintech UI

10 reglas MDN Web Docs · Matthew Strom -- Design Better Data TablesBaymard Institute -- Inline Form Validation · Evil Martians -- Payment Form Best Practicesweb.dev -- Payment Forms (Google) · WHATWG HTML Living StandardNielsen Norman Group -- Skeleton Screens 101 · Jakob Nielsen -- Response Time Limits
183

Fintech UI

10 reglas
1605

font-variant-numeric: tabular-nums en columnas financieras

Toda columna de importes, portfolios y dashboards debe usar font-variant-numeric: tabular-nums para que cada digito ocupe el mismo espacio horizontal. Los valores monetarios deben alinearse a la derecha para que los puntos decimales apilen verticalmente.

.amount { font-variant-numeric: tabular-nums; text-align: right; }
.account-no { font-variant-numeric: tabular-nums slashed-zero; }
MDN Web Docs · Matthew Strom -- Design Better Data Tables
Preferir
Movimientos recientes
Netflix $1,204.00
Spotify $340.50
AWS $12,000.00
Evitar
Movimientos recientes
Netflix $1,204.00
Spotify $340.50
AWS $12,000.00
1606

Validar numero de tarjeta en onblur, no en keystroke; ejecutar Luhn client-side

Disparar la validacion de tarjeta solo cuando el usuario abandona el campo (onblur), nunca mientras escribe. Ejecutar el algoritmo Luhn (mod-10) inmediatamente en el cliente para detectar errores de tipeo antes de cualquier llamada de red. Auto-formatear en grupos de cuatro: 4111 1111 1111 1111.

input.addEventListener('blur', () => { if (!luhn(val)) showError('Verifica el numero de tarjeta'); });
Baymard Institute -- Inline Form Validation · Evil Martians -- Payment Form Best Practices
Preferir

Tarjeta Visa verificada

Evitar

Numero de tarjeta invalido

El usuario aun esta escribiendo los 16 digitos

1607

Atributos autocomplete exactos en cada campo de pago

Usar el token exacto de autocomplete para cada campo: cc-name, cc-number, cc-exp, cc-csc. Agregar inputmode="numeric" a numero y CVV para mostrar teclado numerico en movil sin usar type="number". Nunca usar autocomplete="off" en campos de pago.

<input type="text" inputmode="numeric" autocomplete="cc-number" />
<input type="text" inputmode="numeric" autocomplete="cc-csc" />
web.dev -- Payment Forms (Google) · WHATWG HTML Living Standard
Preferir
Maria Garcia cc-name
09/28 cc-exp
•••
Chrome completa todos los campos en un tap
Evitar
Sin autorrelleno disponible
Sin autorrelleno
autocomplete="off" bloquea el gestor de contrasenas silenciosamente
1608

Mostrar skeleton solo despues de 500ms; que coincida con el layout real

El placeholder skeleton debe aparecer unicamente cuando la carga supera 500ms. Por debajo de ese umbral, el estado vacio seguido del contenido es perceptualmente mas rapido. El skeleton debe reflejar el numero exacto de filas visibles (+-1 fila) para evitar content shift al llegar los datos.

Nielsen Norman Group -- Skeleton Screens 101 · Jakob Nielsen -- Response Time Limits
Preferir
Transacciones
Estructura: circulo 32px + 2 lineas + importe · solo tras >500ms
Evitar
Transacciones
3 barras genericas; la lista real tiene 8 filas con icono + 2 lineas
1609

Confirmar transferencias con pantalla completa que muestre los 5 campos clave

Transferencias significativas deben mostrar una pantalla dedicada de revision antes de ejecutarse. La pantalla debe incluir: nombre del destinatario, cuenta/IBAN, institucion, importe con simbolo de moneda y fecha estimada de llegada. El CTA debe ser especifico: "Enviar $1,200.00", no "Confirmar".

Nielsen Norman Group -- Heuristica 5 (Error Prevention) · UX Planet -- Confirmation Dialogs
Preferir
Revisar transferencia
DestinatarioMaria Garcia
CuentaHSBC ****4521
Importe$1,200.00 MXN
Llegada estimadaHoy antes de 18:00
Destinatario nuevo · verifica el numero
Evitar

Estas seguro?

Sin importe ni destinatario visibles; "Si" no comunica consecuencia
1610

Nunca usar solo rojo/verde para valores positivos/negativos

Aproximadamente el 8% de los hombres tiene deficiencia rojo-verde. Acompanar siempre el color con un indicador tipografico: signo mas/menos, icono de flecha, o notacion contable ($340). El texto debe alcanzar minimo 4.5:1 de contraste sobre el fondo (WCAG 2.2 AA).

.gain { color: #276D3B; } /* 5.1:1 */
.loss { color: #B71C1C; } /* 5.3:1 */
WCAG 2.2 -- SC 1.4.1 Use of Color · WebAbility -- WCAG for Finance
Preferir
Mi Portafolio
AMZN +$430.00
TSLA -$210.00
GOOG +$120.00
Evitar
Mi Portafolio
AMZN $430.00
TSLA $210.00
GOOG $120.00
#00CC00 y #FF0000: contraste <4:1; inaccesible para daltonismo
1611

Dividir KYC en pantallas de tarea unica con checklist previo

Los flujos KYC tienen 50-80% de abandono; la subida de documentos es el paso de mayor fuga. Mostrar una pantalla "Antes de empezar" con: documentos necesarios, tiempo estimado y consejos de entorno. Cada pantalla posterior contiene exactamente una tarea. Mostrar barra de progreso segmentada en cada paso.

Shuftipro -- How to Reduce KYC Drop-Off · KYCAID -- Reducing User Drop-off
Preferir
Paso 1 de 4

Antes de empezar

Tendras todo listo en 3 minutos

INE o pasaporte vigente
Buena iluminacion para selfie
Comprobante de domicilio reciente
Evitar
Verificacion de identidad
INE frente + reverso
Selfie con ID
Comprobante de domicilio
1612

Mostrar score crediticio como arco con valor numerico, extremos y etiqueta verbal

El gauge de score debe mostrar: el numero (minimo 32px), los extremos del rango etiquetados, y una categoria verbal ("Bueno", "Excelente"). El segmento activo del arco debe alcanzar 3:1 de contraste contra el track inactivo (WCAG 2.2 SC 1.4.11). Animar el fill en 600-800ms ease-out, gateado por prefers-reduced-motion.

WCAG 2.2 -- SC 1.4.11 Non-text Contrast · Eleken -- Fintech Design Guide 2026
Preferir
300 850
742
Bueno

Escala 300-850 · Verde #276D3B vs track: 4.2:1

Evitar

Sin numero, sin escala, sin categoria

1613

Enmascarar numeros de cuenta por default; revelar solo con toggle explicito

PANs, IBANs y numeros de cuenta deben mostrarse enmascarados al cargar (ej. ".... .... .... 4521"). Proveer un icono de ojo (minimo 44x44px) que revele el numero completo maximo 30 segundos antes de re-enmascarar. Usar caracteres de reemplazo en el DOM, nunca CSS blur.

aria-label="Mostrar numero de tarjeta" /* toggle */
/* Re-mascara a los 30s con setTimeout */
PCI DSS v4.0.1 -- Requisito 3.3 · NIST SP 800-63B
Preferir
TARJETA PRINCIPAL Visa

.... .... .... 4521

Toca el ojo para revelar · re-enmascara en 30s

Evitar
TARJETA PRINCIPAL Visa

4111 1111 1111 4521

Numero completo expuesto en captura de pantalla y "shoulder surfing"

1614

Campo de monto: simbolo de moneda externo al input, inputmode="decimal"

El simbolo de moneda debe ser un elemento DOM adyacente (no placeholder), para que no desaparezca al escribir y los lectores de pantalla lo anuncien correctamente. Usar inputmode="decimal" (no type="number") para el teclado correcto en movil. Un solo campo para enteros y decimales, con separadores de miles automaticos.

<span>$</span><input inputmode="decimal" autocomplete="transaction-amount" />
Luke Wroblewski -- Web Form Design · web.dev -- Payment Forms
Preferir

Enviar dinero

$ MXN

El usuario escribio "1500" · separador de miles automatico · inputmode="decimal" activa teclado decimal en iOS/Android

Evitar

Enviar dinero

.

El "$" desaparece al escribir; pegar "250.75" no funciona en ningun campo