LendEasy/Docs
Get API keys
GuidesServicing PlaneContact-frequency budgets

Contact-frequency budgets

Turn call history and lender contact policy into real-time, debt-scoped capacity while preserving the legal distinction between Regulation F presumptions and an operational hard limit.

A contact budget is an operational control derived from interaction history and effective rules. It is not a quota to consume and never overrides consent, inconvenient-time, cease, representation, bankruptcy, purpose, or channel restrictions.

Regulation F model

For covered debt-collection telephone calls, 12 CFR 1006.14(b) creates presumptions around:

  • placing more than seven telephone calls within seven consecutive days in connection with collection of a particular debt; and
  • placing a telephone call within seven days after a telephone conversation about that particular debt, subject to the rule’s details and exceptions.

LendEasy can encode a lender policy that blocks at or before those boundaries. The product calls that a configured hard budget; it does not misstate the regulation itself as a universal permission for seven calls.

Debt-scoped counters

customer Maya
  ├─ Harbor debt     → rolling placed-call events + conversation window
  └─ another debt    → separate counters, then customer-level overlay policy

Particular-debt calculation and customer-level intensity policy are both visible. A separate debt counter does not justify an unreasonable aggregate contact pattern.

Eligibility response

curl -X POST "$BASE/v1/servicing/compliance/contact-eligibility" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: hbr-contact-budget-2027-05-01T101158" \
  -d '{
    "caseId": "case_HBR_COL_51",
    "customerId": "412",
    "loanId": "7204",
    "channel": "voice",
    "purpose": "collections",
    "contactPointId": "cp_MAYA_MOBILE_1",
    "requestedAt": "2027-05-01T10:11:58-07:00"
  }'
{
  "decisionId": "dec_CONTACT_81",
  "outcome": "allowed",
  "localTime": "2027-05-01T10:11:58-07:00",
  "contactBudget": {
    "attemptsRemaining": 3,
    "windowEndsAt": "2027-05-05T23:59:59-07:00"
  },
  "blockingRestrictions": []
}

The full explanation names counted interaction IDs, excluded events and reasons, conversation anchor, rule version, debt key, and window boundaries.

Counting semantics

Event Typical configured treatment
Provider dial request placed Count when the call is actually placed.
Blocked before provider invocation Record, but do not count as a placed call.
Busy, no answer, or voicemail path Count as a placed call under applicable policy.
Inbound customer call Record; evaluate separately from an outbound placed call.
Telephone conversation Record and establish any configured post-conversation window.
Duplicate provider callback Deduplicate by provider event reference.
System test call Exclude only under explicit non-customer test controls.

Exact legal and policy treatment remains rule-versioned rather than hard-coded in the event model.

Concurrency

Two workers can attempt the last available slot at once. Reservation and execution consume capacity atomically; one call proceeds and the other receives a current block or conflict. A cached UI counter never guarantees execution.

“Attempts remaining” means only that this one budget has capacity under current facts. It is not a legal conclusion or general authorization to call.
Unified search across guides, recipes & the API referenceEsc