Prendre en main Deskrelance.
Un guide en deux temps : d'abord pour vous en servir (aucune compétence technique requise), puis pour les développeurs qui veulent brancher Deskrelance sur d'autres outils (API, import, webhooks).
Démarrer en 5 minutes
Deskrelance envoie pour vous des relances graduées (WhatsApp, e-mail) sur vos factures impayées, lit les réponses et suit les paiements. Cinq étapes pour être opérationnel :
Créer votre compte
À l'inscription, votre organisation, votre première boutique et un plan de relance par défaut à 3 niveaux (français + arabe + darija) sont créés automatiquement.
Ajouter vos contacts
Onglet Contacts : à la main, ou par import CSV. Renseignez le téléphone (format +2126…), l'e-mail et la langue du client.
Enregistrer vos factures
Onglet Factures : saisie manuelle, ou import CSV / Excel. La facture devient active et les relances sont prises en charge.
Configurer l'e-mail & l'identité
Onglet Paramètres : votre serveur d'envoi (SMTP ou Brevo), votre raison sociale et vos coordonnées (utilisées dans les messages).
Régler vos préférences d'envoi
Fenêtre horaire, week-ends / jours fériés, plafond quotidien, fallback automatique. Puis laissez les relances partir seules.
Le flux
Le parcours est toujours le même : créance → plan → relances → réponses → paiement. Vous définissez le plan une fois ; Deskrelance l'applique à chaque facture, comprend les réponses des clients et enregistre les règlements.
Créance
Débiteur, montant, échéance — saisis ou importés.
Plan
Étapes multi-canal, au bon rythme, dans la bonne langue.
Paiement
Lien de paiement, arrêt automatique dès le règlement.
Les parties de Deskrelance — et le besoin de chacune
En une phrase, le besoin que couvre chaque partie :
Factures & créances
Suivre l'encours par ancienneté, montants et échéances dépassées.
Plans de relance
Séquences graduées par échéance et montant, multilingues et réutilisables.
Multi-canal
WhatsApp et e-mail — SMS bientôt — avec modèles de message.
Lien de paiement
Chaque relance porte un lien ; la facture se solde d'elle-même.
Réponses comprises
Promesse, litige, « déjà payé », STOP — détectés en FR/AR/darija.
Tableau de bord
Encours, DSO, balance âgée et taux de recouvrement.
Import & API
Importer les factures (CSV/Excel) ou brancher vos outils (API, webhooks).
Conformité & opt-out
Opt-out automatique (STOP), dans l'esprit de la loi 09-08 et du RGPD.
Statuts d'une facture
Chaque facture suit une machine à états claire. Les relances automatiques ne concernent que les factures actives (et les pauses arrivées à échéance).
| Statut | Signification |
|---|---|
| Brouillon | Créée, pas encore en relance. |
| Active | Les relances partent automatiquement selon le plan. |
| En pause | Promesse de paiement : relances suspendues jusqu'à la date promise, puis reprise automatique. |
| Escaladée | Toutes les étapes ont été jouées et la facture reste impayée : à vous d'agir. |
| En litige | Le client conteste : relances stoppées. |
| Payée | Soldée. Plus aucune relance. |
| Passée en perte | Créance abandonnée (annulée). Statut terminal. |
Plans & variables
Un plan enchaîne des étapes. Chaque étape définit : le décalage par rapport à l'échéance (négatif = avant, ex. J-3 ; positif = après, ex. J+7), le canal (WhatsApp / e-mail), le niveau (1 rappel courtois → 3 mise en demeure) et le message. La séquence est graduée (une étape par passage) et s'arrête au paiement.
Le message accepte des variables remplacées automatiquement à l'envoi :
{debtor_name} {debtor_company} {amount} {balance} / {amount_due}
{currency} {invoice_number} {invoice_title} {issue_date}
{due_date} {days_overdue} {payment_link} {signature}
{pro_name} {pro_phone} {pro_email} {opt_out_link}
{amount} est le total dû ; {balance} (alias {amount_due}) est le restant après acomptes. Une variable inconnue est laissée telle quelle, jamais d'erreur.
Multilingue & réponses
Deskrelance est pensé pour le Maroc : chaque étape peut avoir une version française, arabe et darija. Le message envoyé suit automatiquement la langue du contact ; à défaut de traduction, on retombe proprement sur le français.
Les réponses des clients sont comprises et classées automatiquement, en français, en arabe et en darija (y compris l'écriture latine avec chiffres, « arabizi ») :
Promesse de paiement
- « je paie vendredi », « ghadi nkhelless ghedda »
- → facture mise en pause jusqu'à la date
Litige / a payé / STOP
- « je conteste », « ghalat » → litige
- « khlest », « déjà payé » → signalé (à confirmer)
- « STOP », « bloki » → opt-out automatique
Le ton reste maîtrisé (courtois → ferme selon le niveau) et la fréquence est limitée : on relance sans harceler.
Paiement & conformité
Chaque facture peut porter un lien de paiement ({payment_link}) inséré dans les messages. Quand le client règle, vous enregistrez le paiement (total ou acompte) : le solde se met à jour et la facture se solde automatiquement une fois payée.
Opt-out & conformité — sans rien configurer :
- Les e-mails incluent un lien de désinscription ; les WhatsApp invitent à répondre STOP.
- Un « STOP » / « ne plus me contacter » met le contact en opt-out automatiquement — plus aucune relance.
- Conforme à l'esprit de la loi 09-08 (protection des données au Maroc) et du RGPD, et aux règles de WhatsApp Business.
Préférences d'envoi
Depuis Paramètres → Préférences d'envoi, vous contrôlez quand et comment partent les relances automatiques :
Fenêtre horaire
On ne relance qu'entre vos heures (ex. 9h–19h), dans le fuseau de la boutique.
Week-ends & jours fériés
Exclusion en un clic des samedis/dimanches et des jours fériés marocains (les fêtes religieuses à date variable s'ajoutent côté configuration).
Plafond quotidien
Limite le nombre de relances par jour et par boutique — bon réflexe anti-blocage WhatsApp.
Fallback automatique
Si un envoi WhatsApp échoue et que le client a un e-mail (ou l'inverse), la relance part sur l'autre canal.
Tableau de bord
Le tableau de bord donne l'essentiel du recouvrement d'un coup d'œil :
API & authentification
Deskrelance fonctionne en autonome via son interface, ou intégré : une API REST (JSON) permet à n'importe quel outil (votre logiciel de facturation, un script, un LLM) de piloter le recouvrement. Toute la logique métier est partagée entre l'interface et l'API.
Base URL : https://deskrelance.aiflowhub.online. Authentification par token (un utilisateur dédié par application intégrée, révocable) :
POST /api/auth/token/ → { "token": "9c1f…" }
curl -X POST https://deskrelance.aiflowhub.online/app/api/auth/token/ \
-d "username=USER&password=PASS"
# puis sur chaque appel :
curl https://deskrelance.aiflowhub.online/app/api/invoices/ \
-H "Authorization: Token 9c1f…"
Ressources principales (paginées, 25/page ; cloisonnées par organisation) :
| Endpoint | Rôle |
|---|---|
| /api/pros/ | Boutiques (créancier, identité, fenêtre d'envoi, fallback…) |
| /api/debtors/ | Contacts débiteurs (téléphone, e-mail, langue, opt-out) |
| /api/plans/ · /api/steps/ | Plans de relance et leurs étapes |
| /api/invoices/ | Créances + machine à états |
| /api/payments/ | Paiements (totaux ou partiels) |
| /api/reminder-events/ | Historique des relances envoyées (lecture) |
| /api/replies/ | Réponses entrantes classées (lecture) |
Actions sur une facture : POST /api/invoices/<id>/{activate|pause|mark-paid|dispute|send-now}/.
# mettre en pause suite à une promesse de paiement
curl -X POST .../api/invoices/14/pause/ -H "Authorization: Token 9c1f…" \
-H "Content-Type: application/json" -d '{"until":"2026-07-31"}'
Import en masse
Sans code : onglet Factures → « Importer des factures », fichier CSV ou Excel (.xlsx). Un modèle CSV est téléchargeable. Colonnes reconnues (français ou anglais) :
| Requis | Optionnel |
|---|---|
| number, name, phone, amount, due_date | email, company, currency, issue_date, title, language |
Par API : POST /api/invoices/import/ (upsert — débiteur rapproché par téléphone, facture par numéro) :
POST /api/invoices/import/ { "pro": 1, "items": [ { "debtor": { "name": "Ménara Distrib", "phone_e164": "+212611223344", "email": "[email protected]", "language": "darija" }, "number": "FAC-0311", "external_ref": "ERP-9982", "amount": "28800.00", "currency": "MAD", "due_date": "2026-06-28", "title": "Commande juin" } ] } → { "pro": 1, "created": 1, "updated": 0, "errors": [] }
language accepte fr, ar, darija, en (et alias « Arabe », « français »…). Une facture créée est activée ; une facture existante est mise à jour sans changer son statut.
Webhooks
Entrants — la passerelle WhatsApp notifie Deskrelance des accusés et des réponses : POST /webhooks/gateway/, signé en HMAC-SHA256 (en-tête X-Webhook-Signature). Événements : message.received, message.status_changed, session.connected/disconnected.
Sortants — Deskrelance notifie votre système source des issues de recouvrement (paiement, promesse, litige, opt-out…). Configurez l'URL de rappel et un secret HMAC au niveau de l'organisation ; chaque envoi est signé (X-Relance-Signature). Un système externe peut aussi déclarer un événement :
POST /api/invoices/declare-event/
{ "event": "invoice.paid", "external_ref": "ERP-9982", "event_id": "evt-123" }
# event ∈ invoice.paid | invoice.partially_paid | invoice.disputed | invoice.canceled
# event_id rend l'appel idempotent (un rejeu n'applique pas deux fois le paiement)
Déploiement & planification
Deskrelance est une application Django. Le moteur de relances est déclenché par une commande à planifier (cron / systemd timer), typiquement chaque heure :
python manage.py migrate python manage.py run_reminders # envoie les relances dues python manage.py run_reminders --dry-run # affiche sans envoyer
Réglages clés (via variables d'environnement) :
| Variable | Rôle |
|---|---|
| WA_GATEWAY_BASE_URL | URL de la passerelle WhatsApp |
| WEBHOOK_SECRET | Secret HMAC partagé avec la passerelle |
| EMAIL_* / Brevo | Envoi e-mail de repli (le SMTP par boutique reste prioritaire) |
| RELANCE_EXTRA_HOLIDAYS | Jours fériés religieux (dates variables) à exclure |
| FIELD_ENCRYPTION_KEY | Chiffrement des secrets au repos (SMTP, clés API) |
Pour brancher la suite (DeskAssist, Desklink…) ou vos propres outils, voir la page Développeurs.
FAQ
Autonome ou intégré ?
Les deux — utilisable seul via son interface, ou branché à vos outils par API, import et webhooks.
Quels canaux d'envoi ?
WhatsApp et e-mail (SMTP ou Brevo) sont opérationnels. Le SMS est prévu (déjà modélisé dans les plans).
Gère-t-il l'arabe et la darija ?
Oui — messages FR / AR / darija, et compréhension des réponses dans ces langues (y compris l'arabizi). Le client est relancé dans sa langue.
Comment évitez-vous de harceler les clients ?
Fenêtre horaire, plafond quotidien, séquence graduée, arrêt automatique au paiement ou à la promesse, et opt-out respecté.
Mes données sont-elles cloisonnées et récupérables ?
Oui — cloisonnement par organisation, journal d'audit, et export à tout moment.