curl --request GET \
--url https://api.cakto.com.br/public_api/balance/schedule/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.cakto.com.br/public_api/balance/schedule/"
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/balance/schedule/', 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/balance/schedule/",
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/balance/schedule/")
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/balance/schedule/")
.header("Authorization", "Bearer <token>")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.cakto.com.br/public_api/balance/schedule/");
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);
Agenda de Recebimentos
Veja quanto libera em cada dia. É a mesma apuração da tela Agenda Financeira do painel.
curl --request GET \
--url https://api.cakto.com.br/public_api/balance/schedule/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.cakto.com.br/public_api/balance/schedule/"
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/balance/schedule/', 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/balance/schedule/",
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/balance/schedule/")
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/balance/schedule/")
.header("Authorization", "Bearer <token>")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.cakto.com.br/public_api/balance/schedule/");
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);
Escopo
read payments
O que é este endpoint?
É a versão consultável por API da tela Agenda Financeira do painel: uma entrada por dia em que há dinheiro previsto para liberar, com o total daquele dia separado em pendente, reserva e retido. Sem parâmetros, a resposta traz os próximos 30 dias — a mesma janela que o painel abre ao carregar o calendário.O filtro é pela data de liberação, não pela data da venda
releaseDate__gte e releaseDate__lte recortam quando o dinheiro cai, não quando a venda aconteceu. É a pergunta que a agenda responde, e a confusão aqui é silenciosa: a resposta vem correta, só que de outra pergunta.
| Você quer saber | Use |
|---|---|
| quanto cai em outubro | esta operação, com a janela de outubro |
| o que vendi em outubro | Listar Pedidos |
| quando cai um pedido | releaseDate em Obter Pedido |
Como ler cada dia
totalToReceiveépending+pendingReserve: o que efetivamente cai naquele dia.heldByRefundvenceria no dia, mas está retido por pedido de reembolso e não entra emtotalToReceive. Se o reembolso for negado, o valor volta para uma data futura — não para esta.- Dias sem valor não aparecem. A lista é esparsa: para montar um calendário, preencha os buracos com zero em vez de assumir uma entrada por dia.
pendingjá desconta o que foi antecipado. A parcela antecipada virou saque e não libera de novo.
Exemplo
import requests
from decimal import Decimal
response = requests.get(
"https://api.cakto.com.br/public_api/balance/schedule/",
params={"releaseDate__gte": "2026-10-01", "releaseDate__lte": "2026-10-31"},
headers={"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsIn..."},
timeout=30,
)
response.raise_for_status()
agenda = response.json()
total = sum(Decimal(dia["totalToReceive"]) for dia in agenda)
print(f"Previsto para outubro: R$ {total}")
for dia in agenda[:5]:
print(f"{dia['date']}: R$ {dia['totalToReceive']}")
const params = new URLSearchParams({
releaseDate__gte: "2026-10-01",
releaseDate__lte: "2026-10-31",
});
const response = await fetch(
`https://api.cakto.com.br/public_api/balance/schedule/?${params}`,
{ headers: { Authorization: "Bearer eyJhbGciOiJIUzI1NiIsIn..." } },
);
if (!response.ok) throw new Error(`Cakto API error ${response.status}`);
const agenda = await response.json();
agenda.forEach((dia) => console.log(`${dia.date}: R$ ${dia.totalToReceive}`));
Boas práticas
- Peça a janela que você vai usar. Pedir 365 dias para exibir um mês gasta limite de requisição e traz previsão que ainda vai mudar.
- Reconsulte antes de decidir. Para conciliação, consulte o dia depois que ele passou: até lá o valor é estimativa.
- Some com
Decimal, não comfloat. Os valores vêm como string decimal pelo mesmo motivo do Saldo.
Authorizations
Token de autenticação do tipo Bearer {access_token}, onde {access_token} é o token obtido no fluxo de autenticação.
Query Parameters
Moeda dos valores. Default BRL.
BRL, USD Início da janela, pela data de liberação (YYYY-MM-DD). Não é a data da venda: para recortar vendas por criação use orders/. Obrigatório junto de releaseDate__lte; omitindo os dois, a resposta traz os próximos 30 dias.
Fim da janela, inclusive (o dia inteiro entra). A janela não pode passar de 365 dias.
Response
Uma entrada por dia com valor previsto, em ordem crescente de data. Dia sem previsão não aparece na lista.
Dia da liberação (YYYY-MM-DD). Só aparecem dias com valor previsto.
Moeda dos valores desta entrada.
Previsto para liberar neste dia, fora reserva. Já desconta o que foi antecipado: a parcela antecipada virou saque e não libera de novo.
"2.49"
Reserva de segurança que sai da retenção neste dia.
"2.49"
Valor que venceria neste dia mas está retido por pedido de reembolso, e por isso não entra em pending nem em totalToReceive.
"2.49"
pending + pendingReserve: o que efetivamente cai no dia.
"2.49"
Was this page helpful?