Venflow API
V1CheckoutSesiones

Crear una sesión de Checkout

POST
/v1/checkout/sessions
Api-Key<token>

Tu clave API privada (comienza con pvk_)

In: header

Organization<token>

Tu ID de organización

In: header

allow_manual_payments?boolean

When false, the "Otros Bancos" manual payment option is hidden and blocked for this session.

Defaults to true. Existing sessions without this field behave as if it were true.

apply_discount_to_additional_items?boolean

Determina si el descuento aplica también a items adicionales (opcional)

collection_mode?string

Quién decide cuándo se cobra la suscripción que nazca de esta sesión (opcional, predeterminado: engine).

engine: Venflow la cobra automáticamente en cada ciclo. external (Cobro por API): el checkout registra la domiciliación y Venflow nunca cobra solo; cada cobro lo pides tú con POST /v1/subscriptions/{id}/charges.

external debe estar habilitado para tu organización y requiere un plan recurrente y items que no sean por uso (metered). Con external, el trial y la fecha de inicio diferida del plan no aplican; enviar trial_days mayor que 0, scheduled_start_date o allow_manual_payments: true devuelve 400

Value in"engine" | "external"
customer?string

ID de un cliente existente para prellenar el checkout (opcional)

Formatuuid
customer_data?

Datos del cliente que la organización aporta para que el checkout abra con el formulario lleno.

Son SUGERENCIAS editables, no datos verificados: quien abre el enlace puede cambiar cualquiera. No crean ni modifican un cliente — viven en la sesión y dejan de aplicar en cuanto la sesión queda ligada a un cliente real.

Se usa cuando la organización conoce a la persona pero esa persona todavía no es cliente en Venflow. Si ya lo es, usa customer con su identificador: ese camino manda sobre este.

discount_id?string

ID of an existing discount to apply to this session

Formatuuid
expires_after_hours?integer

Horas hasta que expire la sesión (1-24, predeterminado: 24)

Range1 <= value <= 24
external_initial_charge?boolean

Solo con collection_mode: "external": si es true, el checkout también cobra el primer pago; los siguientes los pides tú por API. Predeterminado: false. Enviarlo en true sin collection_mode: "external" devuelve 400

items?

Line items to attach to the subscription invoice

metadata?

Key-value pairs for storing your own information on this checkout session. Venflow does not interpret them: they are stored and returned to you unchanged. At most 50 keys; keys up to 40 characters, values up to 500, and 27000 characters across all keys and values. Do not store sensitive data here: it is not encrypted and is returned on reads.

Four key names are reserved by Venflow and rejected: checkoutMode, subscriptionId, obInvoiceId and billing_cycles; use a different name, such as externalId.

Propertiesproperties <= 50
planstring

ID del plan para el checkout de suscripción (REQUERIDO)

Formatuuid
Length1 <= length
redirect_url?string

URL para redirigir después de completar el checkout (opcional)

Lengthlength <= 2048
scheduled_start_date?string

Delayed start date for the subscription (ISO 8601 date, e.g. "2025-08-01")

Formatdate
trial_days?integer

Override trial days for this session (0–365)

Range0 <= value <= 365

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://api.venflow.app/v1/checkout/sessions" \  -H "Content-Type: application/json" \  -d '{    "plan": "550e8400-e29b-41d4-a716-446655440000",    "discount_id": "8f14e45f-ceea-467a-9c2b-3a1b2c3d4e5f",    "expires_after_hours": 24,    "redirect_url": "https://miapp.ejemplo.com/gracias"  }'
{
  "amount_discount": 0.1,
  "amount_subtotal": 0.1,
  "amount_total": 0.1,
  "collection_mode": "engine",
  "customer": "string",
  "discount": {
    "amount_off": 0,
    "duration": "once",
    "duration_periods": 0,
    "id": "string",
    "name": "string",
    "percent_off": 0
  },
  "expires_at": 0.1,
  "external_initial_charge": true,
  "id": "string",
  "livemode": true,
  "metadata": {
    "property1": "string",
    "property2": "string"
  },
  "object": "checkout.session",
  "plan": {
    "amount": 0.1,
    "id": "string",
    "name": "string"
  },
  "redirect_url": "string",
  "scheduled_start_date": "string",
  "status": "pending",
  "trial_days": 0,
  "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"
}