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 '
{
"customer": {
"name": "<string>",
"email": "jsmith@example.com",
"phone": "<string>",
"birthDate": "2023-12-25",
"docType": "<string>",
"docNumber": "<string>",
"ip": "<string>",
"fingerprint": "<string>"
},
"items": [
{
"offerId": "<string>",
"quantity": 1,
"offerType": "main",
"installments": 6
}
],
"address": {
"country": "<string>",
"state": "<string>",
"city": "<string>",
"zipcode": "<string>",
"street": "<string>",
"number": "<string>",
"neighborhood": "<string>",
"complement": "<string>"
},
"affiliateShortId": "<string>",
"coupon": "<string>",
"metadata": {
"utm_source": "<string>",
"utm_medium": "<string>",
"utm_campaign": "<string>",
"utm_term": "<string>",
"utm_content": "<string>",
"sck": "<string>"
},
"dueDate": "2023-12-25",
"pixExpiresIn": 61,
"card": {
"token": "<string>"
},
"threeDSecure": {
"cavv": "<string>",
"eci": "<string>",
"xid": "<string>",
"referenceId": "<string>",
"version": "<string>",
"dataOnly": false
},
"installments": 6,
"antifraud_profiling_attempt_reference": "<string>"
}
'import requests
url = "https://api.cakto.com.br/public_api/payments/"
payload = {
"customer": {
"name": "<string>",
"email": "jsmith@example.com",
"phone": "<string>",
"birthDate": "2023-12-25",
"docType": "<string>",
"docNumber": "<string>",
"ip": "<string>",
"fingerprint": "<string>"
},
"items": [
{
"offerId": "<string>",
"quantity": 1,
"offerType": "main",
"installments": 6
}
],
"address": {
"country": "<string>",
"state": "<string>",
"city": "<string>",
"zipcode": "<string>",
"street": "<string>",
"number": "<string>",
"neighborhood": "<string>",
"complement": "<string>"
},
"affiliateShortId": "<string>",
"coupon": "<string>",
"metadata": {
"utm_source": "<string>",
"utm_medium": "<string>",
"utm_campaign": "<string>",
"utm_term": "<string>",
"utm_content": "<string>",
"sck": "<string>"
},
"dueDate": "2023-12-25",
"pixExpiresIn": 61,
"card": { "token": "<string>" },
"threeDSecure": {
"cavv": "<string>",
"eci": "<string>",
"xid": "<string>",
"referenceId": "<string>",
"version": "<string>",
"dataOnly": False
},
"installments": 6,
"antifraud_profiling_attempt_reference": "<string>"
}
headers = {
"X-Idempotency-Key": "<x-idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Idempotency-Key': '<x-idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
customer: {
name: '<string>',
email: 'jsmith@example.com',
phone: '<string>',
birthDate: '2023-12-25',
docType: '<string>',
docNumber: '<string>',
ip: '<string>',
fingerprint: '<string>'
},
items: [{offerId: '<string>', quantity: 1, offerType: 'main', installments: 6}],
address: {
country: '<string>',
state: '<string>',
city: '<string>',
zipcode: '<string>',
street: '<string>',
number: '<string>',
neighborhood: '<string>',
complement: '<string>'
},
affiliateShortId: '<string>',
coupon: '<string>',
metadata: {
utm_source: '<string>',
utm_medium: '<string>',
utm_campaign: '<string>',
utm_term: '<string>',
utm_content: '<string>',
sck: '<string>'
},
dueDate: '2023-12-25',
pixExpiresIn: 61,
card: {token: '<string>'},
threeDSecure: {
cavv: '<string>',
eci: '<string>',
xid: '<string>',
referenceId: '<string>',
version: '<string>',
dataOnly: false
},
installments: 6,
antifraud_profiling_attempt_reference: '<string>'
})
};
fetch('https://api.cakto.com.br/public_api/payments/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.cakto.com.br/public_api/payments/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'customer' => [
'name' => '<string>',
'email' => 'jsmith@example.com',
'phone' => '<string>',
'birthDate' => '2023-12-25',
'docType' => '<string>',
'docNumber' => '<string>',
'ip' => '<string>',
'fingerprint' => '<string>'
],
'items' => [
[
'offerId' => '<string>',
'quantity' => 1,
'offerType' => 'main',
'installments' => 6
]
],
'address' => [
'country' => '<string>',
'state' => '<string>',
'city' => '<string>',
'zipcode' => '<string>',
'street' => '<string>',
'number' => '<string>',
'neighborhood' => '<string>',
'complement' => '<string>'
],
'affiliateShortId' => '<string>',
'coupon' => '<string>',
'metadata' => [
'utm_source' => '<string>',
'utm_medium' => '<string>',
'utm_campaign' => '<string>',
'utm_term' => '<string>',
'utm_content' => '<string>',
'sck' => '<string>'
],
'dueDate' => '2023-12-25',
'pixExpiresIn' => 61,
'card' => [
'token' => '<string>'
],
'threeDSecure' => [
'cavv' => '<string>',
'eci' => '<string>',
'xid' => '<string>',
'referenceId' => '<string>',
'version' => '<string>',
'dataOnly' => false
],
'installments' => 6,
'antifraud_profiling_attempt_reference' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-Idempotency-Key: <x-idempotency-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://api.cakto.com.br/public_api/payments/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Idempotency-Key"] = '<x-idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customer\": {\n \"name\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"phone\": \"<string>\",\n \"birthDate\": \"2023-12-25\",\n \"docType\": \"<string>\",\n \"docNumber\": \"<string>\",\n \"ip\": \"<string>\",\n \"fingerprint\": \"<string>\"\n },\n \"items\": [\n {\n \"offerId\": \"<string>\",\n \"quantity\": 1,\n \"offerType\": \"main\",\n \"installments\": 6\n }\n ],\n \"address\": {\n \"country\": \"<string>\",\n \"state\": \"<string>\",\n \"city\": \"<string>\",\n \"zipcode\": \"<string>\",\n \"street\": \"<string>\",\n \"number\": \"<string>\",\n \"neighborhood\": \"<string>\",\n \"complement\": \"<string>\"\n },\n \"affiliateShortId\": \"<string>\",\n \"coupon\": \"<string>\",\n \"metadata\": {\n \"utm_source\": \"<string>\",\n \"utm_medium\": \"<string>\",\n \"utm_campaign\": \"<string>\",\n \"utm_term\": \"<string>\",\n \"utm_content\": \"<string>\",\n \"sck\": \"<string>\"\n },\n \"dueDate\": \"2023-12-25\",\n \"pixExpiresIn\": 61,\n \"card\": {\n \"token\": \"<string>\"\n },\n \"threeDSecure\": {\n \"cavv\": \"<string>\",\n \"eci\": \"<string>\",\n \"xid\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"version\": \"<string>\",\n \"dataOnly\": false\n },\n \"installments\": 6,\n \"antifraud_profiling_attempt_reference\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyHttpResponse<String> response = Unirest.post("https://api.cakto.com.br/public_api/payments/")
.header("X-Idempotency-Key", "<x-idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"customer\": {\n \"name\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"phone\": \"<string>\",\n \"birthDate\": \"2023-12-25\",\n \"docType\": \"<string>\",\n \"docNumber\": \"<string>\",\n \"ip\": \"<string>\",\n \"fingerprint\": \"<string>\"\n },\n \"items\": [\n {\n \"offerId\": \"<string>\",\n \"quantity\": 1,\n \"offerType\": \"main\",\n \"installments\": 6\n }\n ],\n \"address\": {\n \"country\": \"<string>\",\n \"state\": \"<string>\",\n \"city\": \"<string>\",\n \"zipcode\": \"<string>\",\n \"street\": \"<string>\",\n \"number\": \"<string>\",\n \"neighborhood\": \"<string>\",\n \"complement\": \"<string>\"\n },\n \"affiliateShortId\": \"<string>\",\n \"coupon\": \"<string>\",\n \"metadata\": {\n \"utm_source\": \"<string>\",\n \"utm_medium\": \"<string>\",\n \"utm_campaign\": \"<string>\",\n \"utm_term\": \"<string>\",\n \"utm_content\": \"<string>\",\n \"sck\": \"<string>\"\n },\n \"dueDate\": \"2023-12-25\",\n \"pixExpiresIn\": 61,\n \"card\": {\n \"token\": \"<string>\"\n },\n \"threeDSecure\": {\n \"cavv\": \"<string>\",\n \"eci\": \"<string>\",\n \"xid\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"version\": \"<string>\",\n \"dataOnly\": false\n },\n \"installments\": 6,\n \"antifraud_profiling_attempt_reference\": \"<string>\"\n}")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.cakto.com.br/public_api/payments/");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("X-Idempotency-Key", "<x-idempotency-key>");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"customer\": {\n \"name\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"phone\": \"<string>\",\n \"birthDate\": \"2023-12-25\",\n \"docType\": \"<string>\",\n \"docNumber\": \"<string>\",\n \"ip\": \"<string>\",\n \"fingerprint\": \"<string>\"\n },\n \"items\": [\n {\n \"offerId\": \"<string>\",\n \"quantity\": 1,\n \"offerType\": \"main\",\n \"installments\": 6\n }\n ],\n \"address\": {\n \"country\": \"<string>\",\n \"state\": \"<string>\",\n \"city\": \"<string>\",\n \"zipcode\": \"<string>\",\n \"street\": \"<string>\",\n \"number\": \"<string>\",\n \"neighborhood\": \"<string>\",\n \"complement\": \"<string>\"\n },\n \"affiliateShortId\": \"<string>\",\n \"coupon\": \"<string>\",\n \"metadata\": {\n \"utm_source\": \"<string>\",\n \"utm_medium\": \"<string>\",\n \"utm_campaign\": \"<string>\",\n \"utm_term\": \"<string>\",\n \"utm_content\": \"<string>\",\n \"sck\": \"<string>\"\n },\n \"dueDate\": \"2023-12-25\",\n \"pixExpiresIn\": 61,\n \"card\": {\n \"token\": \"<string>\"\n },\n \"threeDSecure\": {\n \"cavv\": \"<string>\",\n \"eci\": \"<string>\",\n \"xid\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"version\": \"<string>\",\n \"dataOnly\": false\n },\n \"installments\": 6,\n \"antifraud_profiling_attempt_reference\": \"<string>\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
{
"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",
"product": {
"id": "cd287b31-d4b7-4e94-858a-66e05ce2f4a2",
"short_id": "19bruPi",
"name": "Product Name Example"
},
"offer": {
"id": "77BcHrY",
"name": "Product Name Example",
"price": 49.9
},
"pix": {
"qrCode": "00020126360014BR.GOV.BCB.PIX0114+5511999999999...",
"expirationDate": "2026-04-29 01:30:00+00:00",
"user_journey": null
},
"checkoutUrl": "https://pay.cakto.com.br/EXAMPLE",
"createdAt": "2026-04-28T23:30:00-03:00"
}Criar Cobrança 3DS
Processa um pagamento por cartão de crédito com autenticação 3DS. Requer token de cartão e dados da autenticação 3DS obtidos previamente no front-end.
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 '
{
"customer": {
"name": "<string>",
"email": "jsmith@example.com",
"phone": "<string>",
"birthDate": "2023-12-25",
"docType": "<string>",
"docNumber": "<string>",
"ip": "<string>",
"fingerprint": "<string>"
},
"items": [
{
"offerId": "<string>",
"quantity": 1,
"offerType": "main",
"installments": 6
}
],
"address": {
"country": "<string>",
"state": "<string>",
"city": "<string>",
"zipcode": "<string>",
"street": "<string>",
"number": "<string>",
"neighborhood": "<string>",
"complement": "<string>"
},
"affiliateShortId": "<string>",
"coupon": "<string>",
"metadata": {
"utm_source": "<string>",
"utm_medium": "<string>",
"utm_campaign": "<string>",
"utm_term": "<string>",
"utm_content": "<string>",
"sck": "<string>"
},
"dueDate": "2023-12-25",
"pixExpiresIn": 61,
"card": {
"token": "<string>"
},
"threeDSecure": {
"cavv": "<string>",
"eci": "<string>",
"xid": "<string>",
"referenceId": "<string>",
"version": "<string>",
"dataOnly": false
},
"installments": 6,
"antifraud_profiling_attempt_reference": "<string>"
}
'import requests
url = "https://api.cakto.com.br/public_api/payments/"
payload = {
"customer": {
"name": "<string>",
"email": "jsmith@example.com",
"phone": "<string>",
"birthDate": "2023-12-25",
"docType": "<string>",
"docNumber": "<string>",
"ip": "<string>",
"fingerprint": "<string>"
},
"items": [
{
"offerId": "<string>",
"quantity": 1,
"offerType": "main",
"installments": 6
}
],
"address": {
"country": "<string>",
"state": "<string>",
"city": "<string>",
"zipcode": "<string>",
"street": "<string>",
"number": "<string>",
"neighborhood": "<string>",
"complement": "<string>"
},
"affiliateShortId": "<string>",
"coupon": "<string>",
"metadata": {
"utm_source": "<string>",
"utm_medium": "<string>",
"utm_campaign": "<string>",
"utm_term": "<string>",
"utm_content": "<string>",
"sck": "<string>"
},
"dueDate": "2023-12-25",
"pixExpiresIn": 61,
"card": { "token": "<string>" },
"threeDSecure": {
"cavv": "<string>",
"eci": "<string>",
"xid": "<string>",
"referenceId": "<string>",
"version": "<string>",
"dataOnly": False
},
"installments": 6,
"antifraud_profiling_attempt_reference": "<string>"
}
headers = {
"X-Idempotency-Key": "<x-idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Idempotency-Key': '<x-idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
customer: {
name: '<string>',
email: 'jsmith@example.com',
phone: '<string>',
birthDate: '2023-12-25',
docType: '<string>',
docNumber: '<string>',
ip: '<string>',
fingerprint: '<string>'
},
items: [{offerId: '<string>', quantity: 1, offerType: 'main', installments: 6}],
address: {
country: '<string>',
state: '<string>',
city: '<string>',
zipcode: '<string>',
street: '<string>',
number: '<string>',
neighborhood: '<string>',
complement: '<string>'
},
affiliateShortId: '<string>',
coupon: '<string>',
metadata: {
utm_source: '<string>',
utm_medium: '<string>',
utm_campaign: '<string>',
utm_term: '<string>',
utm_content: '<string>',
sck: '<string>'
},
dueDate: '2023-12-25',
pixExpiresIn: 61,
card: {token: '<string>'},
threeDSecure: {
cavv: '<string>',
eci: '<string>',
xid: '<string>',
referenceId: '<string>',
version: '<string>',
dataOnly: false
},
installments: 6,
antifraud_profiling_attempt_reference: '<string>'
})
};
fetch('https://api.cakto.com.br/public_api/payments/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.cakto.com.br/public_api/payments/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'customer' => [
'name' => '<string>',
'email' => 'jsmith@example.com',
'phone' => '<string>',
'birthDate' => '2023-12-25',
'docType' => '<string>',
'docNumber' => '<string>',
'ip' => '<string>',
'fingerprint' => '<string>'
],
'items' => [
[
'offerId' => '<string>',
'quantity' => 1,
'offerType' => 'main',
'installments' => 6
]
],
'address' => [
'country' => '<string>',
'state' => '<string>',
'city' => '<string>',
'zipcode' => '<string>',
'street' => '<string>',
'number' => '<string>',
'neighborhood' => '<string>',
'complement' => '<string>'
],
'affiliateShortId' => '<string>',
'coupon' => '<string>',
'metadata' => [
'utm_source' => '<string>',
'utm_medium' => '<string>',
'utm_campaign' => '<string>',
'utm_term' => '<string>',
'utm_content' => '<string>',
'sck' => '<string>'
],
'dueDate' => '2023-12-25',
'pixExpiresIn' => 61,
'card' => [
'token' => '<string>'
],
'threeDSecure' => [
'cavv' => '<string>',
'eci' => '<string>',
'xid' => '<string>',
'referenceId' => '<string>',
'version' => '<string>',
'dataOnly' => false
],
'installments' => 6,
'antifraud_profiling_attempt_reference' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-Idempotency-Key: <x-idempotency-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://api.cakto.com.br/public_api/payments/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Idempotency-Key"] = '<x-idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customer\": {\n \"name\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"phone\": \"<string>\",\n \"birthDate\": \"2023-12-25\",\n \"docType\": \"<string>\",\n \"docNumber\": \"<string>\",\n \"ip\": \"<string>\",\n \"fingerprint\": \"<string>\"\n },\n \"items\": [\n {\n \"offerId\": \"<string>\",\n \"quantity\": 1,\n \"offerType\": \"main\",\n \"installments\": 6\n }\n ],\n \"address\": {\n \"country\": \"<string>\",\n \"state\": \"<string>\",\n \"city\": \"<string>\",\n \"zipcode\": \"<string>\",\n \"street\": \"<string>\",\n \"number\": \"<string>\",\n \"neighborhood\": \"<string>\",\n \"complement\": \"<string>\"\n },\n \"affiliateShortId\": \"<string>\",\n \"coupon\": \"<string>\",\n \"metadata\": {\n \"utm_source\": \"<string>\",\n \"utm_medium\": \"<string>\",\n \"utm_campaign\": \"<string>\",\n \"utm_term\": \"<string>\",\n \"utm_content\": \"<string>\",\n \"sck\": \"<string>\"\n },\n \"dueDate\": \"2023-12-25\",\n \"pixExpiresIn\": 61,\n \"card\": {\n \"token\": \"<string>\"\n },\n \"threeDSecure\": {\n \"cavv\": \"<string>\",\n \"eci\": \"<string>\",\n \"xid\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"version\": \"<string>\",\n \"dataOnly\": false\n },\n \"installments\": 6,\n \"antifraud_profiling_attempt_reference\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyHttpResponse<String> response = Unirest.post("https://api.cakto.com.br/public_api/payments/")
.header("X-Idempotency-Key", "<x-idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"customer\": {\n \"name\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"phone\": \"<string>\",\n \"birthDate\": \"2023-12-25\",\n \"docType\": \"<string>\",\n \"docNumber\": \"<string>\",\n \"ip\": \"<string>\",\n \"fingerprint\": \"<string>\"\n },\n \"items\": [\n {\n \"offerId\": \"<string>\",\n \"quantity\": 1,\n \"offerType\": \"main\",\n \"installments\": 6\n }\n ],\n \"address\": {\n \"country\": \"<string>\",\n \"state\": \"<string>\",\n \"city\": \"<string>\",\n \"zipcode\": \"<string>\",\n \"street\": \"<string>\",\n \"number\": \"<string>\",\n \"neighborhood\": \"<string>\",\n \"complement\": \"<string>\"\n },\n \"affiliateShortId\": \"<string>\",\n \"coupon\": \"<string>\",\n \"metadata\": {\n \"utm_source\": \"<string>\",\n \"utm_medium\": \"<string>\",\n \"utm_campaign\": \"<string>\",\n \"utm_term\": \"<string>\",\n \"utm_content\": \"<string>\",\n \"sck\": \"<string>\"\n },\n \"dueDate\": \"2023-12-25\",\n \"pixExpiresIn\": 61,\n \"card\": {\n \"token\": \"<string>\"\n },\n \"threeDSecure\": {\n \"cavv\": \"<string>\",\n \"eci\": \"<string>\",\n \"xid\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"version\": \"<string>\",\n \"dataOnly\": false\n },\n \"installments\": 6,\n \"antifraud_profiling_attempt_reference\": \"<string>\"\n}")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.cakto.com.br/public_api/payments/");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("X-Idempotency-Key", "<x-idempotency-key>");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"customer\": {\n \"name\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"phone\": \"<string>\",\n \"birthDate\": \"2023-12-25\",\n \"docType\": \"<string>\",\n \"docNumber\": \"<string>\",\n \"ip\": \"<string>\",\n \"fingerprint\": \"<string>\"\n },\n \"items\": [\n {\n \"offerId\": \"<string>\",\n \"quantity\": 1,\n \"offerType\": \"main\",\n \"installments\": 6\n }\n ],\n \"address\": {\n \"country\": \"<string>\",\n \"state\": \"<string>\",\n \"city\": \"<string>\",\n \"zipcode\": \"<string>\",\n \"street\": \"<string>\",\n \"number\": \"<string>\",\n \"neighborhood\": \"<string>\",\n \"complement\": \"<string>\"\n },\n \"affiliateShortId\": \"<string>\",\n \"coupon\": \"<string>\",\n \"metadata\": {\n \"utm_source\": \"<string>\",\n \"utm_medium\": \"<string>\",\n \"utm_campaign\": \"<string>\",\n \"utm_term\": \"<string>\",\n \"utm_content\": \"<string>\",\n \"sck\": \"<string>\"\n },\n \"dueDate\": \"2023-12-25\",\n \"pixExpiresIn\": 61,\n \"card\": {\n \"token\": \"<string>\"\n },\n \"threeDSecure\": {\n \"cavv\": \"<string>\",\n \"eci\": \"<string>\",\n \"xid\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"version\": \"<string>\",\n \"dataOnly\": false\n },\n \"installments\": 6,\n \"antifraud_profiling_attempt_reference\": \"<string>\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
{
"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",
"product": {
"id": "cd287b31-d4b7-4e94-858a-66e05ce2f4a2",
"short_id": "19bruPi",
"name": "Product Name Example"
},
"offer": {
"id": "77BcHrY",
"name": "Product Name Example",
"price": 49.9
},
"pix": {
"qrCode": "00020126360014BR.GOV.BCB.PIX0114+5511999999999...",
"expirationDate": "2026-04-29 01:30:00+00:00",
"user_journey": null
},
"checkoutUrl": "https://pay.cakto.com.br/EXAMPLE",
"createdAt": "2026-04-28T23:30:00-03:00"
}Visão geral
O métodothreeDs 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).
Tokenizar o cartão
POST /public_api/card-tokens/ para obter um cardToken de uso único, válido por 15 minutos.Iniciar sessão 3DS
referenceId de sessão.Autenticar o comprador
cavv, eci, version e referenceId.Autorizar o pagamento (este endpoint)
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 emPOST /public_api/token/.
| Header | Obrigatório | Descrição |
|---|---|---|
Authorization | Sim | Bearer <access_token>. |
Content-Type | Sim | application/json. |
X-Idempotency-Key | Sim | Identificador único da cobrança (até 255 caracteres). Recomendado UUID v4. |
Escopo
write payments
pix, pix_auto e boleto — veja Pré-requisitos de Pix.Idempotência
O headerX-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.
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
| Critério | Padrão |
|---|---|
| Por IP de origem | 60 requisições / minuto |
| Por token de acesso | 120 requisições / minuto |
Corpo da requisição
Resumo dos campos
| Campo | Tipo | Obrigatório |
|---|---|---|
paymentMethod | "threeDs" | Sim |
customer | object | Sim |
customer.name | string | Sim |
customer.email | string | Sim |
customer.phone | string | Sim |
customer.fingerprint | string | Sim |
customer.docType | enum (cpf, cnpj) | Não (obrigatório na prática) |
customer.docNumber | string | Não (obrigatório na prática) |
items (exatamente 1 item) | array | Sim |
items[].offerId | string | Sim |
card | object | Sim |
card.token | string | Sim |
threeDSecure | object | Não (fortemente recomendado) |
threeDSecure.cavv | string | Não |
threeDSecure.eci | string | Não |
threeDSecure.xid | string | Não |
threeDSecure.referenceId | string | Não |
threeDSecure.version | string | Não |
threeDSecure.dataOnly | boolean | Não (default false) |
installments | integer (1 a 12) | Não |
address | object | Não (obrigatório se o produto exige entrega física) |
affiliateShortId | string | Não |
coupon | string | Não |
metadata | object | Não |
antifraud_profiling_attempt_reference | string | Sim |
Detalhamento dos campos
"threeDs" para pagamentos com autenticação 3DS.Show Campos
Show Campos
5511999999999).cpf, cnpj.Show Campos do item
Show Campos do item
id da oferta cobrada. Deve estar active e pertencer à sua conta. Encontre o ID no Painel Cakto em Produtos. O produto é resolvido automaticamente a partir da oferta.1.main é aceito.POST /public_api/card-tokens/.Show Campos
Show Campos
Show Campos
Show Campos
05 (totalmente autenticado), 06 (tentativa aceita).dsTransactionId no 3DS 2.x).cakto-3ds-{id}.2.2.0.1 a 12. Aceito apenas com credit_card e threeDs.short_id do afiliado responsável pela venda.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
| Valor | Significado |
|---|---|
paid | Pagamento autorizado e capturado. |
declined | Recusado pelo banco ou adquirente (limite, bloqueio, fraude). |
refused | Recusado por falha técnica no adquirente. |
pending | Desafio 3DS ainda em andamento (fluxo Worldpay backend-driven). |
threeDs.Exemplo de resposta
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"refId": "3DSpayX",
"status": "paid",
"paymentMethod": "threeDs",
"amount": "199.90",
"baseAmount": "199.90",
"discount": "0.00",
"fees": "0.00",
"externalId": "cakto-3ds-abc123def456",
"checkoutUrl": "https://pay.cakto.com.br/3DSpayX",
"createdAt": "2026-05-29T14:00:00-03:00",
"product": {
"id": "cd287b31-d4b7-4e94-858a-66e05ce2f4a2",
"short_id": "19bruPi",
"name": "Cakto Pro Plan"
},
"offer": {
"id": "77BcHrY",
"name": "Plano Anual",
"price": 199.9
}
}
Respostas de erro
| Código | Quando ocorre | Corpo de exemplo |
|---|---|---|
400 | Header X-Idempotency-Key ausente ou inválido. | { "detail": "Header X-Idempotency-Key é obrigatório." } |
400 | Campo card ausente no payload. | { "card": "Este campo é obrigatório quando o método de pagamento é credit_card ou threeDs." } |
400 | Oferta inexistente, inativa ou de outra conta. | { "items": ["Oferta não encontrada."] } |
400 | antifraud_profiling_attempt_reference ausente. | { "antifraud_profiling_attempt_reference": ["Este campo é obrigatório quando o método de pagamento é credit_card ou threeDs. Envie a mesma referência usada no profiling do antifraude no navegador."] } |
401 | Token ausente, inválido ou expirado. | { "detail": "As credenciais de autenticação não foram fornecidas." } |
403 | Chave de API sem escopo payments. | { "detail": "Você não tem permissão para executar esta ação." } |
409 | X-Idempotency-Key reutilizado com payload diferente. | { "detail": "Header X-Idempotency-Key reutilizado com payload diferente." } |
429 | Rate limit excedido. | { "detail": "Request was throttled. Expected available in 60 seconds." } |
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: f3a2d1c0-b9e8-4f7a-8c6b-5d4e3f2a1b0c' \
-d '{
"paymentMethod": "threeDs",
"customer": {
"name": "Maria Souza",
"email": "maria@example.com",
"phone": "5511999999999",
"fingerprint": "fp_2f8c1e5e-1aa8-4d4d-b9d4-19f7e5e0e1ab",
"docType": "cpf",
"docNumber": "12345678909"
},
"items": [
{ "offerId": "77BcHrY" }
],
"card": {
"token": "tok_abc123def456"
},
"threeDSecure": {
"cavv": "AAIBBYNoEwAAACcKhAJkdQAAAAA=",
"eci": "05",
"version": "2.2.0",
"referenceId": "cakto-3ds-abc123def456"
},
"antifraud_profiling_attempt_reference": "a3d90c10-c0c6-4c33-8af3-944f694ea633"
}'
import uuid
import requests
response = requests.post(
"https://api.cakto.com.br/public_api/payments/",
headers={
"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsIn...",
"Content-Type": "application/json",
"X-Idempotency-Key": str(uuid.uuid4()),
},
json={
"paymentMethod": "threeDs",
"customer": {
"name": "Maria Souza",
"email": "maria@example.com",
"phone": "5511999999999",
"fingerprint": "fp_2f8c1e5e-1aa8-4d4d-b9d4-19f7e5e0e1ab",
"docType": "cpf",
"docNumber": "12345678909",
},
"items": [{"offerId": "77BcHrY"}],
"card": {
"token": "tok_abc123def456",
},
"threeDSecure": {
"cavv": "AAIBBYNoEwAAACcKhAJkdQAAAAA=",
"eci": "05",
"version": "2.2.0",
"referenceId": "cakto-3ds-abc123def456",
},
"antifraud_profiling_attempt_reference": "a3d90c10-c0c6-4c33-8af3-944f694ea633",
},
timeout=30,
)
response.raise_for_status()
payment = response.json()
print(payment["status"]) # "paid", "declined", "refused" ou "pending"
print(payment["id"])
import { randomUUID } from "node:crypto";
const response = await fetch("https://api.cakto.com.br/public_api/payments/", {
method: "POST",
headers: {
Authorization: "Bearer eyJhbGciOiJIUzI1NiIsIn...",
"Content-Type": "application/json",
"X-Idempotency-Key": randomUUID(),
},
body: JSON.stringify({
paymentMethod: "threeDs",
customer: {
name: "Maria Souza",
email: "maria@example.com",
phone: "5511999999999",
fingerprint: "fp_2f8c1e5e-1aa8-4d4d-b9d4-19f7e5e0e1ab",
docType: "cpf",
docNumber: "12345678909",
},
items: [{ offerId: "77BcHrY" }],
card: {
token: "tok_abc123def456",
},
threeDSecure: {
cavv: "AAIBBYNoEwAAACcKhAJkdQAAAAA=",
eci: "05",
version: "2.2.0",
referenceId: "cakto-3ds-abc123def456",
},
antifraud_profiling_attempt_reference: "a3d90c10-c0c6-4c33-8af3-944f694ea633",
}),
});
if (!response.ok) throw new Error(`Cakto API error ${response.status}`);
const payment = await response.json();
console.log(payment.status); // "paid", "declined", "refused" ou "pending"
console.log(payment.id);
Boas práticas
- Sempre obtenha o
cardTokenimediatamente 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 webhookpurchase_approvedoupurchase_refusedpara atualizar o estado na sua aplicação. - Envie
threeDSecuresempre que disponível. Sem ele, a transação pode ser processada sem liability shift, expondo o produtor a chargebacks por fraude. - Não confunda
declinedcomrefused.declinedé recusa financeira do banco (limite, suspeita de fraude).refusedé falha técnica no adquirente.
Authorizations
Token de autenticação do tipo Bearer {access_token}, onde {access_token} é o token obtido no fluxo de autenticação.
Headers
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
Método de pagamento.
pix- pixpix_auto- pix_autoboleto- boletocredit_card- credit_cardthreeDs- threeDs
pix, pix_auto, boleto, credit_card, threeDs Dados do pagador. CPF e CPNJ aceitos conforme contrato existente do checkout.
Show child attributes
Show child attributes
Deve conter exatamente um item.
Show child attributes
Show child attributes
Endereço do pagador. Obrigatório quando o produto exige envio físico.
Show child attributes
Show child attributes
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.
40Código do cupom de desconto.
255Optional UTM/tracking metadata associated with the payment.
Show child attributes
Show child attributes
Somente para boleto. Data de vencimento (YYYY-MM-DD). Deve ser futura e respeitar o ticketExpiration do produto.
Somente para pix e pix_auto. Expiração do código Pix em segundos. Mínimo 60. Deve respeitar o pixExpiresIn do produto.
x >= 60Dados do cartão de crédito. Obrigatório quando paymentMethod é credit_card ou threeDs.
Show child attributes
Show child attributes
Dados de autenticação 3DS. Opcional para credit_card; recomendado para threeDs.
Show child attributes
Show child attributes
Número de parcelas. Aplicável apenas para pagamentos com cartão de crédito.
1 <= x <= 12Referê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.
Identificador único do pedido criado.
Código curto de referência do pedido.
Status inicial do pedido. Para Pix e Boleto, normalmente waiting_payment.
Método de pagamento da cobrança, ecoando o valor enviado na requisição.
pix- pixpix_auto- pix_autoboleto- boletocredit_card- credit_cardthreeDs- threeDs
pix, pix_auto, boleto, credit_card, threeDs Valor final cobrado, em reais, como string decimal.
Valor da oferta antes de descontos.
Desconto aplicado.
Taxas da transação.
Identificador da transação no provedor.
URL do checkout Cakto.
Data e hora de criação da cobrança.
Produto resolvido a partir da oferta enviada.
Show child attributes
Show child attributes
Oferta cobrada. Campos vazios no checkout são preenchidos com a oferta validada.
Show child attributes
Show child attributes
Presente apenas para pix e pix_auto.
Show child attributes
Show child attributes
Presente apenas para boleto.
Show child attributes
Show child attributes
Was this page helpful?