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
The request uses the same products[] list as the quote — without commission_data: the simulation sweeps the entire commission band, so sending a commission is a 400.
{
"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
{
"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
| Field | Type | Description |
|---|---|---|
total_order_floor_amount | number | Lowest possible total amount of the order (every commission at the minimum rate). |
total_order_ceiling_amount | number | Highest possible total amount of the order (every commission at the maximum rate). |
products | array | One line per requested product, in request order. Rejected lines are byte-identical to the quote's — product_key, result: "rejected" and decline_reasons — because they were refused for the same reason, at the same stage. |
eligibility | string | Eligibility 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
| Field | Type | Description |
|---|---|---|
floor_gross_premium_amount | number | Lowest possible final price of the product (commission at the minimum rate). |
ceiling_gross_premium_amount | number | Highest possible final price of the product (commission at the maximum rate). |
floor_requester_amount | number | Your commission in BRL at the floor of the range. |
ceiling_requester_amount | number | Your commission in BRL at the ceiling of the range. |
minimum_requester_rate | number | Minimum rate of your commission band for the product. |
maximum_requester_rate | number | Maximum 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.
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.
| Status | Code | Description |
|---|---|---|
400 | QIT000001 | Malformed request — including commission_data present on any line. |
401 / 403 | — | Authentication or authorization failure. |
429 | — | Request rate limit exceeded — retry with backoff. |
503 | — | Pricing engine unavailable. Retry the call. |