Skip to main content
POST
cURL

Visão geral

O método threeDs processa um pagamento por cartão de crédito com autenticação 3-D Secure (3DS). Esse fluxo garante que o portador do cartão foi autenticado pelo banco emissor antes da cobrança, transferindo a responsabilidade de chargeback por fraude do produtor para o emissor (liability shift).
Este endpoint representa a Etapa 2 do fluxo 3DS, a autorização. A Etapa 1 (autenticação do comprador com o banco) é realizada pelo front-end do integrador usando o SDK do adquirente (Worldpay.js, BP.MPI da Cielo etc.) antes de chamar esta API.
O fluxo completo tem quatro passos:
1

Tokenizar o cartão

O front-end coleta os dados do cartão e chama POST /public_api/card-tokens/ para obter um cardToken de uso único, válido por 15 minutos.
2

Iniciar sessão 3DS

O front-end usa o SDK do adquirente com os dados do cartão para iniciar o fluxo 3DS e obter um referenceId de sessão.
3

Autenticar o comprador

O banco emissor apresenta o desafio ao comprador (SMS, biometria etc.) e devolve ao front-end os dados de autenticação: cavv, eci, version e referenceId.
4

Autorizar o pagamento (este endpoint)

O integrador chama POST /public_api/payments/ com paymentMethod: "threeDs", o cardToken e os dados de autenticação. A Cakto autoriza e captura o pagamento junto ao adquirente.

Autenticação

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

Escopo

3DS não exige conta Cakto Banking. O pré-requisito de conta Banking vale só para pix, pix_auto e boleto — veja Pré-requisitos de Pix.

Idempotência

O header X-Idempotency-Key é obrigatório e permite reenviar a mesma requisição com segurança sem gerar cobranças duplicadas. Janela de retenção: 24 horas.
O card.token tem validade de 15 minutos e uso único. Se a idempotência reutilizar uma chave existente, o token original já foi consumido, e a resposta armazenada é devolvida sem reprocessar.

Rate limit

Corpo da requisição

Resumo dos campos

Detalhamento dos campos

enum<string>
required
Deve ser "threeDs" para pagamentos com autenticação 3DS.
object
required
Dados do pagador.
array<object>
required
Itens da cobrança. Deve conter exatamente um item.
object
required
Token de cartão obtido via POST /public_api/card-tokens/.
object
Dados de autenticação 3DS fornecidos pelo SDK do adquirente após o comprador completar o desafio. Fortemente recomendado. Sem esses dados, o pagamento pode ser processado sem liability shift.
integer
default:"1"
Número de parcelas, de 1 a 12. Aceito apenas com credit_card e threeDs.
string
short_id do afiliado responsável pela venda.
string
Código do cupom de desconto. Até 255 caracteres.
object
Parâmetros de rastreio.
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.
Este é o único campo de topo do payload em snake_case; todos os demais campos de topo são camelCase (campos aninhados, como metadata.utm_source, também usam snake_case). Enviar antifraudProfilingAttemptReference resulta em 400 com { "antifraudProfilingAttemptReference": "Campo não suportado pelo contrato público." }.

Resposta de sucesso

201 Created
string
Identificador único do pedido criado.
string
Código curto de referência do pedido.
string
Status do pagamento. Valores possíveis:
string
Confirmado como threeDs.
string
Valor final cobrado, em reais, como string decimal.
string
Valor base da oferta antes de descontos.
string
Valor de desconto aplicado.
string
Taxas da Cakto consolidadas.
string
Identificador da transação no adquirente.
string
URL do checkout Cakto associado à cobrança.
string<date-time>
Timestamp ISO 8601.
object
Resumo do produto.
object
Resumo da oferta cobrada.

Exemplo de resposta

3DS Aprovado

Respostas de erro

Exemplo de requisição

Boas práticas

  • Sempre obtenha o cardToken imediatamente antes de chamar este endpoint. O token expira em 15 minutos e é de uso único.
  • Trate o status pending. Ocorre quando o adquirente (ex.: Worldpay) ainda está processando o desafio 3DS iniciado pelo backend. Monitore via webhook purchase_approved ou purchase_refused para atualizar o estado na sua aplicação.
  • Envie threeDSecure sempre que disponível. Sem ele, a transação pode ser processada sem liability shift, expondo o produtor a chargebacks por fraude.
  • Não confunda declined com refused. declined é recusa financeira do banco (limite, suspeita de fraude). refused é falha técnica no adquirente.

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.