Skip to main content

Registration Process

Becoming a Viax driver is simple and straightforward. Follow these steps to get started.
1

Create Account

Register with your email, phone number, and basic personal information
2

Complete Driver Profile

Fill in your full name, phone, and address details
3

Upload License

Provide driver’s license information and photos
4

Register Vehicle

Add vehicle details and required documents
5

Submit for Approval

Submit your profile for admin review
6

Get Approved

Wait 24-48 hours for document verification

Account Creation

Initial Registration

When you first register, the system creates a basic conductor profile:
Conductor Profile Entity
class ConductorProfile {
  final int id;
  final int conductorId;
  final String? nombreCompleto;
  final String? telefono;
  final String? direccion;
  final DriverLicense? license;
  final Vehicle? vehicle;
  final bool aprobado;              // Approval status
  final String? motivoRechazo;      // Rejection reason if denied
  final DateTime? fechaAprobacion;  // Approval date
  final DateTime? fechaCreacion;    // Creation date
  
  // Check if profile is complete
  bool get isProfileComplete {
    return nombreCompleto != null &&
        telefono != null &&
        direccion != null &&
        license != null &&
        license!.isComplete &&
        vehicle != null &&
        vehicle!.isComplete;
  }
  
  // Calculate completion percentage
  int get completionPercentage {
    int completed = 0;
    const int total = 5;
    
    if (nombreCompleto != null && nombreCompleto!.isNotEmpty) completed++;
    if (telefono != null && telefono!.isNotEmpty) completed++;
    if (direccion != null && direccion!.isNotEmpty) completed++;
    if (license != null && license!.isComplete) completed++;
    if (vehicle != null && vehicle!.isComplete) completed++;
    
    return ((completed / total) * 100).round();
  }
}
Your profile completion percentage is visible on your dashboard. Complete all sections to reach 100% and get approved faster!

Personal Information

Required Fields

nombreCompleto
string
required
Full legal name as it appears on your driver’s license
telefono
string
required
Active phone number for contact and trip coordination
direccion
string
required
Current residential address for verification purposes

Update Profile Use Case

The system uses Clean Architecture with dedicated use cases:
Update Profile Use Case
import 'package:viax/src/core/error/result.dart';
import '../repositories/conductor_repository.dart';

class UpdateConductorProfile {
  final ConductorRepository repository;
  
  UpdateConductorProfile(this.repository);
  
  Future<Result<void>> call({
    required int conductorId,
    String? nombreCompleto,
    String? telefono,
    String? direccion,
  }) async {
    if (conductorId <= 0) {
      return Error(ValidationFailure('Invalid conductor ID'));
    }
    
    return await repository.updateProfile(
      conductorId: conductorId,
      nombreCompleto: nombreCompleto,
      telefono: telefono,
      direccion: direccion,
    );
  }
}

Driver License Information

License Categories

In Colombia, drivers must have specific license categories for public service:
C1 - Automobiles, Camperos (Public Service)Valid for:
  • Cars
  • SUVs
  • Mototaxis
  • Four-wheelers for public transport
Most common category for Viax drivers

License Model

Driver License Entity
enum LicenseCategory {
  ninguna('ninguna', 'None', ''),
  a1('A1', 'A1', 'Motorcycles up to 125cc'),
  a2('A2', 'A2', 'Motorcycles over 125cc'),
  b1('B1', 'B1', 'Cars, mototaxis, four-wheelers, SUVs'),
  b2('B2', 'B2', 'Vans and microbuses'),
  b3('B3', 'B3', 'Rigid trucks, buses'),
  c1('C1', 'C1', 'Cars, SUVs (Public Service)'),
  c2('C2', 'C2', 'Vans, microbuses (Public Service)'),
  c3('C3', 'C3', 'Trucks, buses (Public Service)');
  
  final String value;
  final String label;
  final String description;
}

class DriverLicense {
  final String numero;
  final DateTime fechaExpedicion;
  final DateTime fechaVencimiento;
  final LicenseCategory categoria;
  final String? foto;              // Front photo URL
  final String? fotoReverso;       // Back photo URL
  final bool isVerified;
  
  // Validation methods
  bool get isValid => fechaVencimiento.isAfter(DateTime.now());
  bool get isExpiringSoon => daysUntilExpiry <= 30 && daysUntilExpiry > 0;
  int get daysUntilExpiry => fechaVencimiento.difference(DateTime.now()).inDays;
  bool get isComplete => numero.isNotEmpty && 
                         categoria != LicenseCategory.ninguna && 
                         isValid;
}
Your license must be valid for at least 30 days. The system will alert you when it’s expiring soon.

Approval Process

Verification Workflow

1

Profile Submission

Submit your complete profile with all required documents
Submit for Approval
final result = await SubmitProfileForApproval(
  conductorId: conductorId,
);
2

Document Review

Admin team reviews your documents for authenticity and validity
  • License photos checked
  • Vehicle documents verified
  • SOAT and Tecnomecánica dates validated
3

Approval Decision

Within 24-48 hours, you’ll receive one of these outcomes:
Profile Approved
  • aprobado = true
  • fechaAprobacion set to current timestamp
  • You can now go online and start accepting rides
4

Notification

Receive notification about approval status
Approval Notification
await ApprovalNotificationService.notify(
  conductorId: conductorId,
  aprobado: true,
  message: 'Your profile has been approved!'
);

Common Rejection Reasons

  • Expired license
  • Wrong category (not C1, C2, or C3)
  • Blurry or incomplete photos
  • Name mismatch with registration
  • Expired SOAT or Tecnomecánica
  • Missing vehicle photos
  • Plate number doesn’t match documents
  • Documents not legible
  • Missing phone number or address
  • Profile fields left empty
  • Vehicle details incomplete
Pro Tip: Take clear, well-lit photos of all documents. Make sure all text is readable and dates are visible.

Profile Completion Tracking

The app provides real-time feedback on your profile status:
Profile Completion Check
// Load profile
final provider = Provider.of<ConductorProfileProvider>(context);
await provider.loadProfile(conductorId);

final profile = provider.profile;

if (profile != null) {
  print('Completion: ${profile.completionPercentage}%');
  print('Is Complete: ${profile.isProfileComplete}');
  print('Can Go Online: ${profile.canBeAvailable}');
  
  if (!profile.isProfileComplete) {
    final pendingTasks = profile.pendingTasks;
    print('Pending: $pendingTasks');
    // Show alert to complete profile
  }
}

Profile Completion Card

The driver app displays a completion status card:
  • 0-25% - Basic info only (Red indicator)
  • 26-50% - License added (Orange indicator)
  • 51-75% - Vehicle partially complete (Yellow indicator)
  • 76-99% - Almost done (Light green indicator)
  • 100% - Ready for approval (Green indicator)

Next Steps After Registration

Once registered, proceed with these tasks:

Upload Documents

Upload license and vehicle documents for verification

Vehicle Setup

Complete vehicle registration with all required details

Profile Management

Update your settings and preferences

Availability

Learn how to go online after approval
Important: You cannot go online to accept trips until your profile is approved by the admin team.

Build docs developers (and LLMs) love