Skip to content

LOC migration special cases and configuration

Origination and draw fees

If the LOC charges origination fees or draw fees that are expected to be paid after the migration cutoff date, configure them during loan and draw creation.

Origination fees

Pass the origination fee amount in the atOrigination.fees object when creating the loan:

{
  "atOrigination": {
    "fees": {
      "originationFeeAmount": 150.00
    }
  }
}

Then include the remaining origination fee balance in the migration period LOC data under nonDueBalances.nonDueOriginationFeesAmount, dueBalances.dueOriginationFeesAmount, or overdueBalances.overdueOriginationFeesAmount depending on the fee's current status.

Draw fees

Pass the draw fee amount in the draw's atOrigination.fees object:

{
  "atOrigination": {
    "fees": {
      "drawFeeAmount": 50.00
    }
  }
}

Include the remaining draw fee balance in the migration period draw data under the appropriate nonDueDrawFeesAmount, dueDrawFeesAmount, or overdueDrawFeesAmount field.

Statement and due date configuration

Peach supports three options for statement and due date scheduling on LOCs. The option you choose affects how you set specificDays, statementDate, and dueDate across all periods.

OptionHow it worksConfiguration
Fixed due dateDue date is fixed; statement date is calculated based on grace period days.Set specificDays to the due date day (e.g., [22]). Statement date is auto-calculated.
Fixed statement date (LOC only)Statement date is fixed; due date is calculated based on grace period days.Set specificDays to the statement date day. Due date is auto-calculated.
Fixed both (LOC only, monthly only)Both statement date and due date are fixed.Set specificDays to both days (e.g., [1, 22] where 1 is statement date, 22 is due date). Only works with paymentFrequency: "monthly".

Ensure that the specificDays in atOrigination align with the dueDate (or statementDate, depending on your configuration) in the migration period data.

Migrating special loan states

Not all loans are current when they migrate. Peach supports migrating loans that are delinquent, accelerated, or charged off.

Delinquent loans

For loans that are past due at the time of migration, set the migratedDaysOverdue and migratedOverdueFromDate fields in the migration period obligation data.

After migration, Peach dynamically prorates the migrated days overdue as the borrower makes payments:

Effective DPD = migratedDaysOverdue × (1 - min(fulfilledAmount / migratedOverdueAmount, 1))

This means that as the borrower pays down the overdue balance, the effective days past due decreases proportionally.

This prorating formula operates continuously across the total overdue amount and does not distinguish between overdue amounts from different periods. See the DPD prorating known limitation in the system design constraints section for a detailed example of how this can produce unexpected results with multi-period overdue balances.

Accelerated and charged-off loans

To migrate a loan directly into an accelerated or charged-off state, set postMigrationLoanStatus in the migration period LOC data:

{
  "postMigrationLoanStatus": "accelerated"
}

Or for charged-off:

{
  "postMigrationLoanStatus": "chargedOff",
  "chargedOffReason": "term"
}

Accepted chargedOffReason values: term, fraudulent, bankruptcy, legal

The effective date for the acceleration or charge-off is the migration cutoff date.

Special state migrations are most commonly used when onboarding a portfolio of delinquent loans onto Peach — for example, to leverage Peach's collections features for a portfolio where all loans are already past due. Ensure the chargedOffReason matches the reason from your legacy system.

See also