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.
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.
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 }The enrollment is an authorization and policy record. It does not pre-create the cycle’s payments.
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; 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.
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 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.