Sites Web7 min de lecture

Wave Business splits payments marketplace : 2026

Mohamed Bah·Fondateur, Kolonell
20 juin 2026
Partager :
Wave Business splits payments marketplace : 2026

Wave Business splits payments marketplace : 2026

Sites Web

Marketplace multi-vendeurs Africa = besoin splits payments : split commission plateforme + montant vendeur. Wave Business API permet via custom logic. Voici architecture 2026.

TL;DR

- Marketplace = commission 5-25 % par transaction.

- Wave : pas de split natif, custom logic requis.

- Architecture : escrow + payouts vendeurs.

- Réconciliation rigoureuse = critique.

Architecture marketplace splits

`

  • Customer paie 100K FCFA (produit) :
  • Wave Checkout : 100K → compte plateforme
  • Plateforme reçoit :
  • 100K - 1K (frais Wave) = 99K
  • Commission plateforme 10 % : 10K
  • Reste vendeur : 89K
  • Payout vendeur (J+7 selon politique) :
  • Wave Business → vendeur : 89K
  • Frais payout : 0-500 FCFA

`

DB schema marketplace

`sql

-- Commande

CREATE TABLE orders (

id UUID PRIMARY KEY,

customer_id UUID,

vendor_id UUID,

amount_total INT, -- 100000 FCFA

amount_commission INT, -- 10000 (10 %)

amount_vendor INT, -- 89000 (après frais Wave)

status ENUM ('pending_payment', 'paid', 'shipped', 'delivered', 'refunded'),

wave_session_id VARCHAR,

wave_transaction_id VARCHAR,

paid_at TIMESTAMP,

payout_to_vendor_at TIMESTAMP, -- null until paid out

created_at TIMESTAMP

);

-- Compte vendeur

CREATE TABLE vendors (

id UUID PRIMARY KEY,

name VARCHAR,

wave_phone VARCHAR, -- numéro Wave vendeur

bank_account VARCHAR, -- alternative bancaire

pending_payout INT DEFAULT 0,

total_payout INT DEFAULT 0

);

`

Payout vendeur via API

`typescript

async function payoutVendor(vendorId: string, orderId: string) {

const order = await db.orders.findOne({ id: orderId });

const vendor = await db.vendors.findOne({ id: vendorId });

if (order.status !== 'delivered') {

throw new Error('Order not delivered yet');

}

if (order.payout_to_vendor_at) {

throw new Error('Already paid out');

}

// Wave B2B transfer

const res = await axios.post(

${WAVE_API}/payouts,

{

currency: 'XOF',

receive_amount: order.amount_vendor.toString(),

mobile: vendor.wave_phone,

name: vendor.name,

client_reference: payout_${orderId},

},

{

headers: { Authorization: Bearer ${WAVE_TOKEN} },

}

);

// Update DB

await db.orders.updateOne(

{ id: orderId },

{

payout_to_vendor_at: new Date(),

payout_wave_id: res.data.id,

}

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.

);

await db.vendors.updateOne(

{ id: vendorId },

{

$inc: { pending_payout: -order.amount_vendor, total_payout: order.amount_vendor },

}

);

return res.data;

}

`

Cron payouts batch

`typescript

// Tous les vendredis : payout vendeurs commandes livrées + 7 jours

cron.schedule('0 9 * * 5', async () => {

const sevenDaysAgo = new Date(Date.now() - 7 * 24 * 3600 * 1000);

const ordersToPayout = await db.orders.find({

status: 'delivered',

payout_to_vendor_at: null,

deliveredAt: { $lt: sevenDaysAgo },

});

for (const order of ordersToPayout) {

try {

await payoutVendor(order.vendor_id, order.id);

await sendVendorEmail(order.vendor_id, {

subject: 'Paiement reçu',

body: ${order.amount_vendor} FCFA pour commande ${order.id},

});

} catch (err) {

console.error(Payout failed: ${order.id}, err);

await alertAdmin('Payout failed', err);

}

await sleep(1000); // Rate limit

}

});

`

Calculs commission

`typescript

function calculateSplit(grossAmount: number, commissionRate: number) {

// Frais Wave : 1 % du brut

const waveFee = Math.ceil(grossAmount * 0.01);

const netAfterWave = grossAmount - waveFee;

// Commission plateforme : sur net après Wave

const platformCommission = Math.ceil(netAfterWave * commissionRate);

// Reste vendeur

const vendorAmount = netAfterWave - platformCommission;

return {

grossAmount,

waveFee,

netAfterWave,

platformCommission,

vendorAmount,

};

}

// Exemple : 100K FCFA, 10 % commission

const split = calculateSplit(100000, 0.10);

// { grossAmount: 100000, waveFee: 1000, netAfterWave: 99000,

// platformCommission: 9900, vendorAmount: 89100 }

`

FAQ

Q : Wave fait splits natifs ?

R : Non. Custom logic requis dans plateforme.

Q : Délai payout vendeur ?

R : Variable. Standard : 7 jours après livraison + délai retours.

Q : Risque trésorerie ?

R : Oui. Plateforme tient cash entre paiement client et payout vendeur. Cash flow management critique.

Conclusion

Wave Business marketplace splits 2026 : custom logic + escrow + cron payouts. Architecture rigoureuse + réconciliation = success. Calcul splits + cash flow management = critique.

Tags :#Wave#Marketplace#Splits#Payments#Commission
Partager :

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.