curl --request GET \
--url https://api.pruff.com/api/clients/reporting/cashFlows \
--header 'x-api-key: <api-key>'import requests
url = "https://api.pruff.com/api/clients/reporting/cashFlows"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.pruff.com/api/clients/reporting/cashFlows', 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.pruff.com/api/clients/reporting/cashFlows",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.pruff.com/api/clients/reporting/cashFlows"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.pruff.com/api/clients/reporting/cashFlows")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pruff.com/api/clients/reporting/cashFlows")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"date": "2026-07-01",
"totalPlaced": 25000000,
"totalPlacedNet": 21008403,
"totalWallet": 480000000,
"totalWalletNet": 403361345,
"totalRealWallet": 452300000,
"totalRealWalletNet": 380084034,
"totalConciliated": 18500000,
"totalPriceIncome": 182340,
"totalArrearIncome": 12500,
"totalComissionIncome": 45000,
"totalExpensesIncome": 15000,
"totalDocumentExtensionPriceIncome": 0,
"totalDocumentExtensionCommissionIncome": 0,
"totalDocumentOtherIncome": 0,
"totalIncome": 254840,
"accumulatedIncome": 254840,
"totalDocumentResellExpense": 61200,
"totalDiscountExpense": 0,
"totalWriteOffExpense": 0
},
{
"date": "2026-07-02",
"totalPlaced": 0,
"totalPlacedNet": 0,
"totalWallet": 461500000,
"totalWalletNet": 387815126,
"totalRealWallet": 440100000,
"totalRealWalletNet": 369831933,
"totalConciliated": 12200000,
"totalPriceIncome": 185110,
"totalArrearIncome": 9800,
"totalComissionIncome": 0,
"totalExpensesIncome": 0,
"totalDocumentExtensionPriceIncome": 12000,
"totalDocumentExtensionCommissionIncome": 5000,
"totalDocumentOtherIncome": 0,
"totalIncome": 211910,
"accumulatedIncome": 466750,
"totalDocumentResellExpense": 60950,
"totalDiscountExpense": 15000,
"totalWriteOffExpense": 0
}
]
}Obtener flujos
Devuelve los totales diarios de los flujos (libro de ingresos) en un rango de fechas: colocación, cartera, recaudación, ingresos por tipo y costos. Retorna una entrada por cada día del rango, sin el detalle por documento. El servicio no está paginado.
Rango. startDate y endDate son obligatorios, el rango máximo es de 92 días contando ambos extremos (cubre cualquier trimestre calendario completo) y endDate debe ser igual o posterior a startDate. Cualquier parámetro que no esté documentado aquí responde un error 400.
Criterio contable. Flujos es un reflejo de la contabilidad: cada monto se informa en la fecha en que se reconoce contablemente, que no necesariamente coincide con la fecha operativa del ingreso, costo o colocación correspondiente.
Reversos. Según la configuración de tu empresa, los reversos de movimientos que afectan a Flujos (por ejemplo, una conciliación reversada) se registran como montos negativos en la fecha del reverso, y el movimiento original se mantiene en su propia fecha. Por eso un día con un reverso grande puede traer saldos negativos en totalConciliated, en los ingresos y costos asociados, y en totalIncome y accumulatedIncome. Si el reverso ocurre el mismo día de la conciliación, no aparece ni el movimiento ni el reverso.
Días sin movimientos. Los días sin ingresos, costos ni documentos en cartera vienen con todos los montos en 0, salvo accumulatedIncome, que mantiene el acumulado del día anterior. Un día con documentos en cartera pero sin otros movimientos sigue informando los saldos de cartera (totalWallet, totalRealWallet y sus montos netos).
Montos. Los montos se suman sin convertir moneda: los documentos en USD o UF se suman con su monto nominal en esa moneda junto a los de CLP. No están redondeados; pueden traer decimales.
Límite de consultas. Este endpoint admite 1 consulta cada 10 minutos por empresa: todas las API keys de tu empresa comparten ese cupo. La ventana empieza con la primera consulta aceptada y, mientras no termine, el servicio responde un error 429 con los segundos de espera en data.retryAfterSeconds y en el header Retry-After. Las consultas con parámetros inválidos responden un error 400 y no consumen el cupo. Si la consulta falla con un error 500 o 504, el cupo se devuelve y puedes reintentar de inmediato. Cualquier otro error de la consulta, como un 502, sí consume el cupo: espera a que termine la ventana antes de reintentar.
curl --request GET \
--url https://api.pruff.com/api/clients/reporting/cashFlows \
--header 'x-api-key: <api-key>'import requests
url = "https://api.pruff.com/api/clients/reporting/cashFlows"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.pruff.com/api/clients/reporting/cashFlows', 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.pruff.com/api/clients/reporting/cashFlows",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.pruff.com/api/clients/reporting/cashFlows"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.pruff.com/api/clients/reporting/cashFlows")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pruff.com/api/clients/reporting/cashFlows")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"date": "2026-07-01",
"totalPlaced": 25000000,
"totalPlacedNet": 21008403,
"totalWallet": 480000000,
"totalWalletNet": 403361345,
"totalRealWallet": 452300000,
"totalRealWalletNet": 380084034,
"totalConciliated": 18500000,
"totalPriceIncome": 182340,
"totalArrearIncome": 12500,
"totalComissionIncome": 45000,
"totalExpensesIncome": 15000,
"totalDocumentExtensionPriceIncome": 0,
"totalDocumentExtensionCommissionIncome": 0,
"totalDocumentOtherIncome": 0,
"totalIncome": 254840,
"accumulatedIncome": 254840,
"totalDocumentResellExpense": 61200,
"totalDiscountExpense": 0,
"totalWriteOffExpense": 0
},
{
"date": "2026-07-02",
"totalPlaced": 0,
"totalPlacedNet": 0,
"totalWallet": 461500000,
"totalWalletNet": 387815126,
"totalRealWallet": 440100000,
"totalRealWalletNet": 369831933,
"totalConciliated": 12200000,
"totalPriceIncome": 185110,
"totalArrearIncome": 9800,
"totalComissionIncome": 0,
"totalExpensesIncome": 0,
"totalDocumentExtensionPriceIncome": 12000,
"totalDocumentExtensionCommissionIncome": 5000,
"totalDocumentOtherIncome": 0,
"totalIncome": 211910,
"accumulatedIncome": 466750,
"totalDocumentResellExpense": 60950,
"totalDiscountExpense": 15000,
"totalWriteOffExpense": 0
}
]
}