Skip to main content
POST
cURL

Visão geral

Este endpoint gera uma cobrança Pix e devolve o QR Code que deve ser apresentado ao cliente final.
  • Retorna qrCode (código copia-e-cola / BR Code). A imagem do QR Code deve ser gerada pela sua aplicação a partir desse texto — a API não devolve imagem.
  • Use pixExpiresIn para definir o tempo de expiração do QR Code.
O split financeiro (produtor, coprodutores e afiliados) é aplicado automaticamente a partir das configurações do painel. Sua aplicação não precisa enviar dados financeiros.

Autenticação

Todas as requisições exigem um token OAuth2 válido obtido em POST /public_api/token/.

Escopo

A Chave de API utilizada deve ter o escopo payments habilitado. Configure no Painel Cakto.

Pré-requisitos

Pix exige conta Cakto Banking. Pix (pix), Pix Automático (pix_auto) e Boleto (boleto) liquidam em uma conta Cakto Banking do produtor. Sem essa conta, a cobrança é rejeitada com 400 antes de chegar à adquirente.Cartão (credit_card, threeDs) não exige conta Banking e continua funcionando normalmente.
A conta precisa atender às quatro condições ao mesmo tempo:
  • abertura concluída — a proposta chegou até o fim; conta em análise, em documentoscopia ou com proposta apenas aprovada ainda não vale;
  • ativa;
  • principal do produtor;
  • fora de encerramento — encerramento solicitado ou concluído invalida a conta, mesmo que ela ainda apareça como ativa.
Confira o status em Painel Cakto. A API pública (/public_api/) não expõe o status dessa conta — não há endpoint para consultá-lo antes de cobrar.

Idempotência

O header X-Idempotency-Key é obrigatório e permite reenviar a mesma requisição com segurança em caso de instabilidade de rede, sem gerar cobranças duplicadas.
1

Reuso com payload idêntico

A resposta original é devolvida (mesmo id e mesmo status HTTP). A cobrança não é recriada. Janela de retenção: 24 horas.
2

Reuso com payload diferente

Resposta 409 Conflict com a mensagem Header X-Idempotency-Key reutilizado com payload diferente. Use uma nova chave para a nova cobrança.
3

Reuso enquanto a requisição original ainda processa

Resposta 409 Conflict com a mensagem Requisição idempotente em processamento. Aguarde a primeira finalizar.
4

Falha do servidor (5xx)

A chave é liberada automaticamente. A próxima retentativa com o mesmo header executa uma cobrança nova.
Gere a chave antes de chamar o endpoint e persista-a junto da operação de negócio. Use a mesma chave em todas as retentativas dessa operação.

Rate limit

Ao exceder qualquer um dos limites, a resposta é 429 Too Many Requests com o header Retry-After indicando os segundos restantes.

Corpo da requisição

Resumo dos campos

Detalhamento dos campos

enum<string>
required
Deve ser "pix" para cobranças Pix transacionais.
object
required
Dados do pagador.
array<object>
required
Itens da cobrança. Deve conter exatamente um item.
object
Endereço do pagador. Obrigatório quando o produto exige entrega física.
string
short_id do afiliado responsável pela venda. Deve estar active e cadastrado para o produto.
string
Código do cupom de desconto. Até 255 caracteres.
object
Parâmetros de rastreio associados à cobrança.
integer
Expiração do código Pix em segundos. Mínimo 60. Deve respeitar o limite máximo configurado no produto (pixExpiresIn).O valor é repassado à adquirente que processar a cobrança. Se ela impuser um limite próprio, vale o dela — confira sempre o pix.expirationDate devolvido na resposta. Omitindo o campo, vale o padrão da adquirente.

Resposta de sucesso

201 Created
string
Identificador único do pedido criado.
string
Código curto de referência do pedido.
string
Status inicial do pedido. Normalmente waiting_payment.
string
Método de pagamento confirmado: pix.
string
Valor final cobrado, em reais, como string decimal.
string
Valor base da oferta, antes de descontos.
string
Valor de desconto aplicado.
string
Taxas aplicadas pela Cakto, já consolidadas.
string
Identificador da transação no provedor de pagamento.
string
URL do checkout Cakto, útil para reapresentar a cobrança ao cliente.
string<date-time>
Timestamp ISO 8601 com fuso horário.
object
Resumo do produto associado.
object
Resumo da oferta cobrada.
object
Dados do Pix gerado.

