Exemplo: Parcelas Crescentes (Step-Up)
Este guia demonstra como criar um produto com parcelas crescentes (STEP_UP), ideal para clientes que esperam aumento de renda ao longo do tempo.
Visão Geral
O método STEP_UP ajusta as parcelas periodicamente para cima, permitindo que o cliente comece pagando menos e aumente o valor conforme sua renda cresce.
| Característica | Descrição |
|---|---|
| Tipo de Produto | Qualquer (PERSONAL_LOAN, PAYROLL_LOAN, etc.) |
| Método de Amortização | STEP_UP |
| Diferencial | Parcelas aumentam periodicamente |
| Ideal para | Jovens profissionais, carreiras em ascensão |
Como Funciona
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Ano 1 │ │ Ano 2 │ │ Ano 3 │
│ R$ 800 │──▶│ R$ 840 │──▶│ R$ 882 │
│ (base) │ │ (+5%) │ │ (+5%) │
└─────────────┘ └─────────────┘ └─────────────┘
Exemplo: Com stepPercentage: 0.05 e stepInterval: 12:
- Meses 1-12: Parcela base
- Meses 13-24: Parcela base × 1.05 (+5%)
- Meses 25-36: Parcela base × 1.1025 (+10.25%)
Passo 1: Criar Produto com Parcelas Crescentes
- cURL
- JavaScript
curl -X POST 'https://products.stg.catalisa.app/api/v1/products' \
-H 'Authorization: Bearer SEU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"data": {
"type": "products",
"attributes": {
"name": "Crédito Carreira Ascendente",
"productType": "PERSONAL_LOAN",
"description": "Empréstimo com parcelas que crescem junto com sua carreira. Ideal para jovens profissionais.",
"active": true,
"minAmount": { "amount": 5000, "currency": "BRL" },
"maxAmount": { "amount": 150000, "currency": "BRL" },
"minInterestRate": 0.0179,
"maxInterestRate": 0.0349,
"minInstallments": 24,
"maxInstallments": 60,
"amortizationMethod": "STEP_UP",
"amortizationConfig": {
"type": "STEP_UP",
"config": {
"stepPercentage": 0.05,
"stepInterval": 12
}
},
"registrationTariffRate": 0.02,
"insuranceRate": 0.004,
"iofAdditionalRate": 0.0038,
"iofDailyRate": 0.000082,
"metadata": {
"segmento": "jovens_profissionais",
"faixa_etaria": "22-35",
"perfil": "carreira_ascendente"
}
}
}
}'
const productResponse = await fetch('https://products.stg.catalisa.app/api/v1/products', {
method: 'POST',
headers: {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
data: {
type: 'products',
attributes: {
name: 'Crédito Carreira Ascendente',
productType: 'PERSONAL_LOAN',
description: 'Empréstimo com parcelas que crescem junto com sua carreira.',
active: true,
minAmount: { amount: 5000, currency: 'BRL' },
maxAmount: { amount: 150000, currency: 'BRL' },
minInterestRate: 0.0179,
maxInterestRate: 0.0349,
minInstallments: 24,
maxInstallments: 60,
amortizationMethod: 'STEP_UP',
amortizationConfig: {
type: 'STEP_UP',
config: {
stepPercentage: 0.05,
stepInterval: 12,
},
},
registrationTariffRate: 0.02,
insuranceRate: 0.004,
iofAdditionalRate: 0.0038,
iofDailyRate: 0.000082,
metadata: {
segmento: 'jovens_profissionais',
perfil: 'carreira_ascendente',
},
},
},
}),
});
const product = await productResponse.json();
Response (201 Created)
{
"data": {
"type": "products",
"id": "d4e5f6a7-b8c9-40d1-e2f3-a4b5c6d7e8f9",
"attributes": {
"name": "Crédito Carreira Ascendente",
"productType": "PERSONAL_LOAN",
"active": true,
"minAmount": { "amount": 5000, "currency": "BRL" },
"maxAmount": { "amount": 150000, "currency": "BRL" },
"minInterestRate": 0.0179,
"maxInterestRate": 0.0349,
"minInstallments": 24,
"maxInstallments": 60,
"amortizationMethod": "STEP_UP",
"amortizationConfig": {
"type": "STEP_UP",
"config": {
"stepPercentage": 0.05,
"stepInterval": 12
}
},
"createdAt": "2026-01-26T18:00:00.000Z"
}
}
}
Passo 2: Gerar Cronograma de Amortização STEP_UP
Cenário: Empréstimo de R$ 50.000,00 a 2% a.m. em 36 meses com aumento de 5% a cada 12 meses.
- cURL
- JavaScript
curl -X POST 'https://calculations-engine.stg.catalisa.app/api/v1/calculations/loan-amortization-schedule-calculator/calculations' \
-H 'Authorization: Bearer SEU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"data": {
"type": "loan-amortization-schedule",
"attributes": {
"principal": 50000,
"interestRate": 0.02,
"numberOfPayments": 36,
"firstPaymentDate": "2026-03-01T00:00:00.000Z",
"method": "STEP_UP",
"stepConfig": {
"stepPercentage": 0.05,
"stepInterval": 12
}
}
}
}'
const amortResponse = await fetch(
'https://calculations-engine.stg.catalisa.app/api/v1/calculations/loan-amortization-schedule-calculator/calculations',
{
method: 'POST',
headers: {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
data: {
type: 'loan-amortization-schedule',
attributes: {
principal: 50000,
interestRate: 0.02,
numberOfPayments: 36,
firstPaymentDate: '2026-03-01T00:00:00.000Z',
method: 'STEP_UP',
stepConfig: {
stepPercentage: 0.05,
stepInterval: 12,
},
},
},
}),
}
);
const amortization = await amortResponse.json();
Response (resumido)
{
"data": {
"type": "loan-amortization-schedule",
"attributes": {
"totalAmount": 67842.15,
"totalInterest": 17842.15,
"amortizationSchedule": [
{
"paymentNumber": 1,
"paymentDate": "2026-03-01T00:00:00.000Z",
"beginningBalance": 50000.00,
"payment": 1654.28,
"principalPayment": 654.28,
"interestPayment": 1000.00,
"remainingBalance": 49345.72
},
{
"paymentNumber": 12,
"paymentDate": "2027-02-01T00:00:00.000Z",
"beginningBalance": 42891.45,
"payment": 1654.28,
"principalPayment": 796.45,
"interestPayment": 857.83,
"remainingBalance": 42095.00
},
{
"paymentNumber": 13,
"paymentDate": "2027-03-01T00:00:00.000Z",
"beginningBalance": 42095.00,
"payment": 1736.99,
"principalPayment": 895.09,
"interestPayment": 841.90,
"remainingBalance": 41199.91
},
{
"paymentNumber": 24,
"paymentDate": "2028-02-01T00:00:00.000Z",
"beginningBalance": 31478.23,
"payment": 1736.99,
"principalPayment": 1107.43,
"interestPayment": 629.56,
"remainingBalance": 30370.80
},
{
"paymentNumber": 25,
"paymentDate": "2028-03-01T00:00:00.000Z",
"beginningBalance": 30370.80,
"payment": 1823.84,
"principalPayment": 1216.42,
"interestPayment": 607.42,
"remainingBalance": 29154.38
},
{
"paymentNumber": 36,
"paymentDate": "2029-02-01T00:00:00.000Z",
"beginningBalance": 1787.45,
"payment": 1823.20,
"principalPayment": 1787.45,
"interestPayment": 35.75,
"remainingBalance": 0.00
}
]
}
}
}
Evolução das Parcelas
| Período | Parcela | Variação |
|---|---|---|
| Meses 1-12 (Ano 1) | R$ 1.654,28 | Base |
| Meses 13-24 (Ano 2) | R$ 1.736,99 | +5% |
| Meses 25-36 (Ano 3) | R$ 1.823,84 | +10,25% |
Compare com PRICE tradicional: parcela fixa de R$ 1.964,42. Com STEP_UP, você começa pagando R$ 310 a menos por mês!
Comparativo: STEP_UP vs PRICE
| Aspecto | STEP_UP (5%/ano) | PRICE |
|---|---|---|
| Parcela Ano 1 | R$ 1.654,28 | R$ 1.964,42 |
| Parcela Ano 2 | R$ 1.736,99 | R$ 1.964,42 |
| Parcela Ano 3 | R$ 1.823,84 | R$ 1.964,42 |
| Total Pago | R$ 67.842,15 | R$ 70.719,12 |
| Total de Juros | R$ 17.842,15 | R$ 20.719,12 |
O método STEP_UP pode gerar economia de juros porque as parcelas maiores no final aceleram a amortização do principal.
STEP_DOWN: Parcelas Decrescentes
Para clientes que preferem pagar mais no início (maior capacidade de pagamento agora), use STEP_DOWN:
- cURL
curl -X POST 'https://calculations-engine.stg.catalisa.app/api/v1/calculations/loan-amortization-schedule-calculator/calculations' \
-H 'Authorization: Bearer SEU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"data": {
"type": "loan-amortization-schedule",
"attributes": {
"principal": 50000,
"interestRate": 0.02,
"numberOfPayments": 36,
"firstPaymentDate": "2026-03-01T00:00:00.000Z",
"method": "STEP_DOWN",
"stepConfig": {
"stepPercentage": 0.05,
"stepInterval": 12
}
}
}
}'
Evolução STEP_DOWN
| Período | Parcela | Variação |
|---|---|---|
| Meses 1-12 (Ano 1) | R$ 2.187,50 | Base |
| Meses 13-24 (Ano 2) | R$ 2.078,13 | -5% |
| Meses 25-36 (Ano 3) | R$ 1.974,22 | -10,25% |
Configurações Flexíveis
Step Semestral (a cada 6 meses)
{
"stepConfig": {
"stepPercentage": 0.03,
"stepInterval": 6
}
}
Step Trimestral (a cada 3 meses)
{
"stepConfig": {
"stepPercentage": 0.02,
"stepInterval": 3
}
}
Step Agressivo (10% ao ano)
{
"stepConfig": {
"stepPercentage": 0.10,
"stepInterval": 12
}
}
Validações de Negócio
| Regra | Validação |
|---|---|
| Step percentage | Entre 0.01 (1%) e 0.50 (50%) |
| Step interval | Mínimo de 1 mês |
| Tipo de config | STEP_UP ou STEP_DOWN deve corresponder ao método |
Erros Comuns
| Código | Erro | Solução |
|---|---|---|
| 400 | "stepPercentage must be between 0.01 and 0.50" | Ajuste o percentual de step |
| 400 | "stepInterval must be at least 1" | Configure intervalo de pelo menos 1 mês |
| 400 | "STEP_UP method requires amortizationConfig" | Adicione stepConfig no request |
Casos de Uso
| Método | Perfil do Cliente | Cenário |
|---|---|---|
| STEP_UP | Jovem profissional | Início de carreira, expectativa de promoções |
| STEP_UP | Recém-formado | Primeiro emprego, salário deve crescer |
| STEP_DOWN | Pré-aposentadoria | Renda atual alta, vai diminuir no futuro |
| STEP_DOWN | Servidor público | Estabilidade, prefere pagar mais agora |
Próximos Passos
- Use Decision Engine para validar perfil de carreira do cliente
- Configure Risk Bands para taxas baseadas em score
- Integre com Webhooks para lembretes de ajuste de parcela