Sites Web7 min de lecture

Réconciliation Wave automatique e-commerce : 2026

Mohamed Bah·Fondateur, Kolonell
20 juin 2026
Partager :
Réconciliation Wave automatique e-commerce : 2026

Réconciliation Wave automatique e-commerce : 2026

Sites Web

Réconciliation Wave automatique = matcher transactions Wave avec commandes site/app. Critique pour comptabilité SYSCOHADA + reporting. Voici stack production 2026.

TL;DR

- 30 % erreurs comptables sans réconciliation auto.

- API Wave fournit transactions historique.

- Matching par : amount + date + reference.

- Exports Sage / Pennylane / Excel automatiques.

Architecture réconciliation

  • Pull transactions Wave (API quotidien)
  • Comparer avec commandes DB
  • Matching :
  • Amount exact
  • Date ±24h
  • Client_reference (si disponible)
  • 3 statuts résultat :
  • Matched (auto)
  • Manual review (fuzzy)
  • Unmatched (alerte)
  • Export comptable

Pull transactions API

`typescript

async function getWaveTransactions({

fromDate,

toDate,

page = 1,

limit = 100,

}: {

fromDate: string; // ISO 8601

toDate: string;

page?: number;

limit?: number;

}) {

const res = await axios.get(

${WAVE_API}/transactions,

{

params: {

from: fromDate,

to: toDate,

page,

limit,

},

headers: {

Authorization: Bearer ${WAVE_TOKEN},

},

}

);

return res.data.transactions; // Array

}

// Usage : récupérer toutes transactions du mois

async function syncMonth(year: number, month: number) {

const fromDate = new Date(year, month - 1, 1).toISOString();

const toDate = new Date(year, month, 0).toISOString();

let allTx: any[] = [];

let page = 1;

while (true) {

const tx = await getWaveTransactions({ fromDate, toDate, page });

if (tx.length === 0) break;

allTx = allTx.concat(tx);

page++;

}

return allTx;

}

`

Matching algorithm

`typescript

async function reconcile(waveTx: WaveTransaction[]) {

const results = {

matched: [] as Array<{ tx: WaveTransaction; order: Order }>,

manual: [] as Array<{ tx: WaveTransaction; candidates: Order[] }>,

unmatched: [] as WaveTransaction[],

};

for (const tx of waveTx) {

// 1. Match exact par client_reference

if (tx.client_reference) {

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

if (order && order.amount === tx.amount) {

results.matched.push({ tx, order });

continue;

}

}

// 2. Match par amount + date

const candidates = await db.orders.find({

amount: tx.amount,

createdAt: {

$gte: new Date(tx.created_at).getTime() - 24 * 3600 * 1000,

$lte: new Date(tx.created_at).getTime() + 24 * 3600 * 1000,

},

status: 'pending_payment',

});

if (candidates.length === 1) {

// Match auto

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.

results.matched.push({ tx, order: candidates[0] });

} else if (candidates.length > 1) {

// Manual review (plusieurs commandes même montant)

results.manual.push({ tx, candidates });

} else {

// Unmatched

results.unmatched.push(tx);

}

}

return results;

}

`

Export comptable SYSCOHADA

`typescript

import { createObjectCsvWriter } from 'csv-writer';

async function exportToSyscohada(matched: Array<{ tx: any; order: any }>) {

const csv = createObjectCsvWriter({

path: '/tmp/wave-reconciliation.csv',

header: [

{ id: 'date', title: 'Date' },

{ id: 'compte', title: 'Compte' },

{ id: 'debit', title: 'Débit' },

{ id: 'credit', title: 'Crédit' },

{ id: 'libelle', title: 'Libellé' },

{ id: 'reference', title: 'Référence' },

],

});

const rows = matched.flatMap(({ tx, order }) => [

{

date: tx.created_at.slice(0, 10),

compte: '512100', // Banque Wave

debit: tx.amount,

credit: '',

libelle: Encaissement Wave ${tx.id},

reference: order.id,

},

{

date: tx.created_at.slice(0, 10),

compte: '411000', // Clients

debit: '',

credit: tx.amount,

libelle: Encaissement client ${order.client_name},

reference: order.id,

},

]);

await csv.writeRecords(rows);

}

`

Importable directement dans Sage / Pennylane / Cegid.

Cron job quotidien

`typescript

// Avec node-cron ou Vercel Cron

import cron from 'node-cron';

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

const yesterday = new Date();

yesterday.setDate(yesterday.getDate() - 1);

const tx = await getWaveTransactions({

fromDate: yesterday.toISOString().slice(0, 10),

toDate: new Date().toISOString().slice(0, 10),

});

const results = await reconcile(tx);

// Email rapport quotidien

await sendEmail('finance@kolonell.com', {

subject: 'Réconciliation Wave quotidienne',

body: Auto: ${results.matched.length}, Manual: ${results.manual.length}, Unmatched: ${results.unmatched.length},

});

});

`

FAQ

Q : Match auto fiabilité ?

R : 95-98 % des transactions match automatiquement avec amount + date + reference.

Q : Délai sync API Wave ?

R : Real-time via webhook. Daily sync API pour back-up + reporting.

Conclusion

Réconciliation Wave automatique 2026 : 95-98 % auto-match. Cron daily + webhook real-time. Export SYSCOHADA = imports comptables directs. Stack production complet 2-5 jours dev.

Tags :#Wave#Réconciliation#Comptabilité#SYSCOHADA#Automation
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.