Websites10 min read

B2B carrier marketplace Africa: Uber Freight Africa in 2026

Mohamed Bah·Fondateur, Kolonell
May 22, 2026
Share:
B2B carrier marketplace Africa: Uber Freight Africa in 2026

B2B carrier marketplace Africa: Uber Freight Africa in 2026

Websites

West Africa road transport market = $18 billion/year but 80% disorganized: a shipper calls 5-10 carriers before finding. A B2B marketplace matching supply (carriers) with demand (cargo) automates everything.

TL;DR

- Bidirectional marketplace: shippers post cargo + carriers propose prices.

- Stack: Next.js + Postgres + Mapbox + Wave Business + ePOD.

- West Africa market: $18B/year. Players: Lori (KE-NG), Kobo (NG), Sendy (KE).

Marketplace architecture

`

[Shipper posts mission]

  • Origin, destination
  • Cargo type, weight, volume
  • Pickup date, deadline
  • Max budget or auction

[Algorithm matches available carriers]

[Carriers see + propose prices]

[Shipper selects → digital contract signed]

[Cargo delivered → ePOD]

[Wave/bank payment → released post-delivery]

[Mutual reviews]

`

Data model

`prisma

model Shipper {

id String @id @default(cuid())

companyName String

contactPerson String

email String

phone String

ninea String?

monthlyVolume Int?

walletProvider String

walletNumber String

rating Float?

isVerified Boolean

}

model Carrier {

id String @id @default(cuid())

companyName String

contactPerson String

email String

phone String

fleetSize Int

vehicles Vehicle[]

certifications String[]

walletProvider String

walletNumber String

rating Float?

totalShipments Int

isVerified Boolean

}

model FreightRequest {

id String @id @default(cuid())

shipperId String

shipper Shipper @relation(fields: [shipperId], references: [id])

cargoDescription String

cargoCategory String

weightKg Int

volumeM3 Float?

vehicleTypeNeeded String

pickupAddress String

pickupGps Json

pickupBefore DateTime

deliveryAddress String

deliveryGps Json

deliveryBefore DateTime

budgetMaxXof Int?

status String

bids FreightBid[]

awardedBidId String?

}

model FreightBid {

id String @id @default(cuid())

requestId String

Need a professional website?

Kolonell builds websites that attract clients, optimized for the Sénégalese market. Free quote in 2 minutes.

request FreightRequest @relation(fields: [requestId], references: [id])

carrierId String

carrier Carrier @relation(fields: [carrierId], references: [id])

priceXof Int

estimatedDuration Int

notes String?

submittedAt DateTime @default(now())

status String

}

`

Dynamic pricing + bidding

Two modes:

Mode A — Fixed price (shipper sets budget, carriers accept or not)

Mode B — Auction (carriers propose prices, shipper picks)

`tsx

export default async function FreightRequestPage({ params }) {

const request = await getFreightRequest(params.id);

const bids = await getBids(request.id);

return (

Mission #{request.id}

{request.pickupAddress} → {request.deliveryAddress}

{request.weightKg} kg · {request.cargoCategory}

Carrier proposals ({bids.length})

{bids.sort((a, b) => a.priceXof - b.priceXof).map(bid => (

key={bid.id}

bid={bid}

onAccept={async () => {

await fetch(/api/bids/${bid.id}/accept, { method: 'POST' });

}}

/>

))}

);

}

`

AI price recommendation

`ts

async function recommendPriceForRequest(request: FreightRequest) {

const similarMissions = await prisma.shipment.findMany({

where: {

cargoCategory: request.cargoCategory,

vehicleTypeNeeded: request.vehicleTypeNeeded,

status: 'DELIVERED',

},

take: 50,

orderBy: { createdAt: 'desc' },

});

const avgPrice = average(similarMissions.map(m => m.totalPrice));

const minPrice = avgPrice * 0.85;

const maxPrice = avgPrice * 1.15;

return {

suggested: Math.round(avgPrice),

range: [Math.round(minPrice), Math.round(maxPrice)],

};

}

`

Real case — SN-CI marketplace

MetricYear 1Year 2
Active shippers2401,850
Onboarded carriers3802,100
Missions/month3804,200
Monthly GMV95M XOF980M
Platform commission (5%)4.75M49M
Geographic coverageSNSN + CI + ML + BJ

Common pitfalls

  • Carrier verification — fraud possible (fake trucks). KYC + physical visit.
  • No bidding bot — auction manipulation. Caps + anomaly detection.
  • Perishable cargo — critical cold chain. Special category + premium price.
  • Cargo theft — partner insurance (NSIA, Allianz Africa) integrated.
  • Late carrier payment — escrow + T+3 release post-delivery.

FAQ

Q: Competition?

A: Lori (KE-NG-CIV), Kobo (NG), Sendy (KE), TruckIt (NG). Francophone Africa less saturated.

Q: Commission?

A: 4-7% standard. Freemium model: free posting, 2-3% payment processing + 3-4% comm.

Q: Initial investment?

A: $1.5-4M seed for MVP + 18 ops months. Investors: Partech, 4DX, IFC.

Conclusion

Africa B2B carrier marketplace 2026 = massive opportunity ($18B West Africa TAM). Tractable tech stack. Real challenge = network effects + ground onboarding. 30-48 month ROI on clean execution.

Tags:#Marketplace#Carriers#B2B#Freight#Africa#Logistics
Share:

Mohamed Bah

Fondateur, Kolonell

Passionate about digital and entrepreneurship in Africa, Mohamed has been helping Sénégalese businesses with their digital transformation since 2020. Founder of Kolonell, he believes every SME deserves a professional and accessible online présence.