Skip to content
Last updated

Past-dated transaction errors reference

This page lists the responses specific to creating a past-dated transaction on a loan that isn't being migrated onto Peach, with the cause of each and what to do next. For how these creates work, see How past-dated transactions work; errors that any create can return are in the create transaction API reference.

Request fields

StatusMessageCauseWhat to do
400effectiveTimeOfDay is required when creating and backdating a transaction in one call (i.e. when effectiveDate is provided). To create a transaction effective today, leave effectiveDate blank.You sent effectiveDate without effectiveTimeOfDay on a one-time payment, down payment, or service credit, with no scheduledDate.Add effectiveTimeOfDay to backdate the transaction, or remove effectiveDate to create it effective today.
400effectiveDate is required when effectiveTimeOfDay is provided.You sent effectiveTimeOfDay without effectiveDate, with no scheduledDate.Add effectiveDate, or remove effectiveTimeOfDay.

Transaction type and status

StatusMessageCauseWhat to do
400effectiveDate can only be used for external transactions (isExternal=true or external payment instrument).A one-time payment or down payment with effectiveDate is not external. Service credits are exempt.Set isExternal to true or use an external payment instrument, or remove effectiveDate.
400Backdated payment create requires status 'succeeded' or 'pending'.A one-time payment or down payment with effectiveDate has a status other than succeeded or pending. An omitted status also triggers this, because it resolves to scheduled.Send status as succeeded or pending.

Dates and loan state

StatusMessageCauseWhat to do
400effectiveDate must be in the past or today.The requested instant, effectiveDate plus effectiveTimeOfDay in the product timezone, is later than the time of the call. This includes a later time today.Send a date and time no later than the time of the call.
400Cannot backdate transaction to before loan started_at.The requested instant is at or before the loan's start: its startedAt timestamp, when the loan was activated.Send an instant after the loan's startedAt.
400Cannot backdate transaction with drawId to before draw started_at.You sent drawId, and the requested instant is at or before the draw's startedAt, when the draw was activated.Send an instant after the draw's startedAt.
400Cannot backdate transaction to before migration cutoff date.The loan is a line of credit migrated onto Peach with a migration period, and the requested date is before its migration cutoff date.Send a date on or after the migration cutoff date.
400Loan status cannot be 'originated' or 'pending'.A one-time payment or service credit targets a loan with status originated or pending.Wait until the loan's status is active, then create the transaction.
400Loan status must be 'active' or 'accelerated', not '<loan status>'.A one-time payment or service credit targets a loan whose status is not active, accelerated, or chargedOff, such as paidOff.To move an existing transaction on a paid-off loan, use the two-step backdate operation.
400Loan configuration does not allow payments on charged off loans.A one-time payment or service credit targets a chargedOff loan whose loan type does not allow payments when charged off.Create the transaction only on loans whose loan type allows payments when charged off.
400Down payments presently can only be made on loans with status 'active'.A down payment targets a loan whose status is not active.Create down payments only on active loans.

Processing and concurrency

After a past-dated create, Peach recalculates the loan with a Loan Replay™. The responses below concern that replay.

StatusMessageCauseWhat to do
408Gave up waiting for transaction backdate replay to finish: <transaction ID>.You sent sync=true, and the replay did not finish within the wait. The transaction is already saved.Poll the operation ID returned with the response until the replay finishes.
400Some operations failed for this request.You sent sync=true, and Peach hit an error outside the replay itself, for example before the replay started. The transaction is already saved.Do not retry the create, because the transaction already exists.
423Loan is locked for updates. Please try again.The loan is locked by a replay or another update in progress.Retry the request after the lock clears.

Duplicates

StatusMessageCauseWhat to do
409Duplicate external ID '<externalId>'.Another transaction in your company already uses this externalId.Do not resend; a 409 on a retry means the earlier request was saved.

See also