🔒 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