cURL
curl --request GET \
--url https://api.cakto.com.br/public_api/refunds/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.cakto.com.br/public_api/refunds/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.cakto.com.br/public_api/refunds/', 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/refunds/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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/refunds/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyHttpResponse<String> response = Unirest.get("https://api.cakto.com.br/public_api/refunds/")
.header("Authorization", "Bearer <token>")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.cakto.com.br/public_api/refunds/");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
{
"count": 123,
"next": "http://api.example.org/accounts/?page=4",
"previous": "http://api.example.org/accounts/?page=2",
"results": [
{
"id": "5f2a1c3e-8b7d-4e21-9f10-3c6d7a2b9e41",
"refId": "Q7W2k9P",
"status": "refund_requested",
"amount": "197.00",
"currency": "BRL",
"paymentMethod": "pix",
"offerType": "main",
"parentOrderId": null,
"reason": "Comprei por engano",
"refundedBy": "customer",
"paidAt": "2026-09-26T10:14:03.201544-03:00",
"requestedAt": "2026-09-28T09:41:22.873610-03:00",
"autoApproveAt": "2026-09-29T09:41:22.873610-03:00",
"settlementStartedAt": null,
"refundedAt": null,
"customer": {
"id": 183921,
"name": "Maria Souza",
"email": "maria.souza@example.com",
"birthDate": null,
"phone": "11999999999",
"docType": "cpf",
"docNumber": "12345678909"
},
"product": {
"id": "ff3fdf61-e88f-43b5-982a-32d50f112414",
"short_id": "AckhQ75",
"name": "Curso de Exemplo"
},
"offer": {
"id": "B8BcHrY",
"name": "Oferta principal"
}
}
]
}{
"status": [
"Faça uma escolha válida. paid não é uma das escolhas disponíveis."
]
}{
"detail": "As credenciais de autenticação não foram fornecidas."
}Reembolsos
Listar Reembolsos
Reembolsos dos seus produtos: os pedidos pelo comprador e os já devolvidos.
GET
/
public_api
/
refunds
/
cURL
curl --request GET \
--url https://api.cakto.com.br/public_api/refunds/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.cakto.com.br/public_api/refunds/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.cakto.com.br/public_api/refunds/', 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/refunds/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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/refunds/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyHttpResponse<String> response = Unirest.get("https://api.cakto.com.br/public_api/refunds/")
.header("Authorization", "Bearer <token>")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.cakto.com.br/public_api/refunds/");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
{
"count": 123,
"next": "http://api.example.org/accounts/?page=4",
"previous": "http://api.example.org/accounts/?page=2",
"results": [
{
"id": "5f2a1c3e-8b7d-4e21-9f10-3c6d7a2b9e41",
"refId": "Q7W2k9P",
"status": "refund_requested",
"amount": "197.00",
"currency": "BRL",
"paymentMethod": "pix",
"offerType": "main",
"parentOrderId": null,
"reason": "Comprei por engano",
"refundedBy": "customer",
"paidAt": "2026-09-26T10:14:03.201544-03:00",
"requestedAt": "2026-09-28T09:41:22.873610-03:00",
"autoApproveAt": "2026-09-29T09:41:22.873610-03:00",
"settlementStartedAt": null,
"refundedAt": null,
"customer": {
"id": 183921,
"name": "Maria Souza",
"email": "maria.souza@example.com",
"birthDate": null,
"phone": "11999999999",
"docType": "cpf",
"docNumber": "12345678909"
},
"product": {
"id": "ff3fdf61-e88f-43b5-982a-32d50f112414",
"short_id": "AckhQ75",
"name": "Curso de Exemplo"
},
"offer": {
"id": "B8BcHrY",
"name": "Oferta principal"
}
}
]
}{
"status": [
"Faça uma escolha válida. paid não é uma das escolhas disponíveis."
]
}{
"detail": "As credenciais de autenticação não foram fornecidas."
}Escopo
read orders
Como funciona o reembolso pedido pelo comprador
Quando o comprador pede reembolso, a venda virarefund_requested, o valor fica retido no seu
saldo e abre-se uma janela que termina em autoApproveAt:
- o comprador pode desistir até lá, e a venda volta a
paid; - você pode aprovar antes, com Aprovar Reembolso;
- se ninguém agir, o reembolso é efetivado automaticamente em
autoApproveAt.
customer.
Para saber na hora que um reembolso foi pedido, sem consultar esta lista de tempos em tempos,
assine o evento de webhook
refund_requested. Ver Guia de Webhooks.Estados
status | O que significa |
|---|---|
refund_requested | pedido pelo comprador, janela aberta até autoApproveAt |
in_settlement | aprovado, por você ou pelo prazo. O estorno foi enviado e a adquirente ainda não confirmou a devolução |
acquirer_error | a adquirente recusou o estorno. Não se resolve pela API: fale com o suporte informando o id |
refunded | devolvido ao comprador. refundedAt traz quando |
id de cada reembolso é o id do pedido. Reembolso feito direto pelo painel, sem pedido do
comprador, também aparece aqui, com requestedAt nulo.
O estorno é da cobrança inteira. Numa compra com order bump, os pedidos da mesma cobrança
são reembolsados juntos, e cada um aparece nesta lista com o seu
id. parentOrderId liga o
order bump ao pedido principal.Filtros
| Parâmetro | |
|---|---|
status | refund_requested, in_settlement, acquirer_error ou refunded |
requestedAt__gte / requestedAt__lte | janela pela data do pedido de reembolso (YYYY-MM-DD), inclusive nos dois lados |
product | id do produto |
page / limit | paginação, como em toda listagem do contrato. Default 10 por página, máximo 500 |
count, next,
previous e results, do pedido de reembolso mais recente para o mais antigo.
A listagem traz só pedidos de produto da conta dona do token, que é quem pode aprovar.
Exemplo
import requests
resposta = requests.get(
"https://api.cakto.com.br/public_api/refunds/",
params={"status": "refund_requested", "limit": 50},
headers={"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsIn..."},
timeout=30,
)
resposta.raise_for_status()
for reembolso in resposta.json()["results"]:
cliente = reembolso["customer"]
print(reembolso["autoApproveAt"], cliente["name"], cliente["phone"])
const params = new URLSearchParams({ status: "refund_requested", limit: "50" });
const resposta = await fetch(`https://api.cakto.com.br/public_api/refunds/?${params}`, {
headers: { Authorization: "Bearer eyJhbGciOiJIUzI1NiIsIn..." },
});
if (!resposta.ok) throw new Error(`Cakto API error ${resposta.status}`);
const pagina = await resposta.json();
for (const reembolso of pagina.results) {
console.log(reembolso.autoApproveAt, reembolso.customer.name, reembolso.customer.phone);
}
Authorizations
Token de autenticação do tipo Bearer {access_token}, onde {access_token} é o token obtido no fluxo de autenticação.
Query Parameters
Itens por página. Default 10, máximo 500.
Página a retornar. Default 1.
Id do produto.
Pedidos de reembolso a partir desta data (YYYY-MM-DD), inclusive.
Pedidos de reembolso até esta data (YYYY-MM-DD), inclusive.
Filtra por estado. refund_requested é a fila do que ainda pode ser aprovado.
Available options:
acquirer_error, in_settlement, refund_requested, refunded Response
Reembolsos dos seus produtos, do pedido de reembolso mais recente para o mais antigo.
Was this page helpful?