Skip to content

Productos (API) ​

El catálogo de productos se crea y edita solo desde el dashboard (proyecto → Productos). Sobre la API de Integración el catálogo es de solo lectura: consume los productos existentes por su productCode para armar suscripciones y cargos.

Todos los endpoints requieren tu API key de proyecto en el header X-API-Key.

Catálogo de productos de un proyecto

Tipos de producto ​

Cada producto se define por paymentType (one_time o recurring) y, para los de pago único, requiresSubscription:

paymentTyperequiresSubscriptionEs un…
recurring—Plan — item de suscripción facturado cada ciclo
one_timefalseProducto independiente — compra única (p. ej. créditos)
one_timetrueAddon — cobro único sobre una suscripción activa

El código de producto ​

Zelta Pay genera el productCode al crear el producto en el dashboard, con el formato prod_ seguido de 10 letras mayúsculas o dígitos (por ejemplo, prod_PLANBASE01). No se puede elegir ni cambiar. Cópialo del dashboard o de GET /v1/products para usarlo en cargos y suscripciones.

Listar productos ​

http
GET /v1/products

Parámetros de consulta:

CampoTipoRequeridoDescripción
statusstringNoFiltra por estado: active, inactive o archived. Sin este filtro se devuelven productos de todos los estados
paymentTypestringNoFiltra por one_time o recurring
limintegerNoTamaño de página, de 1 a 100 (default 10)
offintegerNoOffset (paginación)

Los resultados se ordenan del más reciente al más antiguo. La respuesta trae los productos en data.products junto con total.

bash
curl "https://api-pay.zelta.dev/v1/products?paymentType=recurring&status=active" \
  -H "X-API-Key: tu-api-key-de-proyecto"

Filtra por productos activos

Solo los productos active se pueden usar en nuevos cargos, suscripciones o links de pago de cliente; con uno inactive o archived la solicitud falla con ERR_PRODUCT_NOT_ACTIVE. Usa status=active para listar solo los que puedes usar.

Obtener un producto ​

http
GET /v1/products/:productCode
bash
curl "https://api-pay.zelta.dev/v1/products/prod_PLANBASE01" \
  -H "X-API-Key: tu-api-key-de-proyecto"

Devuelve el producto identificado por su productCode (el listado devuelve el mismo objeto por cada elemento). Si no existe en el proyecto, responde 404 con ERR_PRODUCT_NOT_FOUND.

json
{
  "success": true,
  "data": {
    "product": {
      "id": "7314444555566667777",
      "projectId": "7301234567890123456",
      "productCode": "prod_PLANBASE01",
      "name": "Plan base",
      "description": "Plan mensual del POS",
      "paymentType": "recurring",
      "requiresSubscription": false,
      "price": 3500,
      "currency": "USD",
      "billingPeriod": "month",
      "billingInterval": 1,
      "status": "active",
      "metadata": null,
      "createdAt": "2026-06-04T00:00:00.000Z",
      "updatedAt": "2026-06-04T00:00:00.000Z",
      "deletedAt": null
    }
  },
  "message": "Operation completed successfully",
  "timestamp": "2026-06-04T00:00:00.000Z"
}
CampoTipoDescripción
idstringIdentificador único del producto
projectIdstringProyecto al que pertenece el producto
productCodestringCódigo único con el que lo referencias en cargos y suscripciones
namestringNombre del producto
descriptionstring | nullDescripción (null si no se definió)
paymentTypestringone_time o recurring
requiresSubscriptionbooleanSi es un addon que exige una suscripción activa (solo aplica a one_time)
priceintegerPrecio en centavos (mínimo 100)
currencystringMoneda (p. ej. USD)
billingPeriodstring | nullday, week, month o year; null para productos one_time
billingIntervalintegerNúmero de períodos por ciclo (p. ej. 1 = mensual con billingPeriod: month). Por defecto 1, también en productos one_time, donde no se usa
statusstringactive, inactive o archived
createdAtstringFecha de creación (ISO 8601)
updatedAtstringFecha de última actualización (ISO 8601)

El objeto también incluye metadata y deletedAt, que puedes ignorar.

Para crear o editar productos, usa el dashboard

La API no expone endpoints de escritura sobre el catálogo. Si necesitas un nuevo plan, addon o producto independiente, créalo en el dashboard del proyecto y luego consúmelo por su productCode.

Errores ​

CódigoHTTPCuándo
ERR_PRODUCT_NOT_FOUND404No existe un producto con ese productCode en el proyecto
ERR_API_KEY_NOT_PROJECT_SCOPED403Usaste una API key de la cuenta en lugar de la del proyecto

Los parámetros de consulta inválidos devuelven 400 con el formato de .

Siguientes pasos ​

  • — usa los productCode recurrentes como items
  • — cobra productos one_time a un cliente
  • — visión general del modelo de proyectos

Documentación oficial de Zelta