Exemplo de resposta

Pix

Respostas de erro

Erros 5xx indicam falha temporária da Cakto. A chave de idempotência é liberada automaticamente. A próxima retentativa executa a cobrança normalmente.

Exemplo de requisição

Boas práticas

  • Gere uma chave de idempotência por intenção de compra, não por retentativa. Se o usuário recarregar o carrinho e mudar o item, gere uma nova chave.
  • Persista o id retornado junto à intenção de compra. Use-o para conciliar com webhooks e com GET /public_api/orders/{id}/.
  • Exiba o QR Code assim que receber a resposta. Gere a imagem no seu lado a partir de pix.qrCode (qualquer biblioteca de QR Code) e ofereça também o texto copia-e-cola.
  • Não envie dados sensíveis em metadata. Os campos UTM e sck são propagados para webhooks e relatórios.

Authorizations

Authorization
string
header
required

Token de autenticação do tipo Bearer {access_token}, onde {access_token} é o token obtido no fluxo de autenticação.

Headers

X-Idempotency-Key
string
required

Identificador único por cobrança. Reuso com payload idêntico devolve a mesma resposta (24h). Máximo de 255 caracteres; recomenda-se UUID v4.

Body

paymentMethod
enum<string>
required

Método de pagamento.

  • pix - pix
  • pix_auto - pix_auto
  • boleto - boleto
  • credit_card - credit_card
  • threeDs - threeDs
Available options:
pix,
pix_auto,
boleto,
credit_card,
threeDs
customer
object
required

Dados do pagador. CPF e CPNJ aceitos conforme contrato existente do checkout.

items
object[]
required

Deve conter exatamente um item.

address
object | null

Endereço do pagador. Obrigatório quando o produto exige envio físico.

affiliateShortId
string

short_id do afiliado responsável pela venda, usado para resolver o split interno. Deve estar com status active e cadastrado para o produto informado.

Maximum string length: 40
coupon
string

Código do cupom de desconto.

Maximum string length: 255
metadata
object

Optional UTM/tracking metadata associated with the payment.

dueDate
string<date>

Somente para boleto. Data de vencimento (YYYY-MM-DD). Deve ser futura e respeitar o ticketExpiration do produto.

pixExpiresIn
integer

Somente para pix e pix_auto. Expiração do código Pix em segundos. Mínimo 60. Deve respeitar o pixExpiresIn do produto.

Required range: x >= 60
card
object

Dados do cartão de crédito. Obrigatório quando paymentMethod é credit_card ou threeDs.

threeDSecure
object

Dados de autenticação 3DS. Opcional para credit_card; recomendado para threeDs.

installments
integer | null

Número de parcelas. Aplicável apenas para pagamentos com cartão de crédito.

Required range: 1 <= x <= 12
antifraud_profiling_attempt_reference
string

Referência de profiling do antifraude. Obrigatório para credit_card e threeDs; deve ser o mesmo attemptReference usado ao inicializar o profiler no navegador.

Response

Corpo da resposta status 201

Cobrança criada pelo endpoint público.

id
string

Identificador único do pedido criado.

refId
string | null

Código curto de referência do pedido.

status
string | null

Status inicial do pedido. Para Pix e Boleto, normalmente waiting_payment.

paymentMethod
enum<string>

Método de pagamento da cobrança, ecoando o valor enviado na requisição.

  • pix - pix
  • pix_auto - pix_auto
  • boleto - boleto
  • credit_card - credit_card
  • threeDs - threeDs
Available options:
pix,
pix_auto,
boleto,
credit_card,
threeDs
amount
string

Valor final cobrado, em reais, como string decimal.

baseAmount
string | null

Valor da oferta antes de descontos.

discount
string | null

Desconto aplicado.

fees
string | null

Taxas da transação.

externalId
string | null

Identificador da transação no provedor.

checkoutUrl
string | null

URL do checkout Cakto.

createdAt
string<date-time> | null

Data e hora de criação da cobrança.

product
object

Produto resolvido a partir da oferta enviada.

offer
object

Oferta cobrada. Campos vazios no checkout são preenchidos com a oferta validada.

pix
object

Presente apenas para pix e pix_auto.

boleto
object

Presente apenas para boleto.