Base URL
https://haulage.hilinks.app/api
Mobile Login
Authenticates a mobile user, validates the device, and returns a Sanctum bearer token.
https://haulage.hilinks.app/api/mobile/login
Headers
Accept: application/json
Content-Type: application/json
Request Body
{
"email": "user@example.com",
"password": "user_password",
"device_id": "XXXXXXXXXXX",
}
Success Response - 200
{
"success": true,
"message": "Login successful.",
"data": {
"user_id": 1,
"name": "User Name",
"email": "user@example.com",
"type": "user_type",
"device_id": "XXXXXXXXXXX",
"token_type": "Bearer",
"token": "1|SANCTUM_TOKEN_HERE"
}
}
Invalid Login Details - 401
{
"success": false,
"message": "Invalid login details."
}
Blocked / Inactive Device - 403
{
"success": false,
"message": "This device is not active.",
"device_status": "blocked"
}
Device Linked To Another User - 403
{
"success": false,
"message": "This device is already linked to another user."
}
Validation Error - 422
{
"message": "The email field is required. (and 2 more errors)",
"errors": {
"email": [
"The email field is required."
],
"password": [
"The password field is required."
],
"device_id": [
"The device id field is required."
]
}
}
After Login
Store the returned token on the mobile app and send it on all protected API requests.
Authorization: Bearer SANCTUM_TOKEN_HERE
Accept: application/json
Content-Type: application/json
X-Device-ID: XXXXXXXXXXXXXXX
Get Logged-in User
Returns the authenticated mobile user's profile.
https://haulage.hilinks.app/api/mobile/logged-in
Headers
Authorization: Bearer SANCTUM_TOKEN_HERE
Accept: application/json
X-Device-ID: XXXXXXXXXXXXXXX
Success Response - 200
{
"success": true,
"data": {
"user_id": 1,
"name": "User Name",
"email": "user@example.com",
"type": "user_type"
}
}
Unauthenticated - 401
{
"message": "Unauthenticated."
}
Device Heartbeat
Updates the mobile device last seen time.
https://haulage.hilinks.app/api/mobile/heartbeat
Headers
Authorization: Bearer SANCTUM_TOKEN_HERE
Accept: application/json
Content-Type: application/json
X-Device-ID: XXXXXXXXXXXXXXX
Request Body
{
"device_id": "XXXXXXXXXXXXX"
}
Success Response - 200
{
"success": true,
"message": "Device heartbeat updated."
}
Mobile Logout
Deletes the current Sanctum access token.
https://haulage.hilinks.app/api/mobile/logout
Headers
Authorization: Bearer SANCTUM_TOKEN_HERE
Accept: application/json
Content-Type: application/json
X-Device-ID: XXXXXXXXXXXXXXX
Request Body
{
"device_id": "XXXXXXXXXXXXX"
}
Success Response - 200
{
"success": true,
"message": "Logged out successfully."
}
Create Trip
Creates a new trip and creates a pending payment record for that trip.
https://haulage.hilinks.app/api/trips/create
Request Body
{
"trip_id": "TRIP-202606091200-ABCD",
"payment_ref": "PAY-202606091200-ABCD",
"card_id": "04:A1:B2:C3:D4",
"truck_no": "KJA-123-XY",
"origin": "Jalingo",
"destination": "Kaduna",
"amount": "15000.00",
"vehicleType": "Truck",
"trip_type": "Single",
"goods": "Cement",
"expiry_date": "2026-06-30"
}
Success Response
{
"success": true,
"message": "Trip created successfully",
"trip_id": "TRIP-202606091200-ABCD",
"payment_ref": "PAY-202606091200-ABCD",
"payment_status": "PENDING"
}
Initialize Monnify Transfer
Starts a transfer payment process and returns transfer/account details.
https://haulage.hilinks.app/api/payments/monnify-init-transfer
Request Body
{
"trip_id": "TRIP-202606091200-ABCD",
"payment_ref": "PAY-202606091200-ABCD",
"amount": "15000.00",
"customer_name": "Haulage Customer",
"customer_email": "customer@example.com"
}
Success Response
{
"success": true,
"message": "Transfer initialized successfully",
"trip_id": "TRIP-202606091200-ABCD",
"payment_ref": "PAY-202606091200-ABCD",
"amount": "15000.00",
"payment_method": "TRANSFER",
"payment_status": "PENDING",
"monnify_reference": "MNFY-REFERENCE",
"checkout_url": null,
"account_number": "1234567890",
"bank_name": "Wema Bank",
"account_name": "Haulage Customer"
}
Check Monnify Payment Status
Checks the payment status using the payment reference.
https://haulage.hilinks.app/api/payments/monnify-status?payment_ref=PAY-202606091200-ABCD
Query Parameters
| Parameter | Required | Description |
|---|---|---|
payment_ref |
Yes | The unique payment reference generated for the trip. |
Success Response
{
"success": true,
"message": "Payment status fetched successfully",
"trip_id": "TRIP-202606091200-ABCD",
"payment_ref": "PAY-202606091200-ABCD",
"amount": "15000.00",
"payment_method": "TRANSFER",
"payment_status": "PAID",
"paid": true
}
Search Trip By Plate Number
Searches trip records using the truck/plate number.
https://haulage.hilinks.app/api/trips/search-by-truck?truck_no=KJA-123-XY
Query Parameters
| Parameter | Required | Description |
|---|---|---|
truck_no |
Yes | The plate number/truck number to search for. |
Success Response
{
"success": true,
"message": "Trips found",
"count": 1,
"trips": [
{
"trip_id": "TRIP-202606091200-ABCD",
"truck_no": "KJA-123-XY",
"origin": "Jalingo",
"destination": "Kaduna",
"amount": "15000.00",
"payment_status": "PENDING"
}
]
}
Check Trip Payment Ready
Checks whether a trip exists and is ready for payment.
https://haulage.hilinks.app/api/trips/payment-ready?trip_id=TRIP-202606091200-ABCD
Query Parameters
| Parameter | Required | Description |
|---|---|---|
trip_id |
Yes | The unique trip ID to check. |
Success Response
{
"success": true,
"ready": true,
"message": "Trip is ready for payment",
"trip_id": "TRIP-202606091200-ABCD",
"payment_ref": "PAY-202606091200-ABCD",
"amount": "15000.00",
"payment_status": "PENDING"
}
Confirm POS Payment
Confirms a POS payment, stores the POS reference, and marks the trip/payment as paid.
https://haulage.hilinks.app/api/payments/pos-confirm
Request Body
{
"trip_id": "TRIP-202606091200-ABCD",
"payment_ref": "PAY-202606091200-ABCD",
"pos_ref": "POS-REF-123456",
"amount": "15000.00"
}
Success Response
{
"success": true,
"message": "POS payment confirmed successfully",
"trip_id": "TRIP-202606091200-ABCD",
"payment_ref": "PAY-202606091200-ABCD",
"pos_ref": "POS-REF-123456",
"amount": "15000.00",
"payment_method": "POS",
"payment_status": "PAID",
"paid": true
}
Notes
- All POST requests should send JSON with
Content-Type: application/json. - All endpoints return JSON.
payment_refshould be unique for every payment.trip_idshould be unique for every trip.card_idshould match an active NFC card in thenfc_cardstable.
© 2026 Hilinks Network Solutions Ltd. All rights reserved.