LendEasy/Docs
Get API keys
RecipesLendingEnroll in autopay

Enroll in autopay

Enroll Harbor with a retained Regulation E authorization, confirm the enrollment record, and understand the checks that run before every automated payment.

Time
~5 min
Surface
LMS API
Steps
3
Gate
Reg E · instrument health · notices
EndpointsPOST /v1/loans/{loanId}/autopayGET /v1/loans/{loanId}/autopayPOST /v1/loans/{loanId}/autopay/pause

Maya enrolls Harbor in autopay from her verified instrument 704. The FULL_DUE amount policy debits each statement’s full amount due, so what is debited always matches what was billed.

1

Create the enrollment

Reg E authorization
POST/v1/loans/7204/autopay

authorizationRef is required: it preserves Maya’s Regulation E preauthorized-transfer authorization. A loan has exactly one current enrollment, the instrument must be ACTIVE and VERIFIED, and a FULL_DUE policy must leave enough statement lead time for the ten-day advance notice of the amount to be debited.

curl -X POST "$BASE/v1/loans/7204/autopay" \
  -H "Authorization: Bearer $TOKEN" \
  -H "LendEasy-Tenant: demo-lender" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: harbor-autopay-enrollment-v1" \
  -d '{
    "instrumentId": 704,
    "authorizationRef": "evd_JUN_AP_73",
    "timingPolicy": {
      "initiateDaysBeforeDue": 0,
      "businessDayConvention": "FOLLOWING"
    },
    "amountPolicy": { "type": "FULL_DUE" }
  }'
{ "resourceId": 31 }

The enrollment is an authorization and policy record. It does not pre-create the cycle’s payments.

2

Confirm the enrollment

GET/v1/loans/7204/autopay
curl "$BASE/v1/loans/7204/autopay" \
  -H "Authorization: Bearer $TOKEN" \
  -H "LendEasy-Tenant: demo-lender"
{
  "loanRef": "7204",
  "status": "ACTIVE",
  "instrument": { "instrumentId": 704, "maskedDisplay": "••6789" },
  "timingPolicy": { "initiateDaysBeforeDue": 0, "businessDayConvention": "FOLLOWING", "onScheduleChange": "FOLLOW_NEW_SCHEDULE" },
  "amountPolicy": { "type": "FULL_DUE" },
  "authorizationRef": "evd_JUN_AP_73",
  "consecutiveFailureCount": 0,
  "effectiveDate": "2026-08-21"
}

FULL_DUE recalculates each cycle. If an earlier payment reduces the amount due to $60.00, autopay debits $60.00, not the scheduled $517.14; a zero amount due suppresses the debit entirely. With this timing policy the debit initiates on the due date, rolled to the following business day when needed.

3

Understand the execution gate

Re-checked each cycle
AUTOstatement cycle → payment intent

Immediately before creating each cycle’s payment, LendEasy checks:

  1. enrollment state and any effective cancellation or pause;
  2. the current statement and its amount due;
  3. instrument ownership, ACTIVE status, VERIFIED state, and rail capability;
  4. the retained Regulation E authorization and the advance amount notice;
  5. active restrictions—AUTOPAY_HOLD and COLLECTIONS_HOLD pause the enrollment automatically—and payments already in flight;
  6. the per-rail failure policy after any prior return.
eligible cycle
  → one payment intent (source AUTOPAY) keyed to the statement cycle
  → rail submission and settlement
  → value-dated ledger posting

Pause safely when the borrower requests a stop or an instrument needs review; reason codes come from a closed catalog (BORROWER_REQUEST, STAFF_REQUEST, RESTRICTION_CASCADE, FAILURE_POLICY, and others).

curl -X POST "$BASE/v1/loans/7204/autopay/pause" \
  -H "Authorization: Bearer $TOKEN" \
  -H "LendEasy-Tenant: demo-lender" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: pause-autopay-7204-borrower-request" \
  -d '{ "reasonCode": "BORROWER_REQUEST", "comment": "Requested via secure message." }'

Cancelling is a Regulation E revocation: POST /v1/loans/7204/autopay/cancel ends the enrollment and cancels its pending unsubmitted payment intents.

See the CFPB’s preauthorized transfer requirements and the detailed Autopay guide for amount notices, per-rail failure policies, returns, and lifecycle behavior.

Unified search across guides, recipes & the API referenceEsc