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.
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.
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.
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.
| Option | How it works | Configuration |
|---|---|---|
| Fixed due date | Due 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.
Not all loans are current when they migrate. Peach supports migrating loans that are delinquent, accelerated, or charged off.
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.
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.
- LOC migration procedure — The base procedure these special cases extend.
- After LOC migration — DPD proration and other post-migration behaviors.