# Activate loan

Endpoint: POST /people/{personId}/loans/{loanId}/activate
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.

## Query parameters:

  - `sync` (boolean)
    Make the process synchronous.

## Request fields (application/json):

  - `amortizationAtActivation` (string)
    Instructions on how to activate a loan in `originated` status. The loan status
changes to `active` after a successful activation.
`expectedPaymentsAtOrigination` - we will use the exact `atOrigination.expectedPayments`
due dates and amounts. The loan is not re-amortized.
`amortizeAtActivation` - we will re-amortize the loan using today's date as the loan start date.
`atOrigination.paymentFrequency` and `atOrigination.specificDays` are used to create due dates.
`atOrigination.expectedPayments` due dates and amounts are not used.
    Enum: "expectedPaymentsAtOrigination", "amortizeAtActivation"

  - `sendNotice` (boolean)
    When set to `false`, the system will NOT send a `loanDetails` notice to the borrower.

## Response 200 fields (application/json):

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

  - `status` (integer)
    HTTP status code.

  - `data` (any)

  - `data.amountsValidation` (object)
    This object contains information on whether the total of `expectedPayments` match to various amounts of the loan.

  - `data.amountsValidation.amountFinancedMatch` (any)
    `true` if the sum of `amountFinanced + originationFeeAmount` equals to `principalAmount`.
We allow up to 1 cent difference in the match because of potential rounding issues. Only applicable if both
`amountFinanced` and `principalAmount` are passed during origination; null otherwise.

  - `data.amountsValidation.feesMatch` (boolean)
    `true` if the sum of `expectedPayments` fees portion is equal to `originationFeeAmount` + `totalOtherFeesAmount`. Only applicable
when `expectedPayments` was passed during origination; `null` otherwise.

  - `data.amountsValidation.interestMatch` (boolean)
    `true` if the sum of `expectedPayments` interest portion is equal to `totalInterestAmount`. We allow up 1 cent different in
the match because of potential rounding issues. Only applicable when `expectedPayments` was passed during origination; `null`
otherwise.

  - `data.amountsValidation.principalMatch` (boolean)
    `true` if the sum of `expectedPayments` principal portion is equal to `amountFinanced`. We allow up 1 cent different in
the match because of potential rounding issues. Only applicable when `expectedPayments` was passed during origination; `null`
otherwise.

  - `data.amountsValidation.recurringAmountsMatch` (boolean)
    `true` if `atOrigination.periodicPaymentAmount` (aka recurring amount) equals the first expected payment's recurring amount.
Otherwise, `false`. `null` if `atOrigination.periodicPaymentAmount` or expected payments schedule is not passed at origination.

  - `data.amountsValidation.totalAdvancesMatch` (boolean)
    `true` if the sum of `advanceSchedule` amounts is equal to `amountFinanced`. Only applicable when `advanceSchedule` was passed during
origination; `null` otherwise.

  - `data.ratesValidation` (object)
    This object contains information on whether actual rates exceed the rate ranges defined on the loan type.

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

  - `data.ratesValidation.interestRateAtOrigExceedsMax` (boolean)
    `true` if the interest rate at origination exceeds the maximum interest rate.

  - `data.ratesValidation.aprEffectiveAtActExceedsMax` (boolean)
    `true` if the effective APR at activation exceeds the maximum APR.

  - `data.ratesValidation.aprEffectiveAtOrigExceedsMax` (boolean)
    `true` if the effective APR at origination exceeds the maximum APR.

  - `data.ratesValidation.aprNominalAtActExceedsMax` (boolean)
    `true` if the nominal APR at activation exceeds the maximum APR.

  - `data.ratesValidation.aprNominalAtOrigExceedsMax` (boolean)
    `true` if the nominal APR at origination exceeds the maximum APR.

  - `data.schedule` (object)

  - `data.schedule.schedule` (array)

  - `data.schedule.schedule.amount` (number)
    The amount of the expected payment.

  - `data.schedule.schedule.date` (string)
    The due date of the expected payment.

  - `data.schedule.schedule.dynamicFeeDetails` (object)
    When `paymentType`=`dynamicFee` this will contain details of the dynamic fee.

  - `data.schedule.schedule.dynamicFeeDetails.apiName` (string)
    The API name of the dynamic fee. For example: 'lateFee' or 'breatherFee'.

  - `data.schedule.schedule.dynamicFeeDetails.displayName` (string)
    The display name of the dynamic fee as shown to the borrower in the UI. For example: `Late Fee` or `Breather Fee`.

  - `data.schedule.schedule.dynamicFeeDetails.dynamicFeeTypeId` (string)
    The dynamic fee type identifier in the system.

  - `data.schedule.schedule.dynamicFeeDetails.loanFeeId` (string)
    The loan fee identifier in the system.

  - `data.schedule.schedule.interestAmount` (number)
    The portion of the `amount` allocated to net interest.
Available only for `paymentType=periodicPayment`.

  - `data.schedule.schedule.interestBeforeDiscountAmount` (number)
    The interest amount that was accrued before promo rate(s) or any discount.
Available only for `paymentType=periodicPayment`.

  - `data.schedule.schedule.isDeferred` (boolean)
    `true` if the amount of this expected payment has been deferred before.

  - `data.schedule.schedule.isForcedAmount` (boolean)
    Only applicable to `paymentType=periodicPayment`.
If set to `true`, the system will honor the amount and will not update it on loan recalculations.
If set to `false` and the amount is less than the `periodicPaymentAmount`, the system can increase the amount when
the loan is being recalculated.
In most of the cases, the lender should set the value to `false` (aka the default value.) If you need more
explanation or advice on your use case, please contact the Peach team.

  - `data.schedule.schedule.originalAmount` (number)
    The amount of the expected payment at creation. The `amount` will change as a result of refreshing
expected payments, but the `originalAmount` will stay the same.

  - `data.schedule.schedule.paymentType` (string)
    The payment type.
    Enum: "periodicPayment", "originationFee", "drawFee", "dynamicFee", "downPayment", "discountCredit"

  - `data.schedule.schedule.periodId` (string)
    The period identifier.

  - `data.schedule.schedule.principalAmount` (number)
    The portion of the `amount` allocated to principal.
Available only for `paymentType=periodicPayment`.

  - `data.schedule.schedule.status` (string)
    The status of the expected payment.
`scheduled`  - borrower is expected to make the payment. Only applicable to paymentType=dynamicFee.
`booked` - borrower is or was expected to make the payment.
`modified` - the amount was modified at some point and different from the original amount.
`canceled` - borrower is or was not expected to make the payment.
    Enum: "booked", "modified", "canceled"

  - `data.schedule.schedule.unroundedInterestAmount` (string)
    The portion of the `amount` allocated to net interest. Available only for `paymentType=periodicPayment`.
This value is unrounded.

  - `data.schedule.schedule.unroundedInterestBeforeDiscountAmount` (string)
    The interest amount that was accrued before promo rate(s) or any discount. Available only for
`paymentType=periodicPayment`. This value is unrounded.

  - `data.schedule.schedule.unroundedPrincipalAmount` (string)
    The portion of the `amount` allocated to principal. Available only for `paymentType=periodicPayment`.
This value is unrounded.

