/v1/me/* y /v1/auth/*, y requiere
una sesión de usuario (JWT); las API keys no aplican.
Esta guía es la casa de los factores y preferencias 2FA del usuario
(SMS/WhatsApp/email, app autenticadora, códigos de recuperación, passkeys).
El flujo OTP por acción que tu integración maneja cuando la API responde
otp_required (challenge → verify → X-OTP-Token) está documentado en
Seguridad y 2FA (OTP).Datos del perfil e identidad verificada
PATCH /v1/me actualiza los datos del perfil (display_name, tax_id,
phone, country, locale). locale sigue editable tras el KYC. Ver Idioma y locale.
Pero con la verificación de identidad (KYC/KYB)
aprobada, el nombre, el tax ID y el país se rellenan automáticamente
desde la identidad verificada — lo que confirmó la verificación, no lo
autodeclarado — y quedan inmutables por este endpoint:
phone sigue editable en todo
momento con su propio flujo de verificación (OTP al número anterior cuando
la política lo exige).
Contraseña
1
Cambiarla (con sesión)
POST /v1/me/password con current_password y new_password. Si tu cuenta
se creó por login social y aún no tiene contraseña, dejas current_password
vacío para fijar la primera. Al cambiarla se revocan todas las demás
sesiones y la respuesta trae una sesión nueva.2
Recuperarla (sin sesión)
POST /v1/auth/password/forgot con org y email. Siempre responde 200
con el mismo cuerpo, exista o no la cuenta (no filtra si el email está
registrado). El código llega al email; con channel:"sms" llega al teléfono
verificado.POST /v1/auth/password/reset con code y new_password. Revoca todas
las sesiones.3
Usar un link de recuperación del admin
Si eres member de una cuenta empresa y tu admin inició la recuperación, usa el
link enviado a tu email. Abre
/reset-password en el portal y envía el
token de la URL junto con el slug de la org y tu nueva contraseña a
POST /v1/auth/password/reset-link. El link es de un solo uso y expira en
60 minutos. Al canjearlo se verifica tu email, se limpia el registro pendiente
y se revocan todas las sesiones.Email de login
El email se puede cambiar, pero siempre se verifica el email nuevo: el código llega a la dirección nueva y solo al confirmarlo se aplica el cambio. Esto evita que alguien apunte el login a un buzón que no controla.1
Iniciar el cambio
POST /v1/me/email/change con new_email. Si la política 2FA lo exige, envía
también el header X-OTP-Token de la acción email_change.2
Confirmar con el código
POST /v1/me/email/confirm con el code recibido en el email nuevo. Se avisa
al email anterior del cambio.Cambiar tu email no rompe tus inicios de sesión sociales ya vinculados
(Google, Apple, etc.): se identifican por el proveedor, no por el email.
Alias y QR para recibir
Cada cuenta tiene dos identificadores públicos permanentes para que te envíen dinero entre cuentas CBPay:- Alias del perfil —
PUT /v1/me/aliasfija un alias permanente derivado del nombre verificado por KYC/KYB. El body es opcional; si envíasalias, debe coincidir con un candidato derivado de ese nombre verificado. No puedes elegirlo libremente ni renombrarlo. Es distinto delbank_aliasde una CVU argentina. - QR de perfil —
GET /v1/me/qrdevuelve elqr_token, el payloadcbpay:pay?to=<token>y un PNG listo para mostrar. Solo sirve para recibir, por eso no cambia nunca.
GET /v1/resolve?alias=taylor.code (o ?qr=<token>), que devuelve tu nombre,
tipo y avatar. Y las transferencias aceptan el destino directo:
to_qr_token funciona igual (acepta el token o el payload cbpay:pay?to=…).
Foto de perfil
PUT /v1/me/avatar con los bytes de la imagen (JPEG, PNG o WebP, máx 512 KB;
el tipo se detecta del contenido). DELETE /v1/me/avatar la quita y
GET /v1/avatars/{accountID} la sirve para las vistas previas.
La respuesta trae avatar_url: cuando la imagen queda publicada en el CDN
público es una URL absoluta que carga sin autenticación (ideal para el
front — úsala directo en un <img>); GET /v1/avatars/{accountID} responde
en ese caso con un 302 hacia la misma URL.
Doble autenticación (2FA)
CBPay protege acciones sensibles con un código de un solo uso. Tú eliges, por acción, si se exige y por qué canal:
Con
GET /v1/otp/preferences ves tu política efectiva (y qué exige tu
organización, que es el piso: puedes endurecer, no bajar de ahí). Con
PUT /v1/otp/preferences la ajustas. Relajar tu 2FA (desactivar una acción
o bajar de canal) pide primero verificar tu factor actual.
App autenticadora (TOTP)
1
Enrolar
POST /v1/me/totp/enroll devuelve el otpauth:// y un QR. Escanéalo en tu app.2
Confirmar
POST /v1/me/totp/confirm con el primer código. Te entrega 10 códigos de
respaldo de un solo uso — guárdalos, se muestran una sola vez.POST /v1/me/totp/recovery-codes o quita la app con
DELETE /v1/me/totp (ambos piden un código vigente).
Passkeys
Los passkeys te dejan entrar sin contraseña usando la biometría del dispositivo (Face ID, Touch ID, Windows Hello, o una llave de seguridad).1
Registrar
POST /v1/me/passkeys/register/begin → pasa options.publicKey a
navigator.credentials.create() → POST /v1/me/passkeys/register/finish con
el resultado y un nombre (“MacBook de Taylor”).2
Iniciar sesión
POST /v1/auth/passkey/login/begin con org → navigator.credentials.get()
→ POST /v1/auth/passkey/login/finish. Como el passkey ya son dos factores
(dispositivo + biometría), este login no pide un segundo código.GET/DELETE /v1/me/passkeys. No puedes quitar
tu único método de acceso.
Los passkeys y el registro de passkeys dependen de que tu organización tenga
configurado su dominio; si no, responden
passkeys_unavailable.Sesiones y actividad
GET /v1/me/sessionslista tus sesiones activas (dispositivo, IP, método de login, cuál es la actual).DELETE /v1/me/sessions/{id}cierra una;POST /v1/me/sessions/revoke-allcierra todas menos la actual.GET /v1/me/security/events?from=&to=es el historial de seguridad de tu cuenta: logins, cambios de contraseña o email, factores agregados o quitados.
Errores frecuentes
¿Puedo cambiar mi alias o mi QR más adelante?
¿Puedo cambiar mi alias o mi QR más adelante?
No. Ambos son permanentes por diseño: son tu identidad estable para recibir
dinero. El QR solo permite recibir, así que compartirlo no es un riesgo.
Perdí el teléfono con mi app autenticadora
Perdí el teléfono con mi app autenticadora
Usa uno de tus códigos de respaldo (los que recibiste al confirmar TOTP)
en cualquier verificación o login. Si no los tienes, recupera el acceso con
otro factor (passkey o contraseña + otro canal) y regenera todo.
¿Cambiar el email me desconecta de Google/Apple?
¿Cambiar el email me desconecta de Google/Apple?
No. Los inicios de sesión sociales se identifican por el proveedor, no por el
email, así que siguen funcionando.