cs_) es una instancia concreta de compra. A diferencia del
Link (plantilla), tiene un monto congelado y un estado que avanza
conforme el comprador interactúa. El id tiene 48 chars hex (192 bits de entropía), seguro para exponer en
URL.
Los ejemplos utilizan el sandbox: API en
https://checkout-api.sandbox.z2pay.com y página en
https://pay.sandbox.z2pay.com. En producción, use https://checkout-api.z2pay.com y
https://pay.z2pay.com. Las solicitudes del seller usan el header x-api-key — consulte
Autenticación.Endpoints
| Método | Ruta | Descripción |
|---|---|---|
POST | /checkout/sessions | Crea una Session (a partir de un Link o ad-hoc) |
GET | /checkout/sessions | Lista Sessions (paginado) |
GET | /checkout/sessions/{id} | Obtiene una Session por ID |
Snapshot inmutable
Al crear una Session a partir de un Link, todos los datos (items, precio, splits, branding, métodos) se copian en la Session. Editar el Link después no afecta las Sessions ya creadas. Esto garantiza que lo que el comprador vio al momento del pago es exactamente lo que paga.Crear Session
linkId. Retorna 201. Soporta
idempotencia mediante el header Idempotency-Key (consulte Convenciones).
Forma A — a partir de un Link
Forma A — a partir de un Link
Materializa la Session copiando el snapshot del Link.
ID del CheckoutLink (
chk_*). La presencia de este campo es lo que discrimina el body como “a partir de
Link”.Metadata específico de esta Session (sobreescribe el del Link).
Forma B — ad-hoc (sin Link)
Forma B — ad-hoc (sin Link)
Body completo con la configuración inline. Equivalente al body de crear Link, con pequeñas diferencias:
sin
name/slug, con customer (precarga el comprador) y con description
(mostrada en la página).Los campos de configuración (items, paymentMethods, branding, splits, requiredFields, customFields,
successUrl, cancelUrl, expirationMinutes) siguen exactamente el mismo schema del
Checkout Link.
201):
En Sessions ad-hoc,
linkId es null. La url retornada ya está lista para entregar al comprador.Errores comunes
| HTTP | Code | Cuándo |
|---|---|---|
400 | validation_failed | Body inválido |
404 | not_found | linkId no existe o fue archivado |
409 | link_not_active | El Link existe pero está archivado |
Objeto Customer
Nombre completo (≤ 255 chars).
E-mail (≤ 255 chars). Siempre obligatorio en el confirm — consulte required fields.
CPF, CNPJ o pasaporte (6–30 chars; solo dígitos para CPF/CNPJ).
"cpf", "cnpj" o "passport".Teléfono (≤ 30 chars). Recomendado E.164:
+5511999999999.Dirección (
zipCode, street, number, complement, neighborhood, city, state, country
default "BR"). Opt-in: solo requerido si "address" está en requiredFields.Listar Sessions
Filtra por status (CSV). Ej.:
?status=paid,opened. Valores: created, opened, paying,
partially_paid, paid, failed, expired, canceled.Filtra Sessions de un Link específico.
Búsqueda por ID de Session o nombre/email/documento del comprador.
Número de página (≥ 1).
Elementos por página (1–100).
200): objeto paginado { data, total, page, limit }.
Obtener Session por ID
tenantId, metadata, transactionId).
200 (encontrada) · 404 (no encontrada).
Estados y transiciones
Tabla de transiciones válidas
| De | Para |
|---|---|
created | opened, expired, canceled |
opened | paying, expired, canceled |
paying | paid, partially_paid, failed, expired |
partially_paid | paid, failed |
failed | opened (retry), expired, canceled |
paid | — (terminal) |
expired | — (terminal) |
canceled | — (terminal) |
Significado de cada estado
| Estado | Significado |
|---|---|
created | Session creada (vía API), el comprador aún no abrió la página |
opened | El comprador abrió la página de pago |
paying | El comprador hizo clic en “Pagar”; transacción siendo procesada por el gateway |
partially_paid | Pago combinado: al menos un payment confirmó, pero el agregado aún no coincide con session.amount (ej: PIX pagado, tarjeta pendiente) |
paid | Pago confirmado. Webhook checkout.session.payment_succeeded disparado |
failed | Pago rechazado. La Session vuelve a opened automáticamente para permitir el reintento |
expired | expiresAt alcanzado sin confirmación |
canceled | Cancelación manual (vía POST /charges/{id}/cancel o panel) |
partially_paid es exclusivo del flujo combinado. En pago single-method, la Session va directo de
paying a paid o failed.Reconciliación
Toda Session tiene untransactionId (completado después de entrar en paying) que vincula la Session al
registro de pago en la PSP. Use el transactionId para obtener detalles de procesamiento (gateway,
NSU, autorización, etc.) en la API de transacciones, si necesita hacer conciliación financiera.
Véase también
Visión general del Checkout
Conceptos, casos de uso y mapa de endpoints.
Checkout Links
Plantillas reutilizables y schema completo de la configuración.
Charges (venta rápida)
Sessions ad-hoc con listado separado y cancelación.
Comprador (página pública)
Cómo la Session avanza de
created a paid.Webhooks
Eventos de cambio de estado de la Session.
Errores
Formato de errores y códigos de dominio del checkout.

