🔒 Acceso Protegido

Esta documentación requiere autenticación

Skip to content

Retiros

Módulo de Gestión de Retiros

Este módulo maneja todas las operaciones relacionadas con retiros de fondos del sistema OnSpot.

Descripción General

El módulo de retiros es responsable de procesar, validar y gestionar todas las solicitudes de retiro de fondos de los usuarios, incluyendo validaciones de seguridad, límites y procesamiento de pagos.

Funcionalidades Principales

Gestión de Retiros

  • Crear solicitudes de retiro: Procesamiento de nuevas solicitudes
  • Validar retiros: Verificación de fondos y límites
  • Procesar retiros: Ejecución de transferencias
  • Consultar estado: Seguimiento de retiros en proceso
  • Historial de retiros: Registro completo de operaciones

Estados de Retiro

  • Pending: Solicitud creada, pendiente de validación
  • Approved: Retiro aprobado, listo para procesamiento
  • Processing: Retiro en proceso de transferencia
  • Completed: Retiro completado exitosamente
  • Rejected: Retiro rechazado por validaciones
  • Failed: Retiro fallido durante el procesamiento

Estructura de Datos

Entidad Retiro

typescript
@Entity('withdrawals')
export class Withdrawal {
  @PrimaryGeneratedColumn('uuid')
  id: string;

  @Column()
  accountId: string;

  @Column()
  userId: string;

  @Column({ type: 'decimal', precision: 10, scale: 2 })
  amount: number;

  @Column()
  currency: string;

  @Column()
  destinationAccount: string;

  @Column()
  destinationBank: string;

  @Column({ type: 'enum', enum: WithdrawalStatus })
  status: WithdrawalStatus;

  @Column({ nullable: true })
  transactionId: string;

  @Column({ nullable: true })
  rejectionReason: string;

  @Column({ type: 'decimal', precision: 5, scale: 2 })
  fee: number;

  @CreateDateColumn()
  createdAt: Date;

  @UpdateDateColumn()
  updatedAt: Date;

  @Column({ nullable: true })
  processedAt: Date;
}

Endpoints Principales

  • GET /withdrawals - Listar retiros
  • GET /withdrawals/:id - Obtener retiro por ID
  • POST /withdrawals - Crear nueva solicitud de retiro
  • PUT /withdrawals/:id/approve - Aprobar retiro
  • PUT /withdrawals/:id/reject - Rechazar retiro
  • PUT /withdrawals/:id/process - Procesar retiro
  • GET /withdrawals/user/:userId - Retiros por usuario

Validaciones

Validaciones de Negocio

  • Fondos suficientes: Verificar saldo disponible
  • Límites diarios: Validar límites de retiro
  • Límites mensuales: Control de límites periódicos
  • Cuenta destino: Validar información bancaria
  • KYC/AML: Verificaciones de cumplimiento

DTOs de Entrada

typescript
export class CreateWithdrawalDto {
  @IsNotEmpty()
  @IsUUID()
  accountId: string;

  @IsNotEmpty()
  @IsNumber()
  @Min(1)
  amount: number;

  @IsNotEmpty()
  @IsString()
  currency: string;

  @IsNotEmpty()
  @IsString()
  destinationAccount: string;

  @IsNotEmpty()
  @IsString()
  destinationBank: string;
}

Flujo de Procesamiento

Flujo Estándar

  1. Solicitud: Usuario crea solicitud de retiro
  2. Validación: Sistema valida fondos y límites
  3. Aprobación: Revisión manual o automática
  4. Procesamiento: Ejecución de la transferencia
  5. Confirmación: Notificación de completación

Validaciones Automáticas

  • Verificación de saldo disponible
  • Validación de límites configurados
  • Verificación de información bancaria
  • Controles de fraude básicos

Validaciones Manuales

  • Retiros de montos altos
  • Cuentas nuevas o sospechosas
  • Patrones de retiro inusuales
  • Verificaciones adicionales de KYC

Configuración de Límites

Límites por Tipo de Usuario

typescript
export interface WithdrawalLimits {
  dailyLimit: number;
  monthlyLimit: number;
  minimumAmount: number;
  maximumAmount: number;
  requiresApproval: boolean;
}

Configuración de Fees

  • Fee fijo: Tarifa fija por retiro
  • Fee porcentual: Porcentaje del monto
  • Fee mínimo: Tarifa mínima aplicable
  • Fee máximo: Tarifa máxima aplicable

Integraciones

Servicios Bancarios

  • Conexión con APIs bancarias
  • Procesamiento de transferencias
  • Validación de cuentas destino
  • Confirmación de transacciones

Servicios de Notificación

  • Email de confirmación
  • SMS para retiros importantes
  • Notificaciones push
  • Webhooks para sistemas externos

Seguridad

Medidas de Seguridad

  • Autenticación multifactor para retiros grandes
  • Verificación de IP y dispositivo
  • Límites de velocidad para prevenir abuso
  • Auditoría completa de todas las operaciones

Detección de Fraude

  • Análisis de patrones de retiro
  • Verificación de geolocalización
  • Validación de comportamiento del usuario
  • Alertas automáticas para actividad sospechosa

Monitoreo y Reportes

Métricas Clave

  • Volumen de retiros por período
  • Tiempo promedio de procesamiento
  • Tasa de éxito/fallo
  • Montos promedio por retiro

Alertas

  • Retiros fallidos
  • Límites excedidos
  • Actividad sospechosa
  • Problemas de conectividad bancaria

Versión: 1.0 | Actualizado: hace 2 meses

Documentación OnspotIntl