---
updatedAt: 2026-07-17T18:00:07.000Z
---

Fetch the complete documentation index at: https://developers.pismo.io/pismo-docs/llms.txt. Use this file to discover all available pages before exploring further.

# Create simulation config

Create simulation configuration for possible custom payment option.

**Note:** EXTERNAL engine plans cannot be fully configured at creation time — `calculation_url` is not accepted during creation.
Create the config with PISMO plans first, then use the PUT endpoint to add or update EXTERNAL engine plans with their `calculation_url`.


# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "Platform setup - Rates and fees",
    "description": "Rates and fees API endpoint documentation.",
    "contact": {
      "name": "API Support",
      "url": "https://developers.pismo.io/support/"
    },
    "license": {
      "name": "Copyright Pismo"
    },
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://sandbox.pismolabs.io/rates",
      "description": "Sandbox API server for testing"
    }
  ],
  "tags": [
    {
      "name": "Simulation",
      "description": "Simulation endpoints"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "components": {
    "examples": {
      "SimulationConfigDailyPercentage": {
        "value": {
          "description": "This is my simulation configurations",
          "plans": [
            {
              "id": "customId1",
              "description": "Electronics",
              "calculation_parameters": {
                "calculation_method": "DAILY_PERCENTAGE",
                "value": 0.03
              },
              "installments": [
                1,
                2,
                3
              ],
              "day_count_method": "MONTH_ACTUAL_YEAR_365",
              "billing_method": "CARD",
              "installment_parameters": {
                "minimum_installment_value": {
                  "type": "DYNAMIC",
                  "values": {
                    "1": 3,
                    "2": 10
                  }
                },
                "number_of_initial_periods_to_skip": {
                  "type": "FIXED",
                  "value": 1
                }
              },
              "interest_limitation": {
                "calculation_basis": "PRINCIPAL_AMOUNT",
                "percentage": 3.2
              },
              "down_payment_method": {
                "type": "INSTALLMENT_EQUIVALENT"
              },
              "filters": {
                "merchants": [
                  "abcdefg"
                ],
                "processing_codes": [
                  "01",
                  "02"
                ],
                "custom_filters": [
                  "custom_filter_01",
                  "custom_filter_02"
                ]
              }
            },
            {
              "id": "customId2",
              "description": "Furniture",
              "calculation_parameters": {
                "calculation_method": "DAILY_PERCENTAGE",
                "value": 0.04
              },
              "installments": [
                4,
                5,
                6
              ],
              "billing_method": "BNPL",
              "frequency": "MONTHLY",
              "day_count_method": "MONTH_ACTUAL_YEAR_365",
              "installment_parameters": {
                "minimum_installment_value": {
                  "type": "DYNAMIC",
                  "values": {
                    "1": 10,
                    "2": 3
                  }
                },
                "number_of_initial_periods_to_skip": {
                  "type": "FIXED",
                  "value": 1
                }
              },
              "filters": {
                "merchants": [
                  "abcdefg"
                ],
                "processing_codes": [
                  "01",
                  "02"
                ],
                "custom_filters": [
                  "custom_filter_01",
                  "custom_filter_02"
                ]
              }
            }
          ]
        }
      },
      "SimulationConfigEqualInstallments": {
        "value": {
          "description": "Equal Installments Simulation - 3 Plans",
          "plans": [
            {
              "id": "basic-plan",
              "description": "Basic Installment Plan without Grace Period",
              "billing_method": "CARD",
              "day_count_method": "MONTH_30_YEAR_360",
              "installments": [
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12
              ],
              "calculation_parameters": {
                "calculation_method": "EQUAL_INSTALLMENTS",
                "day_count_method": "MONTH_30_YEAR_360",
                "interest_rate": {
                  "type": "FIXED",
                  "value": 10
                },
                "fees": [
                  {
                    "calculation": "PERCENTAGE",
                    "id": "IOF",
                    "precedence": 0,
                    "value": 0.38,
                    "calculation_basis": "PRINCIPAL_AMOUNT"
                  },
                  {
                    "calculation": "DAILY_PERCENTAGE",
                    "id": "IOF-Daily",
                    "precedence": 1,
                    "value": 0.0082,
                    "calculation_basis": "PRINCIPAL_AMOUNT"
                  }
                ]
              },
              "filters": {
                "processing_codes": [
                  "508"
                ]
              }
            },
            {
              "id": "plan-with-grace-period",
              "description": "Installment Plan with 1-Month Grace Period",
              "billing_method": "CARD",
              "day_count_method": "MONTH_30_YEAR_360",
              "installments": [
                6,
                9,
                12,
                18,
                24
              ],
              "calculation_parameters": {
                "calculation_method": "EQUAL_INSTALLMENTS",
                "day_count_method": "MONTH_30_YEAR_360",
                "interest_rate": {
                  "type": "FIXED",
                  "value": 12
                },
                "fees": [
                  {
                    "calculation": "PERCENTAGE",
                    "id": "IOF",
                    "precedence": 0,
                    "value": 0.38,
                    "calculation_basis": "PRINCIPAL_AMOUNT"
                  },
                  {
                    "calculation": "DAILY_PERCENTAGE",
                    "id": "IOF-Daily",
                    "precedence": 1,
                    "value": 0.0082,
                    "calculation_basis": "PRINCIPAL_AMOUNT"
                  }
                ]
              },
              "filters": {
                "processing_codes": [
                  "508",
                  "005"
                ],
                "merchants": [
                  "premium-store"
                ]
              },
              "interest_limitation": {
                "calculation_basis": "PRINCIPAL_AMOUNT",
                "percentage": 5
              }
            },
            {
              "id": "long-term-plan",
              "description": "Long-Term Installment Plan with Down Payment",
              "billing_method": "CARD",
              "day_count_method": "MONTH_30_YEAR_360",
              "installments": [
                12,
                18,
                24,
                36
              ],
              "calculation_parameters": {
                "calculation_method": "EQUAL_INSTALLMENTS",
                "day_count_method": "MONTH_30_YEAR_360",
                "interest_rate": {
                  "type": "FIXED",
                  "value": 8.5
                },
                "fees": [
                  {
                    "calculation": "PERCENTAGE",
                    "id": "IOF",
                    "precedence": 0,
                    "value": 0.38,
                    "calculation_basis": "PRINCIPAL_AMOUNT"
                  },
                  {
                    "calculation": "DAILY_PERCENTAGE",
                    "id": "IOF-Daily",
                    "precedence": 1,
                    "value": 0.0082,
                    "calculation_basis": "PRINCIPAL_AMOUNT"
                  }
                ]
              },
              "filters": {
                "custom_filters": [
                  "retail-partner"
                ]
              },
              "down_payment_method": {
                "type": "PERCENTAGE",
                "value": 20
              },
              "installment_parameters": {
                "minimum_installment_value": {
                  "type": "FIXED",
                  "value": 50
                }
              }
            }
          ]
        }
      },
      "SimulationConfigPriceTable": {
        "value": {
          "description": "This is my simulation configurations",
          "plans": [
            {
              "id": "customId1",
              "description": "Electronics",
              "calculation_parameters": {
                "calculation_method": "PRICE_TABLE",
                "daily_iof_rate": 0.0082,
                "index": "INSTALLMENT",
                "fixed_iof_rate": 0.38,
                "interest_rate": {
                  "type": "FIXED",
                  "value": 13.49
                },
                "fixed": 0,
                "percentage": 0
              },
              "installments": [
                1,
                2,
                3
              ],
              "day_count_method": "MONTH_30_YEAR_360",
              "billing_method": "BNPL",
              "frequency": "MONTHLY",
              "installment_parameters": {
                "minimum_installment_value": {
                  "type": "DYNAMIC",
                  "values": {
                    "1": 3,
                    "2": 10
                  }
                },
                "number_of_initial_periods_to_skip": {
                  "type": "FIXED",
                  "value": 1
                }
              },
              "interest_limitation": {
                "calculation_basis": "PRINCIPAL_AMOUNT",
                "percentage": 3.2
              },
              "down_payment_method": {
                "type": "INSTALLMENT_EQUIVALENT"
              },
              "filters": {
                "merchants": [
                  "abcdefg"
                ],
                "processing_codes": [
                  "01",
                  "02"
                ],
                "custom_filters": [
                  "custom_filter_01",
                  "custom_filter_02"
                ]
              }
            },
            {
              "id": "customId2",
              "description": "Furniture",
              "calculation_parameters": {
                "calculation_method": "PRICE_TABLE",
                "daily_iof_rate": 0.0082,
                "index": "INSTALLMENT",
                "fixed_iof_rate": 0.38,
                "interest_rate": {
                  "type": "FIXED",
                  "value": 13.49
                },
                "fixed": 0,
                "percentage": 0
              },
              "installments": [
                4,
                5,
                6
              ],
              "billing_method": "BNPL",
              "frequency": "MONTHLY",
              "installment_parameters": {
                "minimum_installment_value": {
                  "type": "DYNAMIC",
                  "values": {
                    "1": 10,
                    "2": 3
                  }
                },
                "number_of_initial_periods_to_skip": {
                  "type": "FIXED",
                  "value": 1
                }
              },
              "filters": {
                "merchants": [
                  "abcdefg"
                ],
                "processing_codes": [
                  "01",
                  "02"
                ],
                "custom_filters": [
                  "custom_filter_01",
                  "custom_filter_02"
                ]
              }
            }
          ]
        }
      },
      "SimulationConfigExternalEngine": {
        "value": {
          "description": "External calculation engine configuration",
          "plans": [
            {
              "id": "external_plan_001",
              "description": "Premium customer external calculation",
              "engine": "EXTERNAL",
              "calculation_url": "https://api.example.com/calculate",
              "authentication": {
                "authentication_method": "JWT_DEFAULT"
              },
              "installments": [
                1,
                2,
                3,
                6,
                12
              ],
              "filters": {
                "merchants": [
                  "MERCHANT_001",
                  "MERCHANT_002"
                ],
                "processing_codes": [
                  "00",
                  "01"
                ]
              }
            }
          ]
        }
      }
    },
    "schemas": {
      "BadRequestError": {
        "type": "object",
        "properties": {
          "error_code": {
            "type": "string",
            "description": "Error code ID",
            "example": "RCAPI-INVALID-REQUEST-PAYLOAD"
          },
          "message": {
            "type": "string",
            "description": "Error description",
            "example": "The request payload is invalid"
          }
        }
      },
      "CalculationMethodSubset": {
        "type": "string",
        "description": "Calculation method.",
        "enum": [
          "FIXED",
          "PERCENTAGE"
        ],
        "example": "FIXED"
      },
      "ConfigDescription": {
        "type": "string",
        "description": "Simulation configuration description",
        "example": "This is my simulation configurations"
      },
      "ConfigID": {
        "type": "string",
        "description": "Simulation configuration ID.",
        "example": "47589-uuye7-84k9"
      },
      "DayCountMethod": {
        "type": "string",
        "description": "Day count convention used to calculate interest",
        "example": "MONTH_30_YEAR_360",
        "enum": [
          "MONTH_30_YEAR_360",
          "MONTH_ACTUAL_YEAR_365"
        ]
      },
      "Error": {
        "type": "object",
        "properties": {
          "error_code": {
            "type": "string",
            "example": "RCAPI-DOMAIN-VIOLATION",
            "description": "Error code ID."
          },
          "message": {
            "type": "string",
            "example": "Internal server error",
            "description": "Error description."
          }
        }
      },
      "InterestRate": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "Fee type:\n  `FIXED` - Field `value` is required and will be used as interest rate. Field `grace_period` is optional.\n  `DYNAMIC` - Field `rules` is required and the value used as interest rate will be selected according to the installment ranges configured.\n",
            "enum": [
              "FIXED",
              "DYNAMIC"
            ],
            "example": "FIXED"
          },
          "value": {
            "type": "number",
            "description": "Percentage amount as decimal field. Value used as interest rate. **REQUIRED** for `FIXED` type.",
            "example": 0.2
          },
          "grace_period": {
            "type": "object",
            "description": "Optional grace period before interest begins. Only applicable when interest rate `type` is `FIXED`.\n\n**Only processed for the `EQUAL_INSTALLMENTS` calculation method.** Silently ignored for all other methods (e.g., `PRICE_TABLE`, `DAILY_PERCENTAGE`).\n",
            "required": [
              "type",
              "value"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "FIXED"
                ],
                "example": "FIXED"
              },
              "value": {
                "type": "number",
                "minimum": 0,
                "description": "Number of periods to skip before interest begins.",
                "example": 1
              }
            }
          },
          "rules": {
            "type": "array",
            "description": "Installment ranges responsible to configure the value used as interest rate. **REQUIRED** for `DYNAMIC` type.",
            "items": {
              "$ref": "#/components/schemas/InterestRateRule"
            }
          }
        }
      },
      "InterestRateRule": {
        "type": "object",
        "required": [
          "minimum",
          "maximum",
          "calculation"
        ],
        "properties": {
          "minimum": {
            "type": "number",
            "minimum": 1,
            "description": "First installment the rule is applied to. For example, if you enter \"4\", rule application begins on the 4th installment.\nMust be 1 or higher.\n",
            "example": 10
          },
          "maximum": {
            "type": "number",
            "maximum": 70,
            "description": "Last installment the rule is applied to. For example, if you enter \"10\", rule application ends after the 10th installment.\n",
            "example": 30
          },
          "calculation": {
            "$ref": "#/components/schemas/RuleCalculation"
          },
          "progression": {
            "$ref": "#/components/schemas/Progression"
          }
        }
      },
      "Plans": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Customer plan identifier",
            "pattern": "^[a-zA-Z0-9_-]+$",
            "maxLength": 36,
            "example": "customId1"
          },
          "description": {
            "type": "string",
            "description": "Custom simulation plan description",
            "maxLength": 255,
            "example": "Electronics"
          },
          "engine": {
            "type": "string",
            "description": "Calculation engine type:\n  `PISMO` - Uses Pismo's internal calculation methods (default). Requires `calculation_parameters`, `installments`, and `billing_method`.\n  `EXTERNAL` - Delegates calculation to an external service. Requires `calculation_url` (set on update only).\n",
            "enum": [
              "EXTERNAL",
              "PISMO"
            ],
            "example": "PISMO",
            "default": "PISMO"
          },
          "calculation_url": {
            "type": "string",
            "format": "uri",
            "description": "URL of your external calculation endpoint.\n**REQUIRED** when `engine` is `EXTERNAL`.\n**IMPORTANT:** Cannot be provided during plan creation (POST) — set this field on the first update (PUT) after creation.\nOnce set, this URL is immutable and cannot be changed.\nYour external engine must respond within 3 seconds.\n",
            "example": "https://api.example.com/calculate"
          },
          "authentication": {
            "type": "object",
            "description": "Authentication configuration for external calculation engine. **REQUIRED** when `engine` is `EXTERNAL`.",
            "properties": {
              "authentication_method": {
                "type": "string",
                "enum": [
                  "JWT_DEFAULT"
                ],
                "description": "Authentication method for calling your external engine.",
                "example": "JWT_DEFAULT",
                "default": "JWT_DEFAULT"
              }
            }
          },
          "calculation_parameters": {
            "description": "Calculation parameters for Pismo's internal calculation methods.\n**REQUIRED** when `engine` is `PISMO` or not specified.\n**MUST NOT** be provided when `engine` is `EXTERNAL`.\n",
            "oneOf": [
              {
                "$ref": "#/components/schemas/SimulationCalculationPriceTable"
              },
              {
                "$ref": "#/components/schemas/SimulationCalculationDailyPercentage"
              },
              {
                "$ref": "#/components/schemas/SimulationCalculationEqualInstallments"
              }
            ]
          },
          "interest_limitation": {
            "$ref": "#/components/schemas/SimulationInterestLimitation"
          },
          "down_payment_method": {
            "$ref": "#/components/schemas/SimulationDownPaymentMethod"
          },
          "installments": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "description": "Array containing the installment numbers for which the plan is applicable. **REQUIRED** when `engine` is `PISMO`.",
            "example": [
              6,
              10,
              12
            ]
          },
          "day_count_method": {
            "$ref": "#/components/schemas/DayCountMethod"
          },
          "billing_method": {
            "type": "string",
            "description": "Plan billing method. **REQUIRED** when `engine` is `PISMO`.\n  `BNPL` - Field `frequency` is **REQUIRED**\n  `CARD` - Field `frequency` is the same as the card, and the field should be **NULL**.\n",
            "enum": [
              "BNPL",
              "CARD"
            ],
            "example": "BNPL"
          },
          "frequency": {
            "type": "string",
            "description": "Frequency of the billing. Required for billing_method = `BNPL`",
            "enum": [
              "MONTHLY"
            ],
            "example": "MONTHLY"
          },
          "installment_parameters": {
            "$ref": "#/components/schemas/SimulationInstallmentParameters"
          },
          "filters": {
            "type": "object",
            "description": "Simulation configuration filters",
            "properties": {
              "merchants": {
                "type": "array",
                "description": "Array containing the merchants for whom the plan applies",
                "example": [
                  "abcdef"
                ],
                "items": {
                  "type": "string",
                  "maxLength": 255
                }
              },
              "processing_codes": {
                "type": "array",
                "description": "Array containing the processing codes for whom the plan applies",
                "example": [
                  "01",
                  "02"
                ],
                "items": {
                  "type": "string",
                  "maxLength": 255
                }
              },
              "custom_filters": {
                "type": "array",
                "description": "Array containing plan custom filters",
                "items": {
                  "type": "string",
                  "maxLength": 255
                },
                "example": [
                  "custom_filter_01",
                  "custom_filter_02"
                ]
              }
            }
          }
        }
      },
      "Plans2": {
        "type": "array",
        "description": "Customer plans created",
        "items": {
          "$ref": "#/components/schemas/PlansOutput"
        },
        "example": [
          {
            "id": "customId1",
            "description": "Electronics"
          },
          {
            "id": "customId2",
            "description": "Furniture"
          }
        ]
      },
      "PlansOutput": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Customer plans identifier",
            "example": "customId1"
          },
          "description": {
            "type": "string",
            "description": "Plan configuration description",
            "example": "Electronic"
          }
        }
      },
      "Progression": {
        "type": "object",
        "description": "Rate progression configuration.",
        "required": [
          "value",
          "steps"
        ],
        "properties": {
          "value": {
            "type": "number",
            "description": "Percentage amount as decimal field added to `rule.calculation.value` base value.",
            "example": 0.02
          },
          "steps": {
            "type": "integer",
            "description": "Frequency `value` is applied.",
            "example": 10
          }
        }
      },
      "RuleCalculation": {
        "type": "object",
        "required": [
          "calculation_method",
          "value"
        ],
        "properties": {
          "calculation_method": {
            "$ref": "#/components/schemas/CalculationMethodSubset"
          },
          "value": {
            "type": "number",
            "description": "Value to be applied",
            "example": 0.04
          }
        }
      },
      "SimulationInstallmentParameters": {
        "type": "object",
        "properties": {
          "minimum_installment_value": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "description": "Value type:\n  `FIXED` - a single scalar `value` applies to all installments.\n  `DYNAMIC` - per-installment values provided in the `values` map.\n",
                "enum": [
                  "FIXED",
                  "DYNAMIC"
                ],
                "example": "FIXED"
              },
              "value": {
                "type": "number",
                "description": "Minimum installment value (used when `type` is `FIXED`).",
                "example": 100
              },
              "values": {
                "type": "object",
                "description": "Map of installment number (as string key) to minimum value.\nUsed when `type` is `DYNAMIC`. Example: `{\"1\": 50.0, \"2\": 100.0}`.\n",
                "additionalProperties": {
                  "type": "number"
                },
                "example": {
                  "2": 100,
                  "3": 150
                }
              }
            },
            "example": {
              "type": "FIXED",
              "value": 10
            }
          },
          "number_of_initial_periods_to_skip": {
            "type": "object",
            "description": "Number of initial installments to be skipped before billing starts.",
            "properties": {
              "type": {
                "type": "string",
                "description": "Value type:\n  `FIXED` - a single scalar `value` applies.\n  `DYNAMIC` - per-installment values provided in the `values` map.\n",
                "enum": [
                  "FIXED",
                  "DYNAMIC"
                ],
                "example": "FIXED"
              },
              "value": {
                "type": "integer",
                "description": "Number of periods to skip (used when `type` is `FIXED`).",
                "example": 1
              },
              "values": {
                "type": "object",
                "description": "Map of installment number (as string key) to number of periods to skip.\nUsed when `type` is `DYNAMIC`.\n",
                "additionalProperties": {
                  "type": "integer"
                },
                "example": {
                  "2": 1,
                  "3": 3
                }
              }
            },
            "example": {
              "type": "FIXED",
              "value": 1
            }
          }
        }
      },
      "SimulationInterestLimitation": {
        "type": "object",
        "required": [
          "calculation_basis",
          "percentage"
        ],
        "properties": {
          "calculation_basis": {
            "type": "string",
            "description": "Basis used to calculate the interest limitation.",
            "enum": [
              "PRINCIPAL_AMOUNT"
            ],
            "example": "PRINCIPAL_AMOUNT"
          },
          "percentage": {
            "type": "number",
            "description": "Maximum interest percentage allowed over the life of the plan.",
            "example": 3.2
          }
        }
      },
      "SimulationDownPaymentMethod": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "Down payment calculation method:\n  `PERCENTAGE` - Field `value` is **REQUIRED**; the down payment is a percentage of the transaction amount (max 100).\n  `INSTALLMENT_EQUIVALENT` - Field `value` must be absent; the down payment equals one installment value.\n",
            "enum": [
              "PERCENTAGE",
              "INSTALLMENT_EQUIVALENT"
            ],
            "example": "PERCENTAGE"
          },
          "value": {
            "type": "number",
            "maximum": 100,
            "description": "Percentage value for the down payment. **REQUIRED** when `type` is `PERCENTAGE`.\nMust be absent when `type` is `INSTALLMENT_EQUIVALENT`.\n",
            "example": 20
          }
        }
      },
      "SimulationCalculationPriceTable": {
        "type": "object",
        "required": [
          "calculation_method",
          "fixed_iof_rate",
          "interest_rate",
          "daily_iof_rate"
        ],
        "properties": {
          "calculation_method": {
            "type": "string",
            "description": "Calculation method - `PRICE_TABLE`.",
            "enum": [
              "PRICE_TABLE"
            ]
          },
          "index": {
            "type": "string",
            "description": "Define range type when interest rate is dynamic.",
            "enum": [
              "INSTALLMENT"
            ]
          },
          "fixed": {
            "type": "number",
            "description": "Fixed fee amount as decimal field.",
            "example": 50
          },
          "percentage": {
            "type": "number",
            "description": "Percentage amount as decimal field.",
            "example": 1.3
          },
          "fixed_iof_rate": {
            "type": "number",
            "description": "Percentage amount as decimal field. IOF = Brazilian tax.",
            "example": 0.38
          },
          "daily_iof_rate": {
            "type": "number",
            "description": "Percentage amount as decimal field. IOF = Brazilian tax.",
            "example": 0.0082
          },
          "interest_rate": {
            "$ref": "#/components/schemas/InterestRate"
          }
        }
      },
      "SimulationCalculationDailyPercentage": {
        "type": "object",
        "required": [
          "calculation_method",
          "value",
          "identifier"
        ],
        "properties": {
          "calculation_method": {
            "type": "string",
            "description": "Calculation method - `DAILY_PERCENTAGE`. Applied to credit card cash advances and other loan-type products.",
            "enum": [
              "DAILY_PERCENTAGE"
            ]
          },
          "value": {
            "type": "number",
            "description": "Percentage amount as decimal field.",
            "example": 0.3
          },
          "identifier": {
            "type": "string",
            "description": "Plan identifier used to reference this daily percentage strategy.",
            "pattern": "^[a-zA-Z0-9_-]+$",
            "maxLength": 36,
            "example": "daily-pct-01"
          }
        },
        "additionalProperties": false
      },
      "SimulationStrategyInternalFee": {
        "type": "object",
        "description": "Internal fee applied within the Equal Installments calculation.",
        "required": [
          "calculation",
          "id",
          "precedence",
          "calculation_basis"
        ],
        "properties": {
          "calculation": {
            "type": "string",
            "description": "Fee calculation strategy.",
            "enum": [
              "PERCENTAGE",
              "FIXED",
              "DAILY_PERCENTAGE",
              "IOF"
            ],
            "example": "PERCENTAGE"
          },
          "id": {
            "type": "string",
            "description": "Fee identifier.",
            "maxLength": 36,
            "example": "IOF"
          },
          "precedence": {
            "type": "integer",
            "description": "Fee calculation order. Lower numbers are applied first.",
            "minimum": 0,
            "example": 0
          },
          "value": {
            "type": "number",
            "description": "Fee value as a decimal. Required for `PERCENTAGE`, `FIXED`, and `DAILY_PERCENTAGE` strategies.",
            "example": 0.38
          },
          "calculation_basis": {
            "type": "string",
            "description": "Calculation basis for the fee.",
            "enum": [
              "PRINCIPAL_AMOUNT",
              "CONTRACT_AMOUNT"
            ],
            "example": "PRINCIPAL_AMOUNT"
          },
          "fixed_iof_rate": {
            "type": "number",
            "description": "Fixed IOF rate as a decimal. Required when `calculation` is `IOF`.",
            "example": 0.38
          },
          "daily_iof_rate": {
            "type": "number",
            "description": "Daily IOF rate as a decimal. Required when `calculation` is `IOF`.",
            "example": 0.0082
          }
        },
        "additionalProperties": false
      },
      "SimulationCalculationEqualInstallments": {
        "type": "object",
        "description": "Calculation parameters for the `EQUAL_INSTALLMENTS` method. Produces equal amortization installments with a fixed or dynamic interest rate and optional internal fees (e.g., IOF).",
        "required": [
          "calculation_method",
          "day_count_method",
          "interest_rate",
          "identifier"
        ],
        "properties": {
          "calculation_method": {
            "type": "string",
            "description": "Calculation method - `EQUAL_INSTALLMENTS`.",
            "enum": [
              "EQUAL_INSTALLMENTS"
            ]
          },
          "day_count_method": {
            "$ref": "#/components/schemas/DayCountMethod"
          },
          "interest_rate": {
            "$ref": "#/components/schemas/InterestRate"
          },
          "identifier": {
            "type": "string",
            "description": "Plan identifier used to reference this equal installments strategy.",
            "pattern": "^[a-zA-Z0-9_-]+$",
            "maxLength": 36,
            "example": "equal-inst-01"
          },
          "fees": {
            "type": "array",
            "description": "List of internal fees applied within the installment calculation (e.g., IOF).\nSupported strategies: `PERCENTAGE`, `FIXED`, `DAILY_PERCENTAGE`, `IOF`.\n",
            "items": {
              "$ref": "#/components/schemas/SimulationStrategyInternalFee"
            }
          }
        },
        "additionalProperties": false
      },
      "SimulationConfigOutput": {
        "type": "object",
        "properties": {
          "config_id": {
            "$ref": "#/components/schemas/ConfigID"
          },
          "description": {
            "$ref": "#/components/schemas/ConfigDescription"
          },
          "plans": {
            "$ref": "#/components/schemas/Plans2"
          }
        }
      },
      "SimulationConfigRequest": {
        "type": "object",
        "required": [
          "description",
          "plans"
        ],
        "properties": {
          "description": {
            "$ref": "#/components/schemas/ConfigDescription"
          },
          "plans": {
            "type": "array",
            "description": "Configuration of Simulation Plans",
            "items": {
              "$ref": "#/components/schemas/Plans"
            }
          }
        }
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    },
    "responses": {
      "400BadRequestError": {
        "description": "Bad request",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/BadRequestError"
            }
          }
        }
      },
      "401Unauthorized": {
        "description": "InvalidToken",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "500InternalServerError": {
        "description": "Internal Server Error",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      }
    }
  },
  "paths": {
    "/v1/simulation/configs": {
      "post": {
        "summary": "Create simulation config",
        "description": "Create simulation configuration for possible custom payment option.\n\n**Note:** EXTERNAL engine plans cannot be fully configured at creation time — `calculation_url` is not accepted during creation.\nCreate the config with PISMO plans first, then use the PUT endpoint to add or update EXTERNAL engine plans with their `calculation_url`.\n",
        "operationId": "simulationConfigs",
        "tags": [
          "Simulation"
        ],
        "requestBody": {
          "description": "Create simulation configs",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SimulationConfigRequest"
              },
              "examples": {
                "Calculation method Price Table": {
                  "$ref": "#/components/examples/SimulationConfigPriceTable"
                },
                "Calculation method Daily Percentage": {
                  "$ref": "#/components/examples/SimulationConfigDailyPercentage"
                },
                "Calculation method Equal Installments": {
                  "$ref": "#/components/examples/SimulationConfigEqualInstallments"
                },
                "External Engine Configuration": {
                  "$ref": "#/components/examples/SimulationConfigExternalEngine"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimulationConfigOutput"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400BadRequestError"
          },
          "401": {
            "$ref": "#/components/responses/401Unauthorized"
          },
          "500": {
            "$ref": "#/components/responses/500InternalServerError"
          }
        }
      }
    }
  }
}
```