Le marché des intrants agricoles en Afrique francophone : ~3 milliards USD/an. Mais 80 % des producteurs paient prix détail (souvent +40 % vs bulk). Une marketplace B2B bulk connecte fournisseurs grossistes à coopératives + groupements producteurs avec économies massives.
TL;DR
- Marketplace B2B intrants : semences, engrais, pesticides, outils.
- Achats groupés via coopératives = -25 à -40 % vs détail.
- Stack : Next.js + Postgres + Wave Business + logistique partenaire.
- Marché TAM Francophone Africa : ~800M USD/an.
Architecture marketplace `
[Fournisseurs / grossistes / importateurs]
↓
[Listings catalogue produits + prix bulk]
↓
[Coopérative initie commande groupée]
↓
[Membres coopérative confirment quantité]
↓
[Quand minimum bulk atteint : commande validée]
↓
[Paiement Wave/MTN groupé]
↓
[Logistique livraison village ou point relais]
↓
[Distribution membres coop]
`
Étape 1 — modèle de données `prisma
model Supplier {
id String @id @default(cuid())
companyName String
ninea String?
contactPerson String
email String
phone String
warehouseCity String
warehouseAddress String
bankAccount Json // pour reversement
certifications String[] // ISO, organic, etc.
rating Float?
isVerified Boolean
}
model Product {
id String @id @default(cuid())
supplierId String
category String // SEED / FERTILIZER / PESTICIDE / TOOL / ANIMAL_FEED
subcategory String // ex: NPK, urée, hybride maïs, herbicide selectif
name String
brand String?
packagingSize String // 50kg, 25L, 100 unités
bulkPriceXof Int // par unité bulk
minimumOrderQty Int // unités minimum pour pricing bulk
retailComparison Int? // prix détail typique pour comparaison
description String
images String[]
certifications String[] // organic, etc.
inStock Boolean
expiryDate DateTime?
}
model GroupOrder {
id String @id @default(cuid())
cooperativeId String
initiatedBy String // user ID
status String // OPEN / READY_TO_PLACE / PLACED / DELIVERED / CANCELLED
minimumThreshold Int // quantité totale minimum
currentQuantity Int @default(0)
closingDate DateTime
productId String
product Product @relation(fields: [productId], references: [id])
participants GroupOrderParticipant[]
}
model GroupOrderParticipant {
id String @id @default(cuid())
groupOrderId String
groupOrder GroupOrder @relation(fields: [groupOrderId], references: [id])
producerId String
quantity Int
paymentStatus String // PENDING / PAID
walletTransactionId String?
}
`
Étape 2 — fiche produit bulk `tsx
// app/products/[slug]/page.tsx
export default async function ProductPage({ params }) {
const product = await getProduct(params.slug);
return (
{product.name}
{product.brand} · {product.packagingSize}
{product.bulkPriceXof.toLocaleString()} FCFA / {product.packagingSize}
{product.retailComparison && (
Prix détail : {product.retailComparison.toLocaleString()} FCFA
)}
Économie : -{Math.round((1 - product.bulkPriceXof / product.retailComparison) * 100)}%
Minimum commande : {product.minimumOrderQty} unités
Disponibilité : {product.inStock ? '✓ En stock' : 'Sur commande'}
Besoin d'un site web professionnel ? Kolonell crée des sites web qui attirent des clients, optimisés pour le marché sénégalais. Devis gratuit en 2 minutes.
Initier commande groupée
Rejoindre commande existante
);
}
`
Étape 3 — workflow commande groupée `tsx
// Initier (1er producer / coop)
async function initiateGroupOrder(productId: string, myQuantity: number) {
const product = await getProduct(productId);
const order = await fetch('/api/group-orders', {
method: 'POST',
body: JSON.stringify({
productId,
minimumThreshold: product.minimumOrderQty,
closingDate: addDays(new Date(), 7),
myQuantity,
}),
});
// Notifier coopérative membres
const coop = await getCooperative(currentUser.cooperativeId);
for (const member of coop.members) {
await sendWhatsApp(member.whatsapp, {
template: 'group_order_invitation',
params: [
product.name,
product.bulkPriceXof.toLocaleString(),
order.minimumThreshold,
https://kolonell.com/group-orders/${order.id},
],
});
}
}
// Rejoindre
async function joinGroupOrder(groupOrderId: string, myQuantity: number) {
await fetch(/api/group-orders/${groupOrderId}/join, {
method: 'POST',
body: JSON.stringify({ quantity: myQuantity }),
});
}
// Quand minimum atteint → place commande au fournisseur
async function placeBulkOrder(groupOrderId: string) {
const order = await getGroupOrder(groupOrderId);
if (order.currentQuantity < order.minimumThreshold) {
throw new Error('Minimum threshold not yet reached');
}
// Collecter paiements de tous participants
for (const p of order.participants) {
await initiateWavePayment({
receiverWallet: 'kolonell-escrow',
amount: order.product.bulkPriceXof * p.quantity,
reference: ${order.id}_${p.id},
payerWallet: p.producer.walletNumber,
});
}
// Une fois tous payés, commander chez fournisseur
await prisma.groupOrder.update({
where: { id: groupOrderId },
data: { status: 'PLACED' },
});
}
`
Étape 4 — logistique distribution Trois modèles :
Modèle 1 — Livraison directe coopérative
Fournisseur livre directement au siège coop. Coop redistribute à ses membres.
Modèle 2 — Point relais
Camion plateforme livre à des points relais (boutique village, école). Producteurs viennent retirer.
Modèle 3 — Last-mile au village
Plus cher mais accessible aux producteurs reculés. Frais variable selon distance.
Étape 5 — financement intégré Coupler avec crédit agricole digital → pour producteurs sans cash :
`
[Producteur sans cash]
↓
[Demande crédit intrants à la commande]
↓
[Scoring alternatif rapide]
↓
[Si approuvé : intrants + remboursement étalé]
↓
[Récolte → vente → remboursement auto]
`
Cas réel — startup Sénégal-CI Profile : 380 coopératives connectées, ~22 000 producteurs.
Métrique Année 1 Année 2 Commandes groupées 280 1 850 GMV mensuel 45M FCFA 320M FCFA Économie moyenne producteur 28 % 34 % Commission plateforme (3 %) 1.35M 9.6M Fournisseurs onboardés 12 47
Pièges fréquents Producteurs annulent en dernière minute — escrow + commitment date critique.Qualité produit divergente — vérification fournisseur + retours possibles.Pas de stock fournisseur — listings désynchronisés. API ou updates fréquentes.Saisonnalité aiguë — engrais, semences = pic 2-3 mois/an. Diversifier catégories.Fournisseurs ne livrent pas — assurance + multiples fournisseurs alternatifs.FAQ Q : Concurrence ?
R : Apollo Agriculture (KE), Babban Gona (NG), Hello Tractor. UEMOA marché émergent.
Q : Marges typiques ?
R : 3-7 % commission plateforme + 1-2 % spread fournisseur = 4-9 % marge brute.
Q : Investissement initial ?
R : 800K-2.5M USD pour stack + équipe + 12 mois ops. Investisseurs Acumen, Aspen Network, Mercy Corps.
Conclusion Marketplace intrants bulk = levier puissant pour productivité agricole africaine. ROI 24-36 mois sur exécution propre. Marché TAM massif Francophone Africa, peu saturé en 2026.
Tags : #Marketplace #Intrants #Bulk #AgriTech #Coopératives #Afrique
Mohamed Bah Fondateur, Kolonell
Passionné par le digital et l'entrepreneuriat en Afrique, Mohamed accompagne les entreprises sénégalaises dans leur transformation digitale depuis 2020. Fondateur de Kolonell, il croit que chaque PME mérite une présence en ligne professionnelle et accessible.
Sommaire Besoin d'un site web ? Sites vitrines à partir de 400 000 FCFA. E-commerce avec Wave et Orange Money.
Devis gratuit