Chave de API (Authorization: Bearer ep_…)· escopo checkout:write· createCheckout
Cria a sessão de checkout hospedado (pay.) para um pedido. O link carrega um token de alta entropia; a página usa um token efêmero escopado à sessão, nunca a sua chave de API. Validações: formas de pagamento sem repetição, returnUrl HTTPS, expiração de 10 minutos a 7 dias e itens do pedido somando o total (422 ORDER_ITEMS_TOTAL_MISMATCH). Com notifyPayer (padrão), o pagador recebe o link e os lembretes por e-mail. Expirar é local: só com cancelPendingOnExpiry as cobranças Pix/boleto pendentes recebem pedido de cancelamento. Com subscription, a sessão cria a assinatura e a 1ª cobrança é paga pelo método escolhido.
Escopo da chave:checkout:write.
Idempotência: exige o header Idempotency-Key.
Headers de createCheckout
Header
Obrigatório
Descrição
X-Account-Id
sim
Conta permitida pelos grants do principal.
Idempotency-Key
sim
Chave única por intenção (16 a 128 caracteres visíveis). Ao refazer a mesma chamada, repita a mesma chave: o resultado gravado é devolvido. Mesma chave com outro conteúdo responde 409 IDEMPOTENCY_CONFLICT.
Parâmetros de createCheckout
Parâmetro
Onde
Tipo
Descrição
Eclipta-Pay-Version
header
"2026-11-13"
Versão de data do contrato. Opcional; a resposta sempre informa a versão usada. Valor desconhecido responde 400 UNSUPPORTED_API_VERSION.
Corpo da requisição
Campos do corpo de createCheckout
Campo
Tipo
Descrição
orderId obrigatório
Id (texto)
8–160 caracteres · formato ^[A-Za-z0-9_]+$
allowedModes obrigatório
lista de "PIX" | "BOLETO" | "CARD_INSTALLMENTS" | "TWO_CARDS" | "PIX_SCHEDULE" | "CARD_MONTHLY_PLAN" | "PIX_FINANCED"
PIX_FINANCED responde 422 CAPABILITY_UNAVAILABLE (sem provedor de crédito). 1–∞ itens
returnUrl obrigatório
texto
HTTPS obrigatório (no Sandbox também http://localhost para desenvolvimento).
expiresInSeconds
inteiro
Entre 10 minutos e 7 dias (padrão 1 hora). Expirar é local: não cancela cobranças já emitidas. 600 a 604800
notifyPayer
booleano
Envia ao pagador (e-mail do cliente) o link e os lembretes configurados na conta. Padrão: true.
cancelPendingOnExpiry
booleano
Política explícita: ao expirar, pede o cancelamento (operação própria) das cobranças Pix/boleto pendentes da sessão. Padrão: false.
subscription
CheckoutSubscription
Modo assinatura: a sessão cria a assinatura e a 1ª cobrança é paga pelo método escolhido.
Requisição inválida: fieldErrors aponta cada campo.
401
INVALID_API_KEY
Chave de API ausente, inválida, expirada ou revogada.
403
SCOPE_MISSING
Escopo ausente, conta não permitida em X-Account-Id, IP fora da lista ou conta suspensa.
409
IDEMPOTENCY_CONFLICT
Conflito de idempotência (IDEMPOTENCY_CONFLICT), requisição em andamento com a mesma chave (REQUEST_IN_PROGRESS) ou estado do recurso.
422
CAPABILITY_UNAVAILABLE
Regra de negócio ou capacidade indisponível para a conta.
429
TOO_MANY_REQUESTS
Limite de requisições da chave atingido (rajada de 100 e 6.000 por minuto). Toda resposta traz RateLimit-Limit, RateLimit-Remaining e RateLimit-Reset; o 429 traz Retry-After em segundos. Aguarde e repita com a mesma Idempotency-Key.
Requisição inválida: fieldErrors aponta cada campo.
401
INVALID_API_KEY
Chave de API ausente, inválida, expirada ou revogada.
403
SCOPE_MISSING
Escopo ausente, conta não permitida em X-Account-Id, IP fora da lista ou conta suspensa.
404
RESOURCE_NOT_FOUND
Recurso inexistente nesta conta (inclusive recurso de outra conta ou de outro tenant).
429
TOO_MANY_REQUESTS
Limite de requisições da chave atingido (rajada de 100 e 6.000 por minuto). Toda resposta traz RateLimit-Limit, RateLimit-Remaining e RateLimit-Reset; o 429 traz Retry-After em segundos. Aguarde e repita com a mesma Idempotency-Key.
Token efêmero da sessão de checkout (usado pela página de pagamento)· confirmCheckout
Confirma a modalidade escolhida na página de checkout. Valor, conta e cliente vêm da sessão no servidor. Responde 202 + Operation.
Idempotência: exige o header Idempotency-Key.
Headers de confirmCheckout
Header
Obrigatório
Descrição
Idempotency-Key
sim
Chave única por intenção (16 a 128 caracteres visíveis). Ao refazer a mesma chamada, repita a mesma chave: o resultado gravado é devolvido. Mesma chave com outro conteúdo responde 409 IDEMPOTENCY_CONFLICT.
Requisição inválida: fieldErrors aponta cada campo.
401
INVALID_API_KEY
Chave de API ausente, inválida, expirada ou revogada.
403
SCOPE_MISSING
Escopo ausente, conta não permitida em X-Account-Id, IP fora da lista ou conta suspensa.
404
RESOURCE_NOT_FOUND
Recurso inexistente nesta conta (inclusive recurso de outra conta ou de outro tenant).
409
IDEMPOTENCY_CONFLICT
Conflito de idempotência (IDEMPOTENCY_CONFLICT), requisição em andamento com a mesma chave (REQUEST_IN_PROGRESS) ou estado do recurso.
422
CAPABILITY_UNAVAILABLE
Regra de negócio ou capacidade indisponível para a conta.
429
TOO_MANY_REQUESTS
Limite de requisições da chave atingido (rajada de 100 e 6.000 por minuto). Toda resposta traz RateLimit-Limit, RateLimit-Remaining e RateLimit-Reset; o 429 traz Retry-After em segundos. Aguarde e repita com a mesma Idempotency-Key.
Token efêmero da sessão de checkout (usado pela página de pagamento)· createCaptureContext
Emite o contexto efêmero para o formulário de cartão enviar os dados direto ao card-edge. A API pública nunca recebe número nem código de segurança do cartão.
Idempotência: exige o header Idempotency-Key.
Headers de createCaptureContext
Header
Obrigatório
Descrição
Idempotency-Key
sim
Chave única por intenção (16 a 128 caracteres visíveis). Ao refazer a mesma chamada, repita a mesma chave: o resultado gravado é devolvido. Mesma chave com outro conteúdo responde 409 IDEMPOTENCY_CONFLICT.
Parâmetros de createCaptureContext
Parâmetro
Onde
Tipo
Descrição
id obrigatório
caminho
Id (texto)
8–160 caracteres · formato ^[A-Za-z0-9_]+$
Corpo da requisição
Campos do corpo de createCaptureContext
Campo
Tipo
Descrição
legReference
texto
0–60 caracteres
usage obrigatório
"SINGLE" | "FINITE_MONTHLY" | "SUBSCRIPTION"
consent
Consent
consent.termsVersion obrigatório
texto
1–∞ caracteres
consent.accepted obrigatório
true
consent.displayedScheduleHash obrigatório
texto
formato ^[a-f0-9]{64}$
Exemplo
curl -X POST "$ECLIPTA_PAY_API/v1/checkout/sessions/{id}/capture-sessions" \
-H "Idempotency-Key: <uma chave por intenção>" \
-H "Content-Type: application/json" \
-d '{"usage":"SINGLE"}'
Requisição inválida: fieldErrors aponta cada campo.
401
INVALID_API_KEY
Chave de API ausente, inválida, expirada ou revogada.
403
SCOPE_MISSING
Escopo ausente, conta não permitida em X-Account-Id, IP fora da lista ou conta suspensa.
404
RESOURCE_NOT_FOUND
Recurso inexistente nesta conta (inclusive recurso de outra conta ou de outro tenant).
409
IDEMPOTENCY_CONFLICT
Conflito de idempotência (IDEMPOTENCY_CONFLICT), requisição em andamento com a mesma chave (REQUEST_IN_PROGRESS) ou estado do recurso.
422
CAPABILITY_UNAVAILABLE
Regra de negócio ou capacidade indisponível para a conta.
429
TOO_MANY_REQUESTS
Limite de requisições da chave atingido (rajada de 100 e 6.000 por minuto). Toda resposta traz RateLimit-Limit, RateLimit-Remaining e RateLimit-Reset; o 429 traz Retry-After em segundos. Aguarde e repita com a mesma Idempotency-Key.
curl -X GET "$ECLIPTA_PAY_API/v1/checkout/sessions/{id}/schedule-quote"
Resposta 200: Sucesso.
Campos da resposta 200 de getCheckoutScheduleQuote
Campo
Tipo
Descrição
mode obrigatório
"PIX_SCHEDULE" | "CARD_MONTHLY_PLAN"
count obrigatório
inteiro
2 a 9007199254740991
totalCents obrigatório
PositiveCents (texto)
formato ^[1-9][0-9]{0,14}$
firstDueDate obrigatório
texto
formato ^\d{4}-\d{2}-\d{2}$
anchorDay obrigatório
inteiro
1 a 31
timezone obrigatório
texto
termsVersion obrigatório
texto
installments obrigatório
lista de objeto
installments[].index obrigatório
inteiro
1 a 9007199254740991
installments[].dueDate obrigatório
texto
formato ^\d{4}-\d{2}-\d{2}$
installments[].amountCents obrigatório
PositiveCents (texto)
formato ^[1-9][0-9]{0,14}$
scheduleHash obrigatório
texto
sha256 do calendário canônico (modo, total, parcelas). formato ^[a-f0-9]{64}$
notice obrigatório
texto
dunningPolicy obrigatório
objeto ou nulo
Exemplo 200
{
"mode": "PIX_SCHEDULE",
"count": 3,
"totalCents": "30000",
"firstDueDate": "2026-11-20",
"anchorDay": 20,
"timezone": "America/Sao_Paulo",
"termsVersion": "pix-parcelas-2026-11-14",
"installments": [
{
"index": 1,
"dueDate": "2026-11-20",
"amountCents": "10000"
},
{
"index": 2,
"dueDate": "2026-12-20",
"amountCents": "10000"
},
{
"index": 3,
"dueDate": "2027-01-20",
"amountCents": "10000"
}
],
"scheduleHash": "3b1f6c0e9a2d4b7c8e5f1a0d2c4b6e8f0a1c3e5b7d9f2a4c6e8b0d1f3a5c7e9b",
"notice": "Cada parcela precisa ser paga até o vencimento. Não é financiamento: o pedido é liberado quando todas forem pagas.",
"dunningPolicy": null
}
Erros
Erros de getCheckoutScheduleQuote
HTTP
Exemplo de code
Quando
400
INVALID_REQUEST
Requisição inválida: fieldErrors aponta cada campo.
401
INVALID_API_KEY
Chave de API ausente, inválida, expirada ou revogada.
403
SCOPE_MISSING
Escopo ausente, conta não permitida em X-Account-Id, IP fora da lista ou conta suspensa.
404
RESOURCE_NOT_FOUND
Recurso inexistente nesta conta (inclusive recurso de outra conta ou de outro tenant).
429
TOO_MANY_REQUESTS
Limite de requisições da chave atingido (rajada de 100 e 6.000 por minuto). Toda resposta traz RateLimit-Limit, RateLimit-Remaining e RateLimit-Reset; o 429 traz Retry-After em segundos. Aguarde e repita com a mesma Idempotency-Key.
Dados públicos da oferta para a página pay./o/<código>: nome e logo da loja, produto, nome, tipo, preço e formas de pagamento. Sem autenticação e com limite por IP. Oferta desativada ou produto arquivado responde 410 OFFER_UNAVAILABLE; código inexistente, 404 OFFER_NOT_FOUND.
Parâmetros de getPublicOffer
Parâmetro
Onde
Tipo
Descrição
code obrigatório
caminho
texto
8–40 caracteres · formato ^[a-z0-9]+$
Exemplo
curl -X GET "$ECLIPTA_PAY_API/v1/checkout/offers/{code}"
Resposta 200: Sucesso.
Campos da resposta 200 de getPublicOffer
Campo
Tipo
Descrição
code obrigatório
texto
environment obrigatório
Environment
Em sandbox a página mostra que nenhum valor real é cobrado.
merchantName obrigatório
texto
merchantLogo obrigatório
texto ou nulo
Logo do lojista (data: URI de imagem); null = monograma.
{
"code": "k7m2xq9prt4hwd",
"environment": "sandbox",
"merchantName": "Loja Exemplo",
"merchantLogo": null,
"product": {
"name": "Curso de fotografia",
"description": "Aulas gravadas e material de apoio."
},
"offer": {
"name": "À vista",
"kind": "ONE_TIME",
"priceCents": "29700",
"methods": [
"PIX",
"CARD_INSTALLMENTS"
],
"maxInstallments": 6,
"subscriptionCycle": null
},
"disclosure": "Serviços de pagamento prestados por Asaas Gestão Financeira S.A."
}
Erros
Erros de getPublicOffer
HTTP
Exemplo de code
Quando
400
INVALID_REQUEST
Requisição inválida: fieldErrors aponta cada campo.
404
RESOURCE_NOT_FOUND
Recurso inexistente nesta conta (inclusive recurso de outra conta ou de outro tenant).
429
TOO_MANY_REQUESTS
Limite de requisições da chave atingido (rajada de 100 e 6.000 por minuto). Toda resposta traz RateLimit-Limit, RateLimit-Remaining e RateLimit-Reset; o 429 traz Retry-After em segundos. Aguarde e repita com a mesma Idempotency-Key.
Abre o checkout de uma oferta para o comprador: confere nome, CPF ou CNPJ (dígitos verificadores), e-mail e telefone opcional, cria ou reaproveita o cliente da conta (mesmo documento e e-mail), cria o pedido com o preço da oferta e a sessão de checkout. Sem autenticação, com limite por IP e Idempotency-Key obrigatória: repetir o envio devolve a mesma sessão, sem segundo pedido.
Idempotência: exige o header Idempotency-Key.
Headers de startOfferCheckout
Header
Obrigatório
Descrição
Idempotency-Key
sim
Chave única por intenção (16 a 128 caracteres visíveis). Ao refazer a mesma chamada, repita a mesma chave: o resultado gravado é devolvido. Mesma chave com outro conteúdo responde 409 IDEMPOTENCY_CONFLICT.
Parâmetros de startOfferCheckout
Parâmetro
Onde
Tipo
Descrição
code obrigatório
caminho
texto
8–40 caracteres · formato ^[a-z0-9]+$
Corpo da requisição
Campos do corpo de startOfferCheckout
Campo
Tipo
Descrição
name obrigatório
texto
2–150 caracteres
taxId obrigatório
texto
CPF ou CNPJ, só números (dígitos verificadores conferidos). formato ^([0-9]{11}|[0-9]{14})$
Requisição inválida: fieldErrors aponta cada campo.
404
RESOURCE_NOT_FOUND
Recurso inexistente nesta conta (inclusive recurso de outra conta ou de outro tenant).
409
IDEMPOTENCY_CONFLICT
Conflito de idempotência (IDEMPOTENCY_CONFLICT), requisição em andamento com a mesma chave (REQUEST_IN_PROGRESS) ou estado do recurso.
422
CAPABILITY_UNAVAILABLE
Regra de negócio ou capacidade indisponível para a conta.
429
TOO_MANY_REQUESTS
Limite de requisições da chave atingido (rajada de 100 e 6.000 por minuto). Toda resposta traz RateLimit-Limit, RateLimit-Remaining e RateLimit-Reset; o 429 traz Retry-After em segundos. Aguarde e repita com a mesma Idempotency-Key.