Saltar al contenido
Docs

Referencia

Dar de alta un usuario

POST/v1/partner/usersusers:write

Da de alta un usuario final del partner. El usuario nace PARTNER_MANAGED y no accede a la app. Exige Idempotency-Key.

Propósito

Registra a una persona como usuario final de tu integración. Este usuario será el titular de una wallet y el destinatario de los cobros que generes con links de pago.

Flujo recomendado de integración

  1. Crea el usuario → este endpoint
  2. Crea su wallet de cobro → POST /wallets
  3. Genera links de pago → POST /payment-links
  4. Comparte el link con el pagador

Campos del request

CampoTipoRequeridoDescripción
emailstringCorreo electrónico del usuario. Debe ser único en SLAN.
firstNamestringNombre(s) de pila. Aparece en recibos de pago.
lastNamestringApellido(s). Aparece en recibos de pago.
externalRefstringTu identificador interno para este usuario. Único por partner. Recomendado para reconciliar sin guardar nuestro ULID.

Comportamiento especial

  • Idempotencia con externalRef: si envías un externalRef que ya existe para tu partner, te devolvemos el usuario existente en lugar de crear uno nuevo.
  • Correo duplicado: si el correo ya pertenece a un usuario de SLAN (con app, KYC, tarjetas), se rechaza con 409. No se vinculan cuentas por seguridad.

Errores comunes

CódigoErrorCausaSolución
400IDEMPOTENCY_KEY_REQUIREDFalta el header Idempotency-KeyAgrega un UUID v4 como header
400VALIDATION_ERRORCampo inválido (ej: email mal formado)Revisa el array errors[]
409PARTNER_END_USER_EMAIL_TAKENEl correo ya existe en SLANUsa otro correo o contacta soporte
500INTERNAL_SERVER_ERRORError inesperadoReintenta. Si persiste, reporta el requestId a soporte

Cabeceras

Idempotency-Keyrequerida
Clave única de la intención, 8-128 caracteres (un UUID v4 sirve). Se genera UNA vez por intención del usuario y se reutiliza en cada reintento: mismo cuerpo ⇒ misma respuesta con `Idempotent-Replayed: true`, sin repetir el efecto. La respuesta se guarda 24 h.

Cuerpo de la petición

  • emailstringrequerido

    Ejemplo: "ana.ramirez@example.com"

  • externalRefstringopcional

    Ejemplo: "tripto-user-4821"

  • firstNamestringopcional

    Ejemplo: "Ana"

  • lastNamestringopcional

    Ejemplo: "Ramírez"

Respuesta 201

Nace PARTNER_MANAGED y activo; el ULID es el que se usa para pedirle la wallet

  • createdAtstring

    Ejemplo: "2026-09-04T15:04:05.000Z"

  • emailstring

    Ejemplo: "ana.ramirez@example.com"

  • externalRefstringpuede venir null

    admite null

    Ejemplo: "tripto-user-4821"

  • firstNamestringpuede venir null

    admite null

    Ejemplo: "Ana"

  • isActiveboolean

    Ejemplo: true

  • lastNamestringpuede venir null

    admite null

    Ejemplo: "Ramírez"

  • publicIdstring

    Ejemplo: "01JKX7PEND0000000000000036"

  • statusstring

    Ejemplo: "PARTNER_MANAGED"

Errores

EstadoCódigosCuándo
400IDEMPOTENCY_KEY_REQUIREDFalta la cabecera `Idempotency-Key` o no mide entre 8 y 128 caracteres
401sin codeSin x-api-key válida
403sin codeLa llave no tiene el scope users:write
409IDEMPOTENCY_IN_FLIGHTPARTNER_END_USER_EMAIL_TAKENEl correo ya pertenece a una cuenta del core; no se vincula Hay una petición en curso con esa misma clave: espera y reintenta
422IDEMPOTENCY_PAYLOAD_MISMATCHIDEMPOTENCY_ROUTE_MISMATCHLa clave ya se usó con OTRO cuerpo o en OTRA ruta: genera una nueva
429RATE_LIMITEDLimite de uso: 60 por minuto por credencial. Respeta la cabecera `Retry-After`.
500sin codeError interno inesperado. Reintenta la petición. Si persiste, reporta el `requestId` de la respuesta al equipo de soporte.