Checkout Sessions
Confirm a Checkout Session
Confirma uma checkout session.
Endpoint público de confirmação. Usado pelo browser do comprador (na hosted page ou no seu frontend custom) para concluir a sessão de compra. A chamada confirma a
Faltar um campo exigido (pelo método ou pela política da sessão) retorna
checkout.session; a Chargefy resolve o customer, confirma a cobrança server-side pelo lifecycle de payment_intent e atualiza a session.
Para PIX e boleto, complete significa que o comprador fechou o formulário e recebeu os dados de pagamento. A confirmação financeira chega de forma assíncrona via webhook checkout.session.async.payment.succeeded. Para cartão, o payment_status pode virar paid na própria resposta, mas webhooks continuam sendo a fonte confiável para fulfillment.
Autenticação
Nenhuma. Oclient_secret na URL é a credencial.
Parâmetros de caminho
Secret opaco da checkout session, retornado no campo
client_secret do
create.Attributes
Data de vencimento do boleto (
YYYY-MM-DD). Padrão: 3 dias depois da
confirmação. Aplica só quando payment_method: "boleto".Bandeira do cartão (
visa, mastercard, elo, etc). Usado pra cálculo de
juros — opcional, a Chargefy infere quando ausente.Cartão já salvo que pertence a este comprador. Alternativa ao
token_id
para credit_card. A propriedade do cartão é validada antes de usar: um
card_id que não pertence ao comprador é recusado. Prefira token_id no
fluxo padrão.Endereço de cobrança. Obrigatório para
boleto e também quando a sessão
tem require_billing_address: true. Para boleto, exige endereço brasileiro
completo: city, country ("BR"), neighborhood, number, postal_code,
state (UF de 2 letras) e street.CPF ou CNPJ do comprador. Obrigatório para
boleto e quando a sessão
exige documento (require_document: true, padrão da organização). Caso
contrário, opcional. Usado na emissão de boleto e na identificação fiscal.cpf ou cnpj. Opcional, acompanha customer_document.Email do comprador. Sempre obrigatório.
Nome completo do comprador. Sempre obrigatório.
Dados do comprador coletados na hosted page.
Cupom de desconto aplicado pelo comprador.
Número de parcelas (1–12). Aplica só com
credit_card.Um de:
pix, boleto, credit_card, no_payment_required.
no_payment_required só vale para trial de assinatura criado com
payment_method_collection: "if_required". Os demais métodos devem estar em
payment_method_types da sessão (caso contrário 400).Token de uso único do cartão, gerado client-side. Caminho recomendado para
credit_card: a Chargefy associa o token ao comprador e conclui a cobrança
server-side, inclusive salvando o cartão de forma reutilizável para
assinaturas. Veja tokenização abaixo.Campos obrigatórios por método
O comprador sempre informa nome e email. O boleto, por exigência do meio de pagamento, também precisa de endereço e documento. Além disso, a política de checkout da sessão pode tornar obrigatórios o documento, o telefone e o endereço para qualquer método — camposrequire_document, require_phone e require_billing_address da sessão (herdados da organização no create). A política só adiciona exigências sobre o piso do método; nunca remove uma exigência do meio de pagamento. O telefone, quando exigido, vem em customer_details.phone.
| Método | Campos obrigatórios (piso do meio de pagamento) |
|---|---|
credit_card | customer_name, customer_email, token_id (ou card_id do próprio comprador) |
pix | customer_name, customer_email |
boleto | customer_name, customer_email, customer_billing_address, customer_document |
no_payment_required | customer_name, customer_email; apenas para trial de assinatura sem cobrança hoje |
422.
Três variantes
(a) PIX
Mais simples: só nome e email. A resposta trazpayment_data.qr_code (string EMV pra colar no app do banco) e payment_data.qr_code_url (PNG hospedado).
(b) Boleto
Exige endereço brasileiro completo (FEBRABAN), opcionalmente com data de vencimento custom. A resposta trazpayment_data.barcode, payment_data.digitable_line e payment_data.pdf_url.
(c) Cartão de crédito
Caminho padrão: envietoken_id (token de uso único gerado client-side — nunca envie número de cartão direto pra esse endpoint). A Chargefy associa o token ao comprador e cobra server-side; a cobrança pode ser autorizada na hora e payment_status: "paid" na resposta indica sucesso. Para um cartão já salvo que pertence a este comprador, use card_id no lugar de token_id — a propriedade é validada antes de cobrar.
(d) Trial sem cartão
Usepayment_method: "no_payment_required" quando a sessão de assinatura foi
criada com trial e payment_method_collection: "if_required". A confirmação
cria a assinatura em trial, não cria cobrança no momento e retorna
payment_status: "no_payment_required".
Tokenização do cartão
A Chargefy não aceita número de cartão em texto plano neste endpoint. Otoken_id precisa ser um token de uso único gerado client-side por uma das duas vias:
- Hosted page (recomendado) — você redireciona o comprador pra
resposta.urle o formulário de cartão da Chargefy tokeniza, confirma e devolve emsuccess_url. Sem PCI no seu lado. - Frontend custom — tokenize o cartão no browser com um fluxo client-side compatível e envie somente o token em
token_id. O cartão nunca deve tocar seu servidor; a Chargefy associa o token ao comprador e conclui server-side.
Resposta
Retorna o DTO completo da sessão compayment_data preenchido conforme o método.
A leitura canônica de display details para métodos assíncronos (PIX, boleto)
é next_action — um formato tipado com union discriminada por type.
payment_data permanece preenchido por compatibilidade durante a transição;
novas integrações devem ler next_action.
PIX
Boleto
Cartão de crédito (sucesso)
Trial sem cartão
Webhooks disparados
| Quando | Evento |
|---|---|
| Imediatamente após confirm | checkout.session.completed |
| PIX/boleto compensados (async) | checkout.session.async.payment.succeeded |
| Boleto vencido / PIX expirou | checkout.session.async.payment.failed |
| Cobrança concluída | payment.intent.succeeded |
| Cobrança falhou | payment.intent.failed |
Erros
| HTTP | Razão |
|---|---|
| 400 | client_secret ausente; payment_method não está em payment_method_types da sessão |
| 400 | Campos obrigatórios do comprador faltando (customer_name/customer_email) |
| 400 | customer_billing_address faltando ou incompleto quando payment_method: "boleto" |
| 400 | token_id (ou card_id) faltando quando payment_method: "credit_card" |
| 400 | card_id não pertence a este comprador |
| 400 | installments excede o máximo permitido pelo valor da sessão |
| 402 | Cartão recusado pelo emissor (card_error) |
| 403 | Sessão não está em status: "open" (já confirmada, expirou ou foi soft-deletada) |
| 404 | Checkout session não encontrada |
| 422 | no_payment_required usado fora de trial de assinatura com payment_method_collection: "if_required" |
| 422 | Campo exigido faltando: documento para boleto, ou documento/telefone/endereço exigidos pela política da sessão |
| 422 | Cupom inválido; restrição do meio de pagamento (ex: endereço fora do Brasil para boleto) |

