Enroll in autopay
Enroll Maya's Harbor loan with the Regulation E authorization on file, confirm the enrollment record, and understand the checks that run before every automated payment.
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.
- Enroll with the Reg E authorizationone current enrollment per loan
- Confirm the policy recordno payments are pre-created
- Six checks, every cycleenrollment, statement, instrument, authorization, restrictions, failuresautomatic
Create the enrollment
Reg E authorizationauthorizationRef 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 }Confirm the enrollment
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. With this timing policy the debit initiates on the due date, rolled to the following business day when needed.
Understand the execution gate
Re-checked each cycleImmediately before creating each cycle’s payment, LendEasy checks:
- enrollment state and any effective cancellation or pause;
- the current statement and its amount due;
- instrument ownership,
ACTIVEstatus,VERIFIEDstate, and rail capability; - the retained Regulation E authorization and the advance amount notice;
- active restrictions—
AUTOPAY_HOLDandCOLLECTIONS_HOLDpause the enrollment automatically—and payments already in flight; - 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 postingPause safely when the borrower requests a stop or an instrument needs review; reason codes come from a fixed list (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.