Refunds & Notifications · Article 6.6
La page Factures d'avoir
Une section de premier niveau dans le tableau de bord freelance qui liste chaque facture d'avoir sur tous vos devis, avec statut, montant de remboursement, devis lié et boutons d'action. À utiliser quand vous voulez gérer les remboursements sans entrer dans chaque devis individuellement.
Jusqu'en avril 2026, les factures d'avoir n'étaient visibles qu'à l'intérieur de chaque devis — trouver le devis, ouvrir Documents, trouver la facture d'avoir. Cela fonctionnait avec un ou deux remboursements en cours ; cela cassait dès que vous en aviez une dizaine. La page Factures d'avoir remonte l'historique de remboursement et les actions en attente en un seul endroit, classées par statut pour que les éléments demandant votre attention remontent en haut.
Step by step
Ouvrez
/credit-notesdepuis la barre latérale du tableau de bord (sous Remboursements / Factures d'avoir).
Filtrez par statut.
Une rangée de pastilles en haut : Tous, Pending, Requested, Failed, Succeeded, Manual. Pending et Failed remontent en haut par défaut — ce sont ceux qui demandent votre action.
Inspectez une rangée.
Chacune affiche : CRN-NNNN, montant de remboursement + devise, badge de statut, lien numéro de devis, lien numéro d'avenant, date d'émission, date d'achèvement de remboursement (le cas échéant), boutons d'action.
Agissez depuis la rangée.
Mêmes boutons que la bannière Remboursement par devis : Rafraîchir le statut (article 8.7), Réessayer (article 8.8), Marquer remboursé (article 8.9), Télécharger PDF.
Entrez dans le devis si nécessaire.
Cliquez sur le numéro de devis pour ouvrir
/proposals/{id}pour le contexte complet (chronologie, documents, avenant lié).
Why this works this way
Backend : CreditNoteListView (amendment_views.py:849, [D-116]) renvoie toutes les factures d'avoir non supprimées des devis du freelance authentifié, triées par issued_at décroissant. Chaque rangée porte le numéro du devis, le nom du client et le numéro d'avenant aux côtés des champs propres à la facture d'avoir — aucun aller-retour supplémentaire nécessaire pour rendre la liste.
La page frontend lit la même structure que la méthode de sérialisation get_credit_notes par devis, donc le composant par rangée est réutilisé. Les filtres sont côté client (l'ensemble de résultats est borné par le nombre de factures d'avoir par compte, généralement quelques dizaines, pas des milliers).
Troubleshooting
Keep reading
Refunds & Notifications
Refund stages: issued → requested → succeeded (or manual)
The credit note moves through up to four states from creation to settled. Each state corresponds to a specific point in the refund lifecycle, with predictable UI badges and email triggers.
Refunds & Notifications
Refresh status — pull-based sync when the Stripe webhook didn't land
Webhooks aren't perfect. When a credit note appears stuck in `requested` despite Stripe having processed the refund, click `Refresh status` to pull the current state from Stripe directly. Same transition logic as the webhook; no risk of double-firing side-effects.
Refunds & Notifications
Retry Stripe refund — when transient failures clear
A failed Stripe refund can usually be retried — most failures are transient (rate limits, brief Stripe outages, or deposit-paid webhook arriving after the post-sign pipeline ran). The Retry button calls `_trigger_stripe_refund` afresh on the credit note.
Refunds & Notifications
Mark refunded manually — for SEPA and out-of-band proof
When a refund is issued outside Stripe — SEPA bank transfer, cash, PayPal, mailed cheque — `Mark refunded` is how you record it in Clozo. Reason field is mandatory (typically a bank reference). The credit note moves to `manual` status and the client receives a confirmation email.