Products
Les objets Product représentent les biens ou services que vous vendez. En associant un Product à un CheckoutSession, un PaymentLink ou une Invoice, vous affichez les détails du produit sur la page de paiement et dans les reçus.
Chaque Product embarque son propre prix (unit_amount +
currency). Pour des produits à prix variable ou des dons libres, utilisez
price_type: “free”.
Vous pouvez créer un PaymentIntent avec un amount brut sans Product. Les
Products sont recommandés dès que vous souhaitez afficher un nom, une description et une
image sur la page de paiement, ou générer des rapports par produit dans votre dashboard.
Endpoints
| Méthode | Endpoint | Description |
|---|---|---|
| POST | /products/ | Créer un produit |
| GET | /products/ | Lister les produits (paginé, filtrable) |
| GET | /products/{id}/ | Récupérer un produit par son ID |
| PATCH | /products/{id}/ | Modifier un produit |
| DELETE | /products/{id}/ | Archiver un produit (soft delete) |
Schéma de l’objet
Créer un Product
Crée un nouveau produit dans votre catalogue. Le produit est immédiatement disponible pour être associé à un CheckoutSession, PaymentLink ou Invoice.
name Requis Nom du produit. Visible par l’acheteur sur la page de paiement, dans les reçus et les emails de confirmation.
Max 255 caractères. Choisissez un nom clair et descriptif — c’est la première information que l’acheteur voit avant de payer.
unit_amount Requis Prix unitaire en centimes. Ignoré si price_type est
free.
Même règle que pour les PaymentIntents : exprimez toujours en centimes. 25 000 XAF
= 25000. Pour les devises à décimales (USD, EUR), 25 USD =
2500.
currency Requis Code ISO 4217 de la devise du produit. Doit correspondre à une devise activée sur votre App.
price_type Requis Détermine si le prix est fixe ou libre. Valeurs : fixed (prix défini
par unit_amount) ou free (l’acheteur saisit le montant).
free est idéal pour les dons, le crowdfunding ou les paiements
“pay what you want”. Dans ce mode, unit_amount peut servir de montant
suggéré affiché à l’acheteur.
description Optionnel Description détaillée du produit. Affichée sous le nom sur la page de paiement et dans les reçus.
En savoir plus
Max 2 000 caractères. Texte brut uniquement — pas de HTML. Une bonne description augmente la confiance de l’acheteur et réduit les abandons de paiement.
images Optionnel Liste d’URLs d’images du produit. La première image est utilisée comme image principale sur la page de paiement.
En savoir plus
Maximum 8 images. Formats acceptés : JPEG, PNG, WebP. Dimensions recommandées : 800×800 px minimum. Les URLs doivent être publiquement accessibles (HTTPS). Sangho ne stocke pas les images — référencez vos propres URLs CDN.
active Optionnel Indique si le produit est actif et peut être utilisé dans de nouveaux CheckoutSessions, PaymentLinks ou Invoices.
En savoir plus
Désactiver un produit (active: false) ne supprime pas les liens
existants — les paiements en cours restent valides. C’est un moyen de retirer un
produit du catalogue sans perdre l’historique.
metadata Optionnel Données libres associées au produit — SKU interne, catégorie, référence ERP, etc.
En savoir plus
Les métadonnées du Product sont incluses dans les webhooks
checkout.completed et payment_intent.succeeded quand un
Product est attaché. Pratique pour déclencher des automatisations côté serveur
(livraison de licence, activation d’accès, etc.).
Créer un Product
Lister les Products
active Optionnel Filtrer par statut d’activation. true retourne uniquement les produits
actifs, false les archivés.
En savoir plus
Par défaut (sans ce filtre), tous les produits actifs ET archivés sont retournés.
Utilisez active=true pour n’afficher que le catalogue courant à vos
clients.
currency Optionnel Filtrer par devise. Utile si votre catalogue couvre plusieurs marchés avec des devises différentes.
search Optionnel Recherche sur le nom et la description du produit. Partielle, insensible à la casse.
ordering Optionnel Tri. Champs disponibles : created_at, name,
unit_amount.
page Optionnel page_size Optionnel Modifier un Product
Modifie les champs d’un Product existant. Le changement de prix (
unit_amount) n’affecte pas les CheckoutSessions ou PaymentLinks déjà
créés — seuls les nouveaux utilisent le nouveau prix.
name Optionnel Nouveau nom. Mis à jour sur la page de paiement pour les liens existants non encore payés.
unit_amount Optionnel En savoir plus
Modifier le prix d’un produit n’affecte pas rétroactivement les sessions de paiement déjà créées. Seuls les nouveaux CheckoutSessions créés après la modification utiliseront le nouveau prix.
active Optionnel Activer (true) ou archiver (false) le produit.
metadata Optionnel Archiver un Product
L’endpoint DELETE archive le produit (soft delete) en passant active à
false. Le produit reste accessible via l’API mais ne peut plus être
attaché à de nouveaux liens.
Contrairement aux Customers, la suppression d’un Product est réversible. Vous pouvez
le réactiver via PATCH { active: true }. Les PaymentLinks et
CheckoutSessions existants qui référencent ce produit continuent de fonctionner.