Crear un checkout

Crea una nueva sesión de checkout. Cada elemento del arreglo `items` puede declararse de dos maneras: - **Con un producto existente** (recomendado): incluye `product_id` (o `price_id` si el producto tiene varios precios) y opcionalmente `quantity`. No envíes `name`, `amount_in_cents`, etc.; el producto ya tiene esa configuración. - **Con detalles inline**: incluye `name`, `amount_in_cents`, `currency` y los demás campos del cobro. Recurrente creará un producto invisible bajo la cuenta y lo asociará al checkout. Cuando usas `items`, no envíes `amount_in_cents` en la raíz del payload. El total del checkout se calcula sumando los ítems y debe alcanzar el mínimo de cobro: 500 para GTQ (Q5) o 100 para USD ($1). Un ítem individual, como envío, puede ser menor al mínimo si el total del checkout sí lo cumple. Ejemplo mínimo con un producto ya creado: ```json { "items": [ { "product_id": "prod_1234567", "quantity": 1 } ], "success_url": "https://tusitio.com/exito", "cancel_url": "https://tusitio.com/cancelar" } ``` ### Cuotas en Checkout En un checkout hospedado, tu integración controla qué opciones de cuotas se muestran con `available_installments`; el comprador escoge entre esas opciones al pagar. No envíes `installments` al crear un checkout para seleccionar la cantidad final de cuotas. Si quieres que el checkout solo permita una cantidad específica de cuotas, muestra únicamente esa opción y desactiva el pago con tarjeta de contado: ```json { "items": [ { "name": "Pago en 6 cuotas", "amount_in_cents": 15000, "currency": "GTQ", "charge_type": "one_time", "quantity": 1, "payment_method_types": [], "available_installments": [6] } ] } ``` Para que el comprador elija entre varias opciones, envía una lista como `available_installments: [3, 6, 12]`. Para ocultar cuotas, envía `available_installments: []`. El parámetro `installments` aplica solo en endpoints de cobro directo que lo incluyan, como `POST /terminal_session_commands`, donde tu sistema escoge la cantidad de cuotas. Las cuotas dependen de la moneda, la cuenta, el banco/emisor y la tarjeta del comprador; si la tarjeta no soporta la opción elegida, el cobro puede fallar con `unsupported_installments`.

Authentication

X-SECRET-KEYstring
Tu clave secreta de API

Request

This endpoint expects an object.
itemslist of objectsOptional

Lista de productos/servicios a incluir en el checkout. Cada item puede usar product_id / price_id (producto existente) o los campos inline (name, amount_in_cents, currency, …). Los dos modos son excluyentes para un mismo item.

modeenumOptional

(Opcional) Modo del checkout. Envía setup para tokenizar una tarjeta sin cobrarla.

Allowed values:
success_urlstringOptionalformat: "uri"

(Opcional) URL a dónde dirigir al comprador después de un pago exitoso

cancel_urlstringOptionalformat: "uri"

(Opcional) URL a dónde dirigir al comprador cuando abandona el checkout

user_idstringOptional

(Opcional) ID del usuario a quien pertenece el checkout. Prepopula los campos de información de usuario (nombre, email y teléfono del cliente si existe en tu cuenta).

customer_idstringOptional

(Opcional) ID del cliente en tu cuenta. Prepopula los campos de información de usuario (nombre, email y teléfono guardado del cliente). Si envías customer_id y user_id, se usa customer_id.

metadatastring or double or booleanOptional

(Opcional) Metadata del checkout.

expires_atdatetimeOptional

(Opcional) Fecha en la que quieres que el checkout expire, en formato ISO 8601

account_idstringOptional

(Opcional) ID de la cuenta conectada (hijo) para crear el checkout en su nombre

discount_codestringOptional

(Opcional) Código de descuento/cupón a aplicar al checkout

transfer_setupslist of objectsOptional
(Opcional) Transferencias automáticas de fondos a otras cuentas de Recurrente. En pagos únicos envía `amount_in_cents`: un monto fijo que se transfiere una vez, cuando el cobro se completa. En suscripciones envía `amount_percent`: un porcentaje del total de cada factura, que se transfiere en cada cobro exitoso mientras la suscripción esté activa. Úsalo para dividir el pago: enrutar fondos a una cuenta conectada, o quedarte con una comisión cuando el checkout se crea a nombre de una cuenta conectada (`account_id`).

Response

Checkout creado exitosamente
idstring

ID único del checkout

statusenum
Estado del checkout
itemslist of objects

Colección completa de filas mutables del checkout. No incluye descuentos, envío, fees ni prorrateos derivados.

total_in_centsinteger

Monto total en centavos (después de descuentos)

subtotal_in_centsinteger

Monto subtotal en centavos (antes de descuentos)

discountobject or null

Descuento aplicado al checkout (null si no hay descuento)

currencyenum
Moneda del checkout
payment_method_typeslist of enums

Métodos de pago que se le ofrecerán al comprador en este checkout, ya resueltos según la configuración del producto/cuenta, la moneda y el tipo de cobro: card (tarjeta, pago de contado), bank_transfer (transferencia bancaria), stablecoins (dólares digitales), balance (Balance Recurrente). Las cuotas se exponen por separado en available_installments; card indica pago de contado, así que un checkout puede ofrecer cuotas (available_installments no vacío) sin incluir card.

available_installmentslist of integers

Opciones de cuotas (en meses) disponibles en este checkout, independientes de payment_method_types. Vacío si no se ofrecen cuotas.

live_modeboolean

Si el checkout está en modo producción (true) o prueba (false)

success_urlstring

URL de redirección en caso de pago exitoso

cancel_urlstring

URL de redirección en caso de cancelación

expires_atdatetime

Fecha de expiración del checkout

created_atdatetime

Fecha de creación

metadatastring or double or boolean
Metadata personalizada del checkout
custom_fieldslist of objects

Valores recolectados de los campos personalizados. Si el checkout tiene múltiples productos, cada producto contribuye sus propias entradas — la key puede repetirse entre productos. Usa field_id como identificador canónico al reconciliar valores.

transfer_setupslist of objects
Configuraciones de transferencia asociadas
latest_intentobject or null

Último payment intent asociado

paymentobject or null

Información del pago (si está pagado)

payment_methodobject or null

Método de pago utilizado

checkout_urlstring
URL del checkout donde el usuario puede pagar

Errors

400
Bad Request Error