Skip to main content
POST
/
public_api
/
payments
/
curl --request POST \ --url https://api.cakto.com.br/public_api/payments/ \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'X-Idempotency-Key: <x-idempotency-key>' \ --data ' { "productId": "19bruPi", "paymentMethod": "pix", "customer": { "name": "Maria Souza", "email": "maria@example.com", "phone": "5511999999999", "fingerprint": "fp_2f8c1e5e-1aa8-4d4d-b9d4-19f7e5e0e1ab", "docType": "cpf", "docNumber": "12345678909" }, "items": [ { "offerId": "77BcHrY", "quantity": 1, "offerType": "main" } ], "pixExpiresIn": 3600, "metadata": { "utm_source": "facebook", "utm_campaign": "lancamento-mai" } } '
{ "id": "10bb51bb-03be-473c-b4c5-3490765c4096", "refId": "CATDiPp", "status": "waiting_payment", "paymentMethod": "pix", "amount": "49.90", "baseAmount": "49.90", "discount": "0.00", "fees": "0.00", "externalId": "7e1f0d37-9b5f-4f1f-bf7c-2bd4f97f9d23", "checkoutUrl": "https://pay.cakto.com.br/CATDiPp", "createdAt": "2026-04-28T23:30:00-03:00", "product": { "id": "cd287b31-d4b7-4e94-858a-66e05ce2f4a2", "short_id": "19bruPi", "name": "Cakto Pro Plan" }, "offer": { "id": "77BcHrY", "name": "Plano Mensal", "price": 49.9 }, "pix": { "qrCode": "00020126360014BR.GOV.BCB.PIX0114+5511999999999...", "qrCodeBase64": "data:image/png;base64,iVBORw0KGgoAAAANS...", "expirationDate": "2026-04-29T01:30:00-03:00" } }

Visão geral

O Pix Automático (pix_auto) é um método de pagamento recorrente baseado na especificação de Pix Automático do Banco Central do Brasil. O fluxo é diferente de uma cobrança Pix comum:
  1. Primeira cobrança: sua aplicação chama este endpoint, a Cakto cria o contrato de recorrência junto à adquirente e retorna um QR Code. O cliente escaneia o QR Code no app do banco para autorizar os débitos automáticos futuros.
  2. Cobranças seguintes: são debitadas automaticamente, sem ação do cliente.
A resposta inclui o campo user_journey, que indica a jornada de autorização definida pelo banco do cliente conforme a especificação do BCB (JORNADA_1 a JORNADA_4). Sua aplicação deve exibir o QR Code e aguardar o evento de webhook purchase_approved para confirmar a autorização.
Pix Automático não retorna qrCodeBase64. Apenas qrCode (copia-e-cola) está disponível na resposta.

Autenticação

Todas as requisições exigem um token OAuth2 válido obtido em POST /public_api/token/.
HeaderObrigatórioDescrição
AuthorizationSimBearer <access_token>.
Content-TypeSimapplication/json.
X-Idempotency-KeySimIdentificador único da cobrança (até 255 caracteres). Recomendado UUID v4.

Escopo

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

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 criar contratos de recorrência duplicados.
1

Reuso com payload idêntico

A resposta original é devolvida (mesmo id e mesmo status HTTP). A autorização 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 normalmente.
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

CritérioPadrão
Por IP de origem60 requisições / minuto
Por token de acesso120 requisições / minuto
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

CampoTipoObrigatório
productIdstringSim
paymentMethod"pix_auto"Sim
customerobjectSim
customer.namestringSim
customer.emailstringSim
customer.phonestringSim
customer.fingerprintstringSim
customer.docTypeenum (cpf, cnpj)Não (obrigatório na prática)
customer.docNumberstringNão (obrigatório na prática)
customer.birthDatestring (ISO 8601)Não
customer.ipstringNão
items (exatamente 1 item)arraySim
items[].offerIdstringSim
items[].quantityintegerNão (default 1)
items[].offerTypeenum (main)Não (default main)
addressobjectNão (obrigatório se o produto exige entrega física)
affiliateShortIdstringNão
couponstringNão
metadataobjectNão
pixExpiresIninteger (segundos)Não (respeita o limite do produto)
antifraudProfilingAttemptReferencestringSim

