Uma checkout session é uma tentativa única de pagamento. Você cria a sessão pela API, leva o cliente pra página hospedada da Chargefy (ou pro seu próprio frontend), e recebe webhook quando ele paga. Diferente de um payment link (URL pública reutilizável), a session nasce ligada a um buying attempt específico — 1 cliente, 1 tentativa, expira em 24h.Documentation Index
Fetch the complete documentation index at: https://docs.chargefy.io/llms.txt
Use this file to discover all available pages before exploring further.
Fluxo
Criar a sessão
Server-side, com sua API key. Devolve
url (hosted page), client_secret (pra leitura no browser) e o DTO completo.Veja POST /v1/checkout-sessions.Levar o cliente
Redirecione pra
response.url. A Chargefy renderiza form, processa pagamento, e devolve o cliente em success_url.Confirm (automático na hosted page)
O frontend da Chargefy chama
POST .../public/:client_secret/confirm sozinho. Você não precisa fazer essa chamada — está documentada caso esteja construindo seu próprio frontend.Webhooks
Sua org recebe os eventos
checkout.session.* que você assinou. Trate completed (pedido fechado) + async_payment_succeeded (PIX/boleto creditado) pra liberar o produto.Como descrever o que cobrar
line_items aceita três formas. Use a mais idiomática pro seu caso. Documentação completa em POST /v1/checkout-sessions.
| Forma | Quando usar |
|---|---|
price_id do catálogo | Você cadastrou produtos+preços no dashboard. Mais curto. |
price_data + product_id do catálogo | Reusa produto cadastrado, valor único nessa sessão (sem poluir o catálogo). |
price_data + product_data ad-hoc | Headless — nada vem do catálogo. |
price_id apontar pra um preço com interval, a sessão nasce em mode: subscription automaticamente. Em price_data, basta adicionar recurring: { interval, interval_count? }.
Métodos de pagamento
Quais métodos aparecem na hosted page é determinado pelo cadastro financeiro da sua organização. A resposta da criação incluipayment_method_types: ["credit_card", "pix", "boleto"] indicando o que está disponível. Lista vazia significa cadastro não concluído — a sessão nasce mas o comprador não consegue pagar.
| Método | Confirmação | Latência típica |
|---|---|---|
| Cartão de crédito | Síncrona — autoriza no confirm | Imediato |
| PIX | Assíncrona — comprador paga via app, PSP confirma | Segundos a minutos |
| Boleto | Assíncrona — comprador paga em banco, compensação | 1–3 dias úteis |
Status
status | Significado |
|---|---|
open | Criada, aguardando comprador preencher e confirmar |
complete | Comprador confirmou. Cartão = aprovado. PIX/boleto = aguarda async |
expired | 24h sem confirm. Terminal |
payment_status evolui: unpaid → paid (ou permanece unpaid se PIX/boleto não compensar).
Tracking de pedido
Usemetadata pra correlacionar com seu sistema. Bag de string→string, livre, ecoada em todos os webhooks checkout.session.* daquela sessão.
Customer (lazy)
Você não precisa criar customer antes da sessão. A Chargefy resolve no momento doconfirm — usando email + CPF/CNPJ informados pelo comprador. Customer existente é reaproveitado; novo é criado on-demand.
Se você já tem o customer, passe customer_id no body do create — a sessão referencia direto.
O customer_id resolvido aparece em checkout.session.completed em diante.
Próximos passos
- Criar uma checkout session — referência da API
- Checkout embarcado — abrir a hosted page em modal/iframe no seu site
- Eventos
checkout.session.*— webhooks

