# Update draw rate

This endpoint is used for updating a single `interest` or `promo` rate (don't pass both in the same call). The updating of an
interest rate cannot lead to a gap in the loan where there is no reference interest rate.

Endpoint: PUT /people/{personId}/loans/{loanId}/draws/{drawId}/rates/{rateId}
Version: 2025-03-26
Security: oauth2, bearerAuth, apiKeyHeader

## Path parameters:

  - `personId` (string, required)
    A Borrower's unique identifier, tied to a person or a business. Can be Peach or a lender's external identifier.

  - `loanId` (string, required)
    The unique identifier of the Loan we wish to retrieve. Can be
Peach or lender's external identifier.

  - `drawId` (string, required)
    The draw identifier.

  - `rateId` (string, required)
    Unique identifier of an interest or promo rate.

## Request fields (application/json):

  - `interestRate` (object)
    An interest rate on a loan.
The system will treat the provided value according on the interest type that was set at the time of origination (see `atOrigination.interestType` attribute.)
To remind, `interestType` can have one of the following values: `absolute` or `spread`.
`absolute` - interest rates defined as `absolute` will use the value as provided in the `annualRate` attribute without adding the Index Interest Rate.
- Negative interest `annualRate` value is not allowed.
- If the provided `annualRate` is outside of the range defined on the loan type, the system will accept the `annualRate` but will return a warning in the response's object `ratesValidation`.

`spread` - interest rates defined as `spread` will calculate an absolute rate by adding the relative loan rate (aka spread) provided in the
`annualRate` attribute to the Index Interest Rate effective on the date the interest is accrued. In case the Index Interest Rate is not set,
the system will assume that the Index Interest Rate value is zero on the date the interest is accrued.
- Negative interest spread `annualRate` value is allowed, but the system will default to zero if the addition of the Index Interest Rate still results in a negative rate.
- If the calculated absolute rate, `annualRate` (aka spread) plus Index Interest Rate, is outside of the range defined on the loan type, the system will accept the
`annualRate` but will return a warning in the response's object `ratesValidation`.

  - `interestRate.annualRate` (number, required)
    The annual interest or promo rate for the period defined. Format is decimal. For example, 0.01 is 1% annual rate, 0.2 is 20% annual rate.

  - `interestRate.endDate` (string)
    The rate end date in the product timezone. The end date is inclusive.
If `null` then the rate is applicable until the end of the loan.

  - `interestRate.startDate` (string, required)
    The rate start date in the product timezone. The start date is inclusive.

  - `interestRate.status` (string)
    The status of the rate.
`active` - the rate is active.
`inactive` - the rate is inactive as it was removed.
    Enum: "active", "inactive"

  - `promoRate` (object)
    A promo rate on a loan. If the annual interest rate is 0.25 and the promo rate for the corresponding
period is 0.05, the net interest rate after application of the promo rate would be 0.2.

  - `caseId` (string)
    An identifier for an existing case.

## Response 200 fields (application/json):

  - `message` (string)
    Description of the server action or error.

  - `status` (integer)
    HTTP status code.

  - `data` (object)

  - `data.ratesValidation` (object)

  - `data.ratesValidation.interestRateBelowMinOrZero` (boolean)
    `true` if the interest rate is below the minimum interest rate.

  - `data.ratesValidation.interestRateExceedsMax` (boolean)
    `true` if the interest rate exceeds the maximum interest rate.