Detalhamento dos campos

productId
string
required
Identificador do produto da sua conta. Aceita o short_id (ex.: 19bruPi) ou o id em formato UUID. O produto deve pertencer ao tenant autenticado e estar ativo, e deve ter pix_auto habilitado nos métodos de pagamento.
paymentMethod
enum<string>
required
Deve ser "pix_auto" para iniciar uma autorização de débito automático via Pix Automático.
customer
object
required
Dados do pagador. O docType e docNumber são exigidos pelas adquirentes para criação do contrato de recorrência.
items
array<object>
required
Itens da cobrança. Deve conter exatamente um item.
address
object
Endereço do pagador. Obrigatório quando o produto exige entrega física.
affiliateShortId
string
short_id do afiliado responsável pela venda. Deve estar active e cadastrado para o produto.
coupon
string
Código do cupom de desconto. Até 255 caracteres.
metadata
object
Parâmetros de rastreio associados à cobrança.
pixExpiresIn
integer
Expiração do QR Code de autorização em segundos. Mínimo 60. Deve respeitar o limite máximo configurado no produto (pixExpiresIn).
antifraudProfilingAttemptReference
string
required
Referência da sessão de profiling do antifraude (Nethone) gerada no front-end antes de iniciar o pagamento. Usada para correlacionar a análise de comportamento do usuário com a transação.

Resposta de sucesso

201 Created
id
string
Identificador único do pedido criado.
refId
string
Código curto de referência do pedido.
status
string
Status inicial. Normalmente waiting_payment — aguardando o cliente escanear e autorizar o QR Code.
paymentMethod
string
Método de pagamento confirmado: pix_auto.
amount
string
Valor da primeira cobrança, em reais, como string decimal.
baseAmount
string
Valor base da oferta, antes de descontos.
discount
string
Valor de desconto aplicado.
fees
string
Taxas aplicadas pela Cakto, já consolidadas.
externalId
string
Identificador da transação na adquirente.
checkoutUrl
string
URL do checkout Cakto.
createdAt
string<date-time>
Timestamp ISO 8601 com fuso horário.
product
object
Resumo do produto associado.
offer
object
Resumo da oferta cobrada.
pix
object
Dados da autorização Pix Automático. Não contém qrCodeBase64 — apenas o código copia-e-cola.

Exemplo de resposta

Pix Automático
{
  "id": "30dd73dd-25dg-695e-d6e7-5612987e6218",
  "refId": "PIXaUTo",
  "status": "waiting_payment",
  "paymentMethod": "pix_auto",
  "amount": "49.90",
  "baseAmount": "49.90",
  "discount": "0.00",
  "fees": "0.00",
  "externalId": "txid-gerado-pela-adquirente",
  "checkoutUrl": "https://pay.cakto.com.br/PIXaUTo",
  "createdAt": "2026-04-28T23:30:00-03:00",
  "product": {
    "id": "cd287b31-d4b7-4e94-858a-66e05ce2f4a2",
    "short_id": "19bruPi",
    "name": "Cakto Pro Plan"
  },
  "offer": {
    "id": "77BcHrY",
    "name": "Plano Mensal",
    "price": 49.9
  },
  "pix": {
    "qrCode": "00020126360014BR.GOV.BCB.PIX0114+5511999999999...",
    "expirationDate": "2026-04-29T01:30:00-03:00",
    "user_journey": "JORNADA_1"
  }
}

Respostas de erro

