Skip to main content

Simulate price range

Returns the sellable price range of a selection — the lowest and highest possible final price for each product, varying only the commission within your band (commission_bounds). Use it to build offers with a custom price: the value sent in commission_data with commission_type: total_gross_premium_amount in the order must be within this range.

Like the quote, the simulation is a calculator: nothing is persisted.

Request

ENDPOINT
/v1/insurance/simulate
METHOD
POST

The request uses the same products[] list as the quotewithout commission_data: the simulation sweeps the entire commission band, so sending a commission is a 400.

Request Body
{
"products": [
{
"product_key": "9d1f8c7a-3b21-4e60-8a2f-1c5d7e9b0a44",
"term": {
"start_date": "2026-07-16",
"end_date": "2028-07-15"
},
"services": [
{
"service_key": "0a3c5e7f-2b4d-4a6c-8e0f-1a3b5c7d9e2f",
"insured_amount_basis": "monetary_amount",
"insured_amount": 50000.00
}
],
"risk_object": {
"type": "credit_operation",
"insurable_value": 50000.00,
"attributes": {
"installment_amount": 1050.00,
"number_of_installments": 48
}
}
}
],
"customer": {
"date_of_birth": "1987-03-22",
"occupation_code": "211205"
}
}

Response

STATUS
200
Response Body
{
"total_order_floor_amount": 583.10,
"total_order_ceiling_amount": 686.42,
"products": [
{
"product_key": "9d1f8c7a-3b21-4e60-8a2f-1c5d7e9b0a44",
"result": "priced",
"name": "Prestamista Master",
"provider_name": "QI Seguradora",
"product_category": "insurance",
"insurance_class": {
"name": "credit_life",
"class_number": "0977",
"group_number": "09"
},
"contract_instrument_type": "ticket",
"regulator_registration": "15414.900388/2015-21",
"term": {
"start_date": "2026-07-16",
"end_date": "2028-07-15"
},
"price_range": {
"floor_gross_premium_amount": 583.10,
"ceiling_gross_premium_amount": 686.42,
"floor_requester_amount": 29.16,
"ceiling_requester_amount": 137.28,
"minimum_requester_rate": 0.0500,
"maximum_requester_rate": 0.2000
},
"services": [
{
"service_key": "0a3c5e7f-2b4d-4a6c-8e0f-1a3b5c7d9e2f",
"service_type": {
"code": "credit_life",
"name": "Prestamista (Credit Life)"
},
"service_category": "insurance",
"regulator_registration": null,
"insured_amount": 50000.00,
"unit_amount": null,
"unit_count": null,
"deductible_data": {
"deductible_type": "monetary_amount",
"value": 1500.00
},
"waiting_period_days": 30,
"service_attributes": {}
}
]
}
],
"eligibility": "eligible"
}

Response attributes

FieldTypeDescription
total_order_floor_amountnumberLowest possible total amount of the order (every commission at the minimum rate).
total_order_ceiling_amountnumberHighest possible total amount of the order (every commission at the maximum rate).
productsarrayOne line per requested product, in request order. Rejected lines are byte-identical to the quote'sproduct_key, result: "rejected" and decline_reasons — because they were refused for the same reason, at the same stage.
eligibilitystringEligibility verdict of the simulation: eligible, declined or not_evaluated.

Object in products (priced line)

A simulated line is the quote's line with every premium field replaced by one range: same identity, same classification, same echoed term, same realized coverages — only the money differs. It carries product_key, result, name, provider_name, product_category, insurance_class, contract_instrument_type, regulator_registration, term, price_range and services[].

services[] has exactly the quote's shape minus the coverage's gross_premium_amount: a per-coverage premium is a decomposition at precisely the grain a range deliberately declines to commit to. Everything else — the resolved insured amount, the per-unit pair, deductible, waiting period and attributes — stays, because it is what you are selling.

price_range object

FieldTypeDescription
floor_gross_premium_amountnumberLowest possible final price of the product (commission at the minimum rate).
ceiling_gross_premium_amountnumberHighest possible final price of the product (commission at the maximum rate).
floor_requester_amountnumberYour commission in BRL at the floor of the range.
ceiling_requester_amountnumberYour commission in BRL at the ceiling of the range.
minimum_requester_ratenumberMinimum rate of your commission band for the product.
maximum_requester_ratenumberMaximum rate of your commission band for the product.

A total_gross_premium_amount equal to the floor or the ceiling of the range uses exactly the minimum_requester_rate/maximum_requester_rate, with no intermediate rounding.

No premium on a simulation

A simulation returns no gross_premium_amount, iof_amount or net_premium_amount, at any level. The range's own endpoints are the only premium figures on this surface. For the committed, fully decomposed price, use the quote.

Possible errors

Every error (non-2xx) returns the standard body { "title", "description", "translation", "code" } — treat only the code field programmatically.

StatusCodeDescription
400QIT000001Malformed request — including commission_data present on any line.
401 / 403Authentication or authorization failure.
429Request rate limit exceeded — retry with backoff.
503Pricing engine unavailable. Retry the call.