AiflowhubDeskrelance › Documentation
Documentation

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 :

1

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.

2

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.

3

Enregistrer vos factures

Onglet Factures : saisie manuelle, ou import CSV / Excel. La facture devient active et les relances sont prises en charge.

4

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).

5

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.

Astuce : WhatsApp fonctionne via une passerelle reliée à votre boutique. Tant qu'elle n'est pas connectée (ou en environnement de test), les envois sont simulés — vous voyez le message qui serait parti, sans rien envoyer.

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).

StatutSignification
BrouillonCréée, pas encore en relance.
ActiveLes relances partent automatiquement selon le plan.
En pausePromesse de paiement : relances suspendues jusqu'à la date promise, puis reprise automatique.
EscaladéeToutes les étapes ont été jouées et la facture reste impayée : à vous d'agir.
En litigeLe client conteste : relances stoppées.
PayéeSoldée. Plus aucune relance.
Passée en perteCré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.

Le plan par défaut est fourni en trois langues dès l'inscription. Vous éditez chaque étape et ses traductions depuis l'onglet Plans de relance.

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 ») :

Détecté

Promesse de paiement

  • « je paie vendredi », « ghadi nkhelless ghedda »
  • → facture mise en pause jusqu'à la date
Détecté

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 :

Encours & retards DSO — délai moyen de paiement Balance âgée (0–30 / 31–60 / 61–90 / 90+ j) Taux de recouvrement Encaissé sur 30 jours Factures à traiter (escalade / litige)

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) :

EndpointRô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) :

RequisOptionnel
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) :

VariableRôle
WA_GATEWAY_BASE_URLURL de la passerelle WhatsApp
WEBHOOK_SECRETSecret HMAC partagé avec la passerelle
EMAIL_* / BrevoEnvoi e-mail de repli (le SMTP par boutique reste prioritaire)
RELANCE_EXTRA_HOLIDAYSJours fériés religieux (dates variables) à exclure
FIELD_ENCRYPTION_KEYChiffrement 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.