Post-vente

L'assignation

Désigner officiellement l'acheteur d'un item — statuts, jobs automatiques, self-service vs full-service et cas particuliers.

Étape 1 — L'assignation

Assigner un item, c'est désigner officiellement son acheteur. C'est l'acte fondateur de tout le post-vente : sans assignation, pas de facture, pas de paiement, pas de reversement.

La machine à états : les statuts d'un item

Un item passe sa vie à changer de statut. Voici le chemin du « happy path » (tout se passe bien).

flowchart LR
  a["OPEN"] --> b["CLOSED"]
  b --> c["ASSIGNED"]
  c --> d["INVOICED"]
  d --> e["PAID"]
  e --> f["CONFIRMED"]
  f --> g["COMMISSIONED"]
  g --> h["SUBMITTED / EXECUTED"]
  h --> i["SETTLED"]
StatutSignification
OPENL'enchère (ou l'offre directe) est en cours. Les acheteurs enchérissent.
CLOSEDLa date de fin est passée, l'enchère est fermée mais le gagnant n'est pas encore officiellement désigné (utile notamment en full-service où un humain valide d'abord).
ASSIGNEDL'item est attribué au gagnant : on enregistre son enchère gagnante (winningBidShortId), son organisation et le prix final. C'est ici que le compte payeur MangoPay de l'acheteur est créé si besoin.
INVOICEDLes factures ont été créées et validées. L'acheteur reçoit l'email de confirmation d'achat avec les instructions de paiement.
PAIDLe paiement de l'acheteur a été reçu et rapproché de la facture.
CONFIRMEDLa vente est confirmée administrativement (manuellement ou via CONFIRM_AUTO). C'est le feu vert pour reverser le vendeur.
COMMISSIONEDLa facture de commission du vendeur a été générée ; sur MangoPay, les transferts de répartition sont lancés.
SUBMITTED / EXECUTEDLe reversement au vendeur est soumis (virement préparé ou payout MangoPay envoyé) puis exécuté par la banque/MangoPay.
SETTLEDTout est réglé : l'argent est arrivé chez le vendeur, les factures sont soldées. Fin du parcours.

Et les chemins de sortie quand ça se passe moins bien :

flowchart LR
  u["UNSOLD"]
  na["NOT_ASSIGNED"]
  np["NOT_PAID"]
  r["REIMBURSED"]
StatutSignification
UNSOLDAucune enchère ni offre reçue. Le vendeur reçoit un email « invendu » (self-service).
NOT_ASSIGNEDIl y avait des enchères mais pas d'attribution : prix de réserve non atteint, offre refusée, ou décision manuelle NO_ASSIGN (l'acheteur pressenti reçoit alors l'email « vente déclinée »).
NOT_PAIDL'acheteur n'a pas payé dans les délais. Déclenché manuellement ou automatiquement (NO_PAY_AUTO). Vendeur et acheteur sont notifiés.
REIMBURSEDLa vente est annulée après paiement : l'acheteur est remboursé (action REIMBURSE sur la facture).

Qui déclenche l'assignation ?

Personne n'appuie sur un bouton à minuit : un job automatique scanne les items en continu (environ toutes les 10 secondes) et déclenche :

  • Ouverture (performOpen) — Item VALIDATED dont la date de début est passée → OPEN.
  • Prolongation (performExtend) — Enchère terminée sans aucune enchère → prolongée automatiquement (par défaut +20 min, configurable par shop via auctionExtendTimeInMinutesWithNoBid), une seule fois.
  • Clôture (performClose) — Date de fin passée → selon le cas : assignation automatique, invendu, ou attente de validation humaine.
  • Assignation (performAssign) — Automatique (self-service avec réserve atteinte) ou manuelle (action admin via l'API).

Self-service vs Full-service : deux philosophies

Le vendeur gère sa vente en autonomie. À la clôture, si le prix de réserve est atteint, tout s'enchaîne sans intervention humaine :

  1. L'enchère gagnante est enregistrée sur l'item (setWinningBid : id de l'enchère, organisation gagnante, prix final) ;
  2. Statut → ASSIGNED ;
  3. Le compte payeur MangoPay de l'acheteur est créé s'il n'existe pas (getOrCreatePayerAccount) ;
  4. Les factures sont créées : circuit V2 via createInvoicesFromSeance() si l'item porte un contrat et un invoiceMode, sinon circuit V1 historique (createInvoice type THIRD_PARTY, catégorie SELF_SERVICE) ;
  5. Chaque facture est validée (performInvoice) → statut item INVOICED ;
  6. L'acheteur reçoit l'email de confirmation d'achat avec les modalités de paiement.

Si la réserve n'est pas atteinte ou s'il n'y a pas d'enchère : email « invendu » au vendeur et statut UNSOLD.

Les cas particuliers

Copyright © 2026