Venflow API
V1Planes

Listar todos los planes

GET
/v1/plans
Api-Key<token>

Tu clave API privada (comienza con pvk_)

In: header

Organization<token>

Tu ID de organización

In: header

Query Parameters

limit?integer

Límite en el número de objetos a devolver. El límite puede estar entre 1 y 100, y el valor predeterminado es 10

Range1 <= value <= 100
starting_after?string

Un cursor para paginación. starting_after es un ID de objeto que define tu posición en la lista

Formatuuid
ending_before?string

Un cursor para paginación. ending_before es un ID de objeto que define tu posición en la lista

Formatuuid
active?boolean

Solo devuelve planes que estén activos o inactivos

product_id?string

Solo devuelve planes del producto especificado

Formatuuid
frequency?string

Solo devuelve planes con la frecuencia especificada

Value in"hourly" | "daily" | "weekly" | "biweekly" | "monthly" | "quarterly" | "semiannual" | "annual"

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://api.venflow.app/v1/plans"
{
  "data": [
    {
      "active": true,
      "apply_discount_to_additional_items": true,
      "billing_cycles": 0,
      "created": 0.1,
      "description": "string",
      "external_id": "string",
      "frequency": "hourly",
      "id": "string",
      "is_taxes_included": true,
      "livemode": true,
      "meter_id": "string",
      "name": "string",
      "object": "plan",
      "price": 0,
      "product_id": "string",
      "trial_days": 0,
      "type": "recurring",
      "updated": 0.1,
      "usage_pricing_model": "per_unit",
      "usage_tiers": [
        {
          "unit_amount": 0.1,
          "up_to": 0
        }
      ],
      "usage_type": "licensed",
      "usage_unit_amount": 0
    }
  ],
  "has_more": true,
  "object": "list",
  "url": "string"
}
{
  "code": "not_found",
  "details": {},
  "message": "string"
}
{
  "code": "not_found",
  "details": {},
  "message": "string"
}
{
  "code": "not_found",
  "details": {},
  "message": "string"
}
{
  "code": "not_found",
  "details": {},
  "message": "string"
}
{
  "code": "not_found",
  "details": {},
  "message": "string"
}

Actualizar un pago PATCH

Actualiza la metadata del pago especificado. Es el único campo editable: un pago registra dinero que ya se movió, así que su monto, su estado y su fecha no se pueden cambiar por aquí.

Crear un Plan POST

Crea un plan. Un plan define el precio y la frecuencia de cobro de una suscripción. **Planes flat (`usage_type: licensed`, valor por defecto):** - `price` es obligatorio y se cobra por adelantado en cada ciclo. - Los campos de uso (`meter_id`, `usage_pricing_model`, `usage_unit_amount`, `usage_tiers`) deben omitirse. **Planes por uso (`usage_type: metered`):** - `price` debe omitirse — el monto sale del consumo medido y se factura al cierre de cada período (en arrears). - `meter_id` y `usage_pricing_model` son obligatorios. - `usage_pricing_model: per_unit` requiere `usage_unit_amount` (precio en USD por unidad; admite micro-precios, ej. `0.0005`). - `usage_pricing_model: tiered` (graduado — cada tramo cobra su tarifa marginal) o `volume` (todas las unidades cobran la tarifa del tramo alcanzado) requieren `usage_tiers`: lista de `{ up_to, unit_amount }` donde el último tramo debe ser abierto (`up_to: null`). - `usage_type` y `meter_id` son **inmutables** después de crear el plan. - Un plan es flat O por uso, nunca ambos. Para "fee flat + por consumo", crea un plan flat que referencie un plan metered como plan item. - `trial_days` y `billing_cycles` (cuotas) son compatibles con planes metered: el uso durante el trial no se cobra, y la última cuota incluye el uso del período final. Crea un nuevo plan para tu organización. Los planes definen precios y frecuencia de facturación para suscripciones.