curl --request POST \
--url https://api.pruff.com/api/clients/financing/creditRequest/simulation \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"firstPaymentDate": "2026-12-15T00:00:00.000Z",
"workingDayActive": true,
"operationDate": "2026-11-15T00:00:00.000Z",
"totalMonths": 3,
"amount": 1000000,
"rate": 1.5,
"operationCost": 0,
"otherExpenses": 0,
"operationIVA": 0,
"otherExpensesIVA": 0,
"taxes": 0,
"notary": 0
}
'import requests
url = "https://api.pruff.com/api/clients/financing/creditRequest/simulation"
payload = {
"firstPaymentDate": "2026-12-15T00:00:00.000Z",
"workingDayActive": True,
"operationDate": "2026-11-15T00:00:00.000Z",
"totalMonths": 3,
"amount": 1000000,
"rate": 1.5,
"operationCost": 0,
"otherExpenses": 0,
"operationIVA": 0,
"otherExpensesIVA": 0,
"taxes": 0,
"notary": 0
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
firstPaymentDate: '2026-12-15T00:00:00.000Z',
workingDayActive: true,
operationDate: '2026-11-15T00:00:00.000Z',
totalMonths: 3,
amount: 1000000,
rate: 1.5,
operationCost: 0,
otherExpenses: 0,
operationIVA: 0,
otherExpensesIVA: 0,
taxes: 0,
notary: 0
})
};
fetch('https://api.pruff.com/api/clients/financing/creditRequest/simulation', 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/financing/creditRequest/simulation",
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([
'firstPaymentDate' => '2026-12-15T00:00:00.000Z',
'workingDayActive' => true,
'operationDate' => '2026-11-15T00:00:00.000Z',
'totalMonths' => 3,
'amount' => 1000000,
'rate' => 1.5,
'operationCost' => 0,
'otherExpenses' => 0,
'operationIVA' => 0,
'otherExpensesIVA' => 0,
'taxes' => 0,
'notary' => 0
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.pruff.com/api/clients/financing/creditRequest/simulation"
payload := strings.NewReader("{\n \"firstPaymentDate\": \"2026-12-15T00:00:00.000Z\",\n \"workingDayActive\": true,\n \"operationDate\": \"2026-11-15T00:00:00.000Z\",\n \"totalMonths\": 3,\n \"amount\": 1000000,\n \"rate\": 1.5,\n \"operationCost\": 0,\n \"otherExpenses\": 0,\n \"operationIVA\": 0,\n \"otherExpensesIVA\": 0,\n \"taxes\": 0,\n \"notary\": 0\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.pruff.com/api/clients/financing/creditRequest/simulation")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"firstPaymentDate\": \"2026-12-15T00:00:00.000Z\",\n \"workingDayActive\": true,\n \"operationDate\": \"2026-11-15T00:00:00.000Z\",\n \"totalMonths\": 3,\n \"amount\": 1000000,\n \"rate\": 1.5,\n \"operationCost\": 0,\n \"otherExpenses\": 0,\n \"operationIVA\": 0,\n \"otherExpensesIVA\": 0,\n \"taxes\": 0,\n \"notary\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pruff.com/api/clients/financing/creditRequest/simulation")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"firstPaymentDate\": \"2026-12-15T00:00:00.000Z\",\n \"workingDayActive\": true,\n \"operationDate\": \"2026-11-15T00:00:00.000Z\",\n \"totalMonths\": 3,\n \"amount\": 1000000,\n \"rate\": 1.5,\n \"operationCost\": 0,\n \"otherExpenses\": 0,\n \"operationIVA\": 0,\n \"otherExpensesIVA\": 0,\n \"taxes\": 0,\n \"notary\": 0\n}"
response = http.request(request)
puts response.read_body{
"summary": {
"cae": 18,
"totalPayments": 3,
"paymentDay": 15,
"totalCost": 1030655.09832,
"totalLoanAmount": 1000000,
"firstPayment": "2026-12-15T12:00:00.000Z",
"lastPayment": "2027-02-15T12:00:00.000Z",
"monthlyInterestRate": 1.5,
"annualInterestRate": 18,
"operationalExpenses": 0,
"otherExpenses": 0,
"taxes": 0,
"notary": 0
},
"amortizationSchedule": [
{
"month": 1,
"paymentDate": "2026-12-15T12:00:00.000Z",
"amount": 343551.69944,
"interest": 15000,
"principal": 328551.69944,
"balance": 671448.30056,
"operationCost": 0,
"otherExpenses": 0,
"totalAmortization": 328551.69944
},
{
"month": 2,
"paymentDate": "2027-01-15T12:00:00.000Z",
"amount": 343551.69944,
"interest": 10410.03804,
"principal": 333141.6614,
"balance": 338306.63916,
"operationCost": 0,
"otherExpenses": 0,
"totalAmortization": 661693.36084
},
{
"month": 3,
"paymentDate": "2027-02-15T12:00:00.000Z",
"amount": 343551.69944,
"interest": 5245.05756,
"principal": 338306.64188,
"balance": 0,
"operationCost": 0,
"otherExpenses": 0,
"totalAmortization": 1000000.00272
}
]
}Simular crédito
Calcula la tabla de amortización de un crédito con cuotas mensuales y un resumen con el costo total y el CAE (carga anual equivalente). Es un cálculo puro: no crea ni modifica ninguna solicitud en tu cuenta.
Las cuotas se calculan con interés compuesto sobre saldo, con la tasa mensual que envías en rate. Para una operationDate desde el 2026-10-23 la tasa se capitaliza mensualmente ((1+rate/100)^(días/30)-1); para fechas anteriores se usa la tasa nominal anual rate×12 prorrateada por días/365. Los gastos (operationCost, otherExpenses), sus IVA, taxes y notary se suman al capital financiado. La primera cuota vence en firstPaymentDate, que debe ser posterior a operationDate y a lo más 365 días después; las siguientes vencen el mismo día de cada mes. Con workingDayActive en true cada vencimiento se mueve al siguiente día hábil. totalMonths va de 1 a 180 cuotas.
Usa un firstPaymentDate entre el 1 y el 28 que sea día hábil.
Las fechas de vencimiento de la respuesta siempre vienen a las 12:00 UTC; usa solo la fecha.
Envía todos los campos del body, con 0 en los montos que no apliquen. El campo interestType no es necesario: el cálculo siempre usa interés compuesto.
curl --request POST \
--url https://api.pruff.com/api/clients/financing/creditRequest/simulation \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"firstPaymentDate": "2026-12-15T00:00:00.000Z",
"workingDayActive": true,
"operationDate": "2026-11-15T00:00:00.000Z",
"totalMonths": 3,
"amount": 1000000,
"rate": 1.5,
"operationCost": 0,
"otherExpenses": 0,
"operationIVA": 0,
"otherExpensesIVA": 0,
"taxes": 0,
"notary": 0
}
'import requests
url = "https://api.pruff.com/api/clients/financing/creditRequest/simulation"
payload = {
"firstPaymentDate": "2026-12-15T00:00:00.000Z",
"workingDayActive": True,
"operationDate": "2026-11-15T00:00:00.000Z",
"totalMonths": 3,
"amount": 1000000,
"rate": 1.5,
"operationCost": 0,
"otherExpenses": 0,
"operationIVA": 0,
"otherExpensesIVA": 0,
"taxes": 0,
"notary": 0
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
firstPaymentDate: '2026-12-15T00:00:00.000Z',
workingDayActive: true,
operationDate: '2026-11-15T00:00:00.000Z',
totalMonths: 3,
amount: 1000000,
rate: 1.5,
operationCost: 0,
otherExpenses: 0,
operationIVA: 0,
otherExpensesIVA: 0,
taxes: 0,
notary: 0
})
};
fetch('https://api.pruff.com/api/clients/financing/creditRequest/simulation', 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/financing/creditRequest/simulation",
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([
'firstPaymentDate' => '2026-12-15T00:00:00.000Z',
'workingDayActive' => true,
'operationDate' => '2026-11-15T00:00:00.000Z',
'totalMonths' => 3,
'amount' => 1000000,
'rate' => 1.5,
'operationCost' => 0,
'otherExpenses' => 0,
'operationIVA' => 0,
'otherExpensesIVA' => 0,
'taxes' => 0,
'notary' => 0
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.pruff.com/api/clients/financing/creditRequest/simulation"
payload := strings.NewReader("{\n \"firstPaymentDate\": \"2026-12-15T00:00:00.000Z\",\n \"workingDayActive\": true,\n \"operationDate\": \"2026-11-15T00:00:00.000Z\",\n \"totalMonths\": 3,\n \"amount\": 1000000,\n \"rate\": 1.5,\n \"operationCost\": 0,\n \"otherExpenses\": 0,\n \"operationIVA\": 0,\n \"otherExpensesIVA\": 0,\n \"taxes\": 0,\n \"notary\": 0\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.pruff.com/api/clients/financing/creditRequest/simulation")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"firstPaymentDate\": \"2026-12-15T00:00:00.000Z\",\n \"workingDayActive\": true,\n \"operationDate\": \"2026-11-15T00:00:00.000Z\",\n \"totalMonths\": 3,\n \"amount\": 1000000,\n \"rate\": 1.5,\n \"operationCost\": 0,\n \"otherExpenses\": 0,\n \"operationIVA\": 0,\n \"otherExpensesIVA\": 0,\n \"taxes\": 0,\n \"notary\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pruff.com/api/clients/financing/creditRequest/simulation")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"firstPaymentDate\": \"2026-12-15T00:00:00.000Z\",\n \"workingDayActive\": true,\n \"operationDate\": \"2026-11-15T00:00:00.000Z\",\n \"totalMonths\": 3,\n \"amount\": 1000000,\n \"rate\": 1.5,\n \"operationCost\": 0,\n \"otherExpenses\": 0,\n \"operationIVA\": 0,\n \"otherExpensesIVA\": 0,\n \"taxes\": 0,\n \"notary\": 0\n}"
response = http.request(request)
puts response.read_body{
"summary": {
"cae": 18,
"totalPayments": 3,
"paymentDay": 15,
"totalCost": 1030655.09832,
"totalLoanAmount": 1000000,
"firstPayment": "2026-12-15T12:00:00.000Z",
"lastPayment": "2027-02-15T12:00:00.000Z",
"monthlyInterestRate": 1.5,
"annualInterestRate": 18,
"operationalExpenses": 0,
"otherExpenses": 0,
"taxes": 0,
"notary": 0
},
"amortizationSchedule": [
{
"month": 1,
"paymentDate": "2026-12-15T12:00:00.000Z",
"amount": 343551.69944,
"interest": 15000,
"principal": 328551.69944,
"balance": 671448.30056,
"operationCost": 0,
"otherExpenses": 0,
"totalAmortization": 328551.69944
},
{
"month": 2,
"paymentDate": "2027-01-15T12:00:00.000Z",
"amount": 343551.69944,
"interest": 10410.03804,
"principal": 333141.6614,
"balance": 338306.63916,
"operationCost": 0,
"otherExpenses": 0,
"totalAmortization": 661693.36084
},
{
"month": 3,
"paymentDate": "2027-02-15T12:00:00.000Z",
"amount": 343551.69944,
"interest": 5245.05756,
"principal": 338306.64188,
"balance": 0,
"operationCost": 0,
"otherExpenses": 0,
"totalAmortization": 1000000.00272
}
]
}Cuerpo
Fecha de vencimiento de la primera cuota, en formato ISO 8601 (YYYY-MM-DD, o fecha y hora con Z u offset). Se compara por día calendario en UTC, así que debe caer en un día posterior al de operationDate y a lo más 365 días después. Las demás cuotas vencen el mismo día de cada mes siguiente; usa un día entre el 1 y el 28 que sea hábil para que no se salte ningún mes.
"2026-12-15T00:00:00.000Z"
Fecha en que se entrega el crédito, en formato ISO 8601 (YYYY-MM-DD, o fecha y hora con Z u offset). Desde esta fecha corren los intereses de la primera cuota. Desde el 2026-10-23 la tasa se capitaliza mensualmente ((1+rate/100)^(días/30)-1); para fechas anteriores se usa la tasa nominal anual rate×12 prorrateada por días/365.
"2026-11-15T00:00:00.000Z"