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 retirosGET /withdrawals/:id- Obtener retiro por IDPOST /withdrawals- Crear nueva solicitud de retiroPUT /withdrawals/:id/approve- Aprobar retiroPUT /withdrawals/:id/reject- Rechazar retiroPUT /withdrawals/:id/process- Procesar retiroGET /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
- Solicitud: Usuario crea solicitud de retiro
- Validación: Sistema valida fondos y límites
- Aprobación: Revisión manual o automática
- Procesamiento: Ejecución de la transferencia
- 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