CódigoQuando ocorreCorpo de exemplo
400Header X-Idempotency-Key ausente, vazio ou maior que 255 caracteres.{ "detail": "Header X-Idempotency-Key é obrigatório." }
400productId ausente, inválido ou de outro tenant.{ "productId": ["Produto não encontrado."] }
400paymentMethod ausente ou fora da lista aceita.{ "paymentMethod": ["Método de pagamento não suportado."] }
400Oferta inexistente, inativa ou de outro produto.{ "items": ["Oferta não encontrada para o produto informado."] }
400pixExpiresIn acima do limite do produto.{ "pixExpiresIn": ["A expiração do Pix excede o limite do produto (3600 segundo(s))."] }
400antifraudProfilingAttemptReference ausente.{ "antifraudProfilingAttemptReference": ["Este campo é obrigatório."] }
400Conta do produtor bloqueada.{ "detail": "Conta bloqueada." }
401Token ausente, inválido ou expirado.{ "detail": "As credenciais de autenticação não foram fornecidas." }
403Chave de API sem escopo payments.{ "detail": "Você não tem permissão para executar esta ação." }
409X-Idempotency-Key reutilizado com payload diferente.{ "detail": "Header X-Idempotency-Key reutilizado com payload diferente." }
409X-Idempotency-Key em processamento.{ "detail": "Requisição idempotente em processamento." }
429Rate limit excedido.{ "detail": "Request was throttled. Expected available in 60 seconds." }
Erros 5xx indicam falha temporária da Cakto. A chave de idempotência é liberada automaticamente — a próxima retentativa executa normalmente.

Exemplo de requisição

curl -X POST 'https://api.cakto.com.br/public_api/payments/' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsIn...' \
  -H 'Content-Type: application/json' \
  -H 'X-Idempotency-Key: 9c2b4e7f-ae5g-5g2g-cg8d-3ce5g08gae34' \
  -d '{
    "productId": "19bruPi",
    "paymentMethod": "pix_auto",
    "customer": {
      "name": "Maria Souza",
      "email": "maria@example.com",
      "phone": "5511999999999",
      "fingerprint": "fp_2f8c1e5e-1aa8-4d4d-b9d4-19f7e5e0e1ab",
      "docType": "cpf",
      "docNumber": "12345678909"
    },
    "items": [
      { "offerId": "77BcHrY", "quantity": 1, "offerType": "main" }
    ],
    "pixExpiresIn": 3600,
    "antifraudProfilingAttemptReference": "a3d90c10-c0c6-4c33-8af3-944f694ea633",
    "metadata": {
      "utm_source": "facebook",
      "utm_campaign": "lancamento-mai"
    }
  }'

Fluxo de autorização

Boas práticas

  • Exiba apenas pix.qrCode (texto copia-e-cola) — o Pix Automático não retorna imagem base64.
  • Aguarde o webhook purchase_approved para confirmar que o cliente autorizou os débitos. Não ative o acesso ao produto antes da confirmação.
  • docType e docNumber são essenciais — sem eles a adquirente pode rejeitar a criação do contrato de recorrência.
  • Persista o id retornado para conciliar com webhooks e com GET /public_api/orders/{id}/.
  • Não reuse a chave de idempotência em situações distintas — uma nova intenção de assinatura exige uma nova chave.

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 da cobrança (até 255 caracteres). Recomendado UUID v4. Reuso com payload idêntico devolve a resposta original por 24h.

Maximum string length: 255

Body

application/json
productId
string
required

short_id ou id (UUID) do produto. O produto deve pertencer ao tenant autenticado e estar ativo.

paymentMethod
enum<string>
required

Método de pagamento da cobrança.

Available options:
pix,
pix_auto,
boleto
customer
object
required
items
object[]
required

Deve conter exatamente um item.

Required array length: 1 element
address
object
affiliateShortId
string

short_id do afiliado responsável pela venda. 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
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

Response

Cobrança criada com sucesso.

id
string

Identificador único do pedido criado.

refId
string

Código curto de referência do pedido.

status
string

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

paymentMethod
enum<string>
Available options:
pix,
pix_auto,
boleto
amount
string

Valor final cobrado, em reais, como string decimal.

baseAmount
string | null
discount
string | null
fees
string | null
externalId
string | null

Identificador da transação no provedor.

checkoutUrl
string | null

URL do checkout Cakto.

createdAt
string<date-time>
product
object
offer
object
pix
object

Presente apenas para pix e pix_auto.

boleto
object

Presente apenas para boleto.