Registration Process
Becoming a Viax driver is simple and straightforward. Follow these steps to get started.
Create Account
Register with your email, phone number, and basic personal information
Complete Driver Profile
Fill in your full name, phone, and address details
Upload License
Provide driver’s license information and photos
Register Vehicle
Add vehicle details and required documents
Submit for Approval
Submit your profile for admin review
Get Approved
Wait 24-48 hours for document verification
Account Creation
Initial Registration
When you first register, the system creates a basic conductor profile:
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!
Required Fields
Full legal name as it appears on your driver’s license
Active phone number for contact and trip coordination
Current residential address for verification purposes
Update Profile Use Case
The system uses Clean Architecture with dedicated use cases:
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,
);
}
}
License Categories
In Colombia, drivers must have specific license categories for public service:
Category C1
Category C2
Category C3
C1 - Automobiles, Camperos (Public Service) Valid for:
Cars
SUVs
Mototaxis
Four-wheelers for public transport
Most common category for Viax drivers
C2 - Vans, Microbuses (Public Service) Valid for:
Vans
Minibuses
Larger passenger vehicles
C3 - Trucks, Buses (Public Service) Valid for:
Large trucks
Buses
Heavy commercial vehicles
License Model
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
Profile Submission
Submit your complete profile with all required documents final result = await SubmitProfileForApproval (
conductorId : conductorId,
);
Document Review
Admin team reviews your documents for authenticity and validity
License photos checked
Vehicle documents verified
SOAT and Tecnomecánica dates validated
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
Profile Rejected ❌
aprobado = false
motivoRechazo contains reason for rejection
Fix issues and resubmit for approval
Notification
Receive notification about approval status 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
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:
// 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.