Products
Los objetos Product representan los bienes o servicios que usted vende. Al asociar un Product a una CheckoutSession, a un PaymentLink o a una Invoice, muestra los detalles del producto en la página de pago y en los recibos.
Cada Product incorpora su propio precio (unit_amount + currency). Para productos de precio variable o donaciones libres, utilice price_type: “free”.
Puede crear un PaymentIntent con un amount en bruto sin Product. Los
Products se recomiendan en cuanto desee mostrar un nombre, una descripción y una
imagen en la página de pago, o generar informes por producto en su panel.
Endpoints
| Méthode | Endpoint | Description |
|---|---|---|
| POST | /products/ | Crear un producto |
| GET | /products/ | Listar los productos (paginado, filtrable) |
| GET | /products/{id}/ | Recuperar un producto por su ID |
| PATCH | /products/{id}/ | Modificar un producto |
| DELETE | /products/{id}/ | Archivar un producto (soft delete) |
Esquema del objeto
Crear un Product
Crea un nuevo producto en su catálogo. El producto está disponible de inmediato para asociarlo a una CheckoutSession, un PaymentLink o una Invoice.
nameRequisNombre del producto. Visible para el comprador en la página de pago, en los recibos y en los correos de confirmación.
Máx. 255 caracteres. Elija un nombre claro y descriptivo: es la primera información que ve el comprador antes de pagar.
unit_amountRequisPrecio unitario en céntimos. Se ignora si price_type es free.
La misma regla que para los PaymentIntents: exprese siempre en céntimos. 25 000 XAF
= 25000. Para las monedas con decimales (USD, EUR), 25 USD = 2500.
currencyRequisCódigo ISO 4217 de la moneda del producto. Debe corresponder a una moneda activada en su App.
price_typeRequisDetermina si el precio es fijo o libre. Valores: fixed (precio definido
por unit_amount) o free (el comprador introduce el importe).
free es ideal para donaciones, crowdfunding o pagos de tipo
“pay what you want”. En este modo, unit_amount puede servir como importe
sugerido que se muestra al comprador.
descriptionOptionnelDescripción detallada del producto. Se muestra bajo el nombre en la página de pago y en los recibos.
En savoir plus
Máx. 2 000 caracteres. Solo texto sin formato: nada de HTML. Una buena descripción aumenta la confianza del comprador y reduce los abandonos de pago.
imagesOptionnelLista de URL de imágenes del producto. La primera imagen se utiliza como imagen principal en la página de pago.
En savoir plus
Máximo 8 imágenes. Formatos aceptados: JPEG, PNG, WebP. Dimensiones recomendadas: 800×800 px como mínimo. Las URL deben ser accesibles públicamente (HTTPS). Sangho no almacena las imágenes: haga referencia a sus propias URL de CDN.
activeOptionnelIndica si el producto está activo y puede utilizarse en nuevas CheckoutSessions, PaymentLinks o Invoices.
En savoir plus
Desactivar un producto (active: false) no elimina los enlaces
existentes: los pagos en curso siguen siendo válidos. Es una forma de retirar un
producto del catálogo sin perder el historial.
metadataOptionnelDatos libres asociados al producto: SKU interno, categoría, referencia de ERP, etc.
En savoir plus
Los metadatos del Product se incluyen en los webhooks checkout.completed y payment_intent.succeeded cuando hay un
Product asociado. Práctico para activar automatizaciones en el servidor
(entrega de licencias, activación de accesos, etc.).
Crear un Product
Listar los Products
activeOptionnelFiltrar por estado de activación. true devuelve únicamente los productos
activos y false los archivados.
En savoir plus
Por defecto (sin este filtro), se devuelven todos los productos activos Y archivados.
Utilice active=true para mostrar a sus clientes únicamente el
catálogo vigente.
currencyOptionnelFiltrar por moneda. Útil si su catálogo abarca varios mercados con monedas distintas.
searchOptionnelBúsqueda en el nombre y la descripción del producto. Parcial e insensible a mayúsculas y minúsculas.
orderingOptionnelOrdenación. Campos disponibles: created_at, name, unit_amount.
pageOptionnelpage_sizeOptionnelModificar un Product
Modifica los campos de un Product existente. El cambio de precio (
unit_amount) no afecta a las CheckoutSessions ni a los PaymentLinks ya
creados: solo los nuevos utilizan el nuevo precio.
nameOptionnelNuevo nombre. Se actualiza en la página de pago de los enlaces existentes que aún no se hayan pagado.
unit_amountOptionnelEn savoir plus
Modificar el precio de un producto no afecta retroactivamente a las sesiones de pago ya creadas. Solo las nuevas CheckoutSessions creadas después de la modificación utilizarán el nuevo precio.
activeOptionnelActivar (true) o archivar (false) el producto.
metadataOptionnelArchivar un Product
El endpoint DELETE archiva el producto (soft delete) pasando active a false. El producto sigue siendo accesible mediante la API, pero ya no se puede
asociar a nuevos enlaces.
A diferencia de los Customers, la eliminación de un Product es reversible. Puede
reactivarlo mediante PATCH { active: true }. Los PaymentLinks y
las CheckoutSessions existentes que hacen referencia a este producto siguen funcionando.