Invoices
Les Invoices permettent d’émettre, envoyer et gérer des factures clients programmatiquement. Chaque facture génère un lien de paiement hébergé et peut être envoyée par email automatiquement. Elle est liée à un Customer et peut contenir une ou plusieurs lignes de produits.
Le flux standard est : créer une facture (draft) → finaliser → envoyer
par email → attendre le paiement (paid).
Cycle de vie
| Statut | Signification | Action disponible |
|---|---|---|
draft | Brouillon — modifiable, non envoyée. | /finalize/ pour passer en open. |
open | Finalisée — lien de paiement actif. | /send/, /pay/, /void/. |
paid | Réglée — paiement reçu. | Aucune action possible. |
void | Annulée — lien désactivé. | Créer une nouvelle Invoice. |
uncollectible | Déclarée irrécouvrable. | Action manuelle uniquement. |
Endpoints
| Méthode | Endpoint | Description |
|---|---|---|
| POST | /invoices/ | Créer une facture (statut draft) |
| GET | /invoices/ | Lister les factures |
| GET | /invoices/{id}/ | Récupérer une facture |
| PATCH | /invoices/{id}/ | Modifier une facture draft |
| POST | /invoices/{id}/finalize/ | Finaliser (draft → open) |
| POST | /invoices/{id}/send/ | Envoyer par email au Customer |
| POST | /invoices/{id}/void/ | Annuler une facture open |
| POST | /invoices/{id}/pay/ | Marquer comme payée manuellement |
Schéma de l’objet
Créer une Invoice
Crée une facture en statut draft. À ce stade, elle est entièrement
modifiable. Aucun email n’est envoyé et aucun lien de paiement n’est actif.
customer Requis ID du Customer destinataire de la facture. L’email et le nom du Customer seront utilisés sur la facture PDF et dans l’email d’envoi.
line_items Requis Lignes de facturation. Chaque ligne contient un produit ou un montant libre, une quantité et un prix.
Chaque élément doit contenir : product (ID d’un Product existant)
ou description + unit_amount pour une
ligne libre. quantity est un entier positif (défaut : 1). La TVA est
calculée automatiquement selon la configuration de votre App.
currency Optionnel Code devise de la facture. Par défaut, la devise principale de votre App est utilisée.
due_date Optionnel Date d’échéance de paiement. Affichée sur la facture PDF et dans l’email d’envoi.
En savoir plus
Si non fournie, l’échéance est fixée à 30 jours après la date de
finalisation (pas de création). Passée l’échéance, la facture
reste open — Sangho n’envoie pas de relances automatiques. Vous
pouvez implémenter des relances via les webhooks
invoice.payment_overdue.
description Optionnel Objet ou description de la facture. Apparaît en en-tête de la facture PDF et dans l’email.
metadata Optionnel Données libres — référence de bon de commande, numéro de contrat, etc.
Finaliser, Envoyer, Annuler
Finaliser (/finalize/) : verrouille la facture et
génère le lien de paiement. La facture passe en open. Les lignes et le
montant ne peuvent plus être modifiés.
Envoyer (/send/) : envoie la facture par email au
Customer avec le lien de paiement et le PDF en pièce jointe. Peut être appelé
plusieurs fois (relance manuelle).
Vous pouvez appeler /finalize/ puis /send/ immédiatement à
la suite. Ou passer auto_send: true dans le corps de
/finalize/ pour déclencher l’envoi automatiquement à la finalisation.
Annuler (/void/) : invalide définitivement la facture.
Le lien de paiement est désactivé. Irréversible — créez une nouvelle Invoice si
nécessaire.