cs_) é uma instância concreta de compra. Diferente do
Link (template), ela tem um valor congelado e um estado que progride
conforme o comprador interage. O id tem 48 chars hex (192 bits de entropia), seguro para expor em
URL.
Os exemplos usam o sandbox: API em
https://checkout-api.sandbox.z2pay.com e página em
https://pay.sandbox.z2pay.com. Em produção, use https://checkout-api.z2pay.com e
https://pay.z2pay.com. Requisições de seller usam o header x-api-key — veja
Autenticação.Endpoints
| Método | Rota | Descrição |
|---|---|---|
POST | /checkout/sessions | Cria uma Session (a partir de Link ou ad-hoc) |
GET | /checkout/sessions | Lista Sessions (paginado) |
GET | /checkout/sessions/{id} | Busca uma Session pelo ID |
Snapshot imutável
Ao criar uma Session a partir de um Link, todos os dados (items, preço, splits, branding, métodos) são copiados para a Session. Editar o Link depois não afeta Sessions já criadas. Isso garante que o que o comprador viu na hora do pagamento é exatamente o que ele paga.Criar Session
linkId. Retorna 201. Suporta
idempotência via header Idempotency-Key (veja Convenções).
Forma A — a partir de um Link
Forma A — a partir de um Link
Materializa a Session copiando o snapshot do Link.
ID do CheckoutLink (
chk_*). É a presença desse campo que discrimina o body como “a partir de
Link”.Metadata específico desta Session (sobrepõe o do Link).
Forma B — ad-hoc (sem Link)
Forma B — ad-hoc (sem Link)
Body completo com a config inline. Equivalente ao body de criar Link, com pequenas diferenças:
sem
name/slug, com customer (pré-preenche o comprador) e com description
(exibida na página).Os campos de config (items, paymentMethods, branding, splits, requiredFields, customFields,
successUrl, cancelUrl, expirationMinutes) seguem exatamente o mesmo schema do
Checkout Link.
201):
Em Sessions ad-hoc,
linkId é null. A url retornada já está pronta para entregar ao comprador.Erros comuns
| HTTP | Code | Quando |
|---|---|---|
400 | validation_failed | Body inválido |
404 | not_found | linkId não existe ou foi arquivado |
409 | link_not_active | Link existe mas está arquivado |
Objeto Customer
Nome completo (≤ 255 chars).
E-mail (≤ 255 chars). Sempre obrigatório no confirm — ver required fields.
CPF, CNPJ ou passaporte (6–30 chars; apenas dígitos para CPF/CNPJ).
"cpf", "cnpj" ou "passport".Telefone (≤ 30 chars). Recomendado E.164:
+5511999999999.Endereço (
zipCode, street, number, complement, neighborhood, city, state, country
default "BR"). Opt-in: só exigido se "address" estiver em requiredFields.Listar Sessions
Filtra por status (CSV). Ex.:
?status=paid,opened. Valores: created, opened, paying,
partially_paid, paid, failed, expired, canceled.Filtra Sessions de um Link específico.
Busca por ID da Session ou nome/email/documento do comprador.
Número da página (≥ 1).
Itens por página (1–100).
200): objeto paginado { data, total, page, limit }.
Buscar Session por ID
tenantId, metadata, transactionId).
200 (encontrada) · 404 (não encontrada).
Estados e transições
Tabela de transições 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 criada (via API), comprador ainda não abriu a página |
opened | Comprador abriu a página de pagamento |
paying | Comprador clicou em “Pagar”; transação sendo processada pelo gateway |
partially_paid | Pagamento combinado: ao menos um payment confirmou, mas o agregado ainda não bate com session.amount (ex: PIX pago, cartão pendente) |
paid | Pagamento confirmado. Webhook checkout.session.payment_succeeded disparado |
failed | Pagamento recusado. A Session volta a opened automaticamente para permitir retry |
expired | expiresAt atingido sem confirmação |
canceled | Cancelamento manual (via POST /charges/{id}/cancel ou painel) |
partially_paid é exclusivo do fluxo combinado. Em pagamento single-method, a Session vai direto de
paying para paid ou failed.Reconciliação
Toda Session tem umtransactionId (preenchido após entrar em paying) que liga a Session ao
registro de pagamento na PSP. Use o transactionId para puxar detalhes de processamento (gateway,
NSU, autorização, etc.) na API de transações, caso precise para conciliação financeira.
Veja também
Visão geral do Checkout
Conceitos, casos de uso e mapa de endpoints.
Checkout Links
Templates reutilizáveis e schema completo da config.
Charges (venda rápida)
Sessions ad-hoc com listagem separada e cancelamento.
Comprador (página pública)
Como a Session avança de
created até paid.Webhooks
Eventos de mudança de estado da Session.
Erros
Formato dos erros e códigos de domínio do checkout.

