Auto Account Details

The Works

How servicing actually works.

The single place auto consumer servicing lives end to end — how it behaves across the Web, API, and Mobile layers, what a proposed change will move, and where reality has drifted from intent. Every claim traced to real code. One verified picture for business, product, and engineering.

8/10 flows have gates
6 cross-flow connections
12 critical rules
5 flags referenced in flows

Flow Connections

CoreEnrollmentModificationsAccount LoadInterruptsMake PaymentCUPPEPPPaperlessT2PRewriteExtensionLease Buyout

Requirements

Spec

Drop in a requirement — new or existing — and see where it lands and what it moves before a line is written.

Impact

Ripple

See what a change moves before it ships — pick a flow, rule, or flag and trace its blast radius across every layer.

High-Risk Drift

Bad Words Check Direction

Align logic — API direction is correct. Fix UI to match.

Host-Owned Interrupt & iBubble System

Correct flow docs to attribute interrupts/iBubbles/dedup/CTA-cascade logic exclusively to ally-next-remote-auto-account-details; MFE repos are origination wizards only

CUPP PBZ Effective-Date Check

Add the pbzAlertEffectiveDate-in-past check to isChargedOff(), or confirm the omission is intentional and correct the doc

Payment Server Error Code Coverage

Add bespoke UI copy for these codes, or explicitly confirm the generic fallback is acceptable UX for each

LEM Extension Frontend Ownership

Locate the actual frontend consumer of /lemExtension/* (a repo not yet in scope) or confirm the feature is backend-only/unlaunched

Paperless Preference Submission

Verify against backend whether the mobile 'keep paper' choice is silently dropped; if so this is a bug in paperlessMutation.ts / useAutoPaperlessSettingsMutation.tsx

Interrupt Priority Order

Reconcile the two priority orders against product intent — the same eligible account can see a different interrupt on web vs mobile

Missing Mobile Interrupts (Rewrite / Settlement / Non-EPP)

Confirm whether Rewrite/Settlement/Non-EPP nudges are intentionally web-only; if not, add mobile equivalents

CamAI Eligibility Value Casing

Pin the exact eligibility string the API returns; a casing mismatch silently hides CamAI on one platform

CUPP Eligibility Gate Depth

Add the stop-alert and charged-off gates to the mobile predicate and confirm the intended maxPeriodAllowed upper bound

ERS 8-Gate CUPP Eligibility Not Consumed by Clients

Confirm maxPeriodAllowed/openPTPFlag are pre-filtered upstream by the 8-gate logic; otherwise both clients can offer CUPP to PBZ/STOP/CD/NY accounts ERS itself blocks

AlwaysOn/Outage Interrupt Suppression Web-Only

Decide whether account-load interrupts should be suppressed during a nightly outage on mobile and wire useAutoAlwaysOn into setInterruptValue if so

NYC/NYIPI Suppression Applies to Different Interrupt Sets

Define one canonical NYC/NYIPI-suppressed interrupt set and apply it identically on both clients

Mobile EPP Interrupt Fires for Enrolled, Web for Eligible-to-Enroll

Confirm intended mobile semantics; if it should prompt enrollment like web, gate on isEPPEligible() not enrollment status

Document-Center iBubble Ignores Server Suppression Flag

Make the document-center iBubble consult paperlessEligibility so a customer already suppressed for 180 days doesn't keep seeing the statements-page nudge

Mobile Review&Authorize Fires Paperless Update Unawaited

await/return the acsFetch and surface a distinct error if the paperless update fails while the payment succeeds

Host Text-to-Pay Enrollment CTA Is a Dead Link

Wire the host CTA to the real enrollment entry point or remove it before it ships as a functional-looking link

Web Deceased-Landing Page Missing SCRA Support Number

Add the SCRA branch to the web deceased-account page so servicemember accounts get the correct support line on both platforms

CUPP DPD>60 Suppression Only Hides the Rendered Interrupt

Move the DPD>60/DBO-LBO-LBOAI check into isAutoCUPPEligible so it also blocks the Payment Assistance CTAs and persisted session value, not just the bottom-sheet render

isEppFlowSuccess Inverted Between Host and EPP MFE

Consolidate the two contradictory web copies (or drop the host's sessionStorage heuristic) so the post-submission tracker renders consistently

Mobile EPP Eligibility Skips Termination-Date & Is Case-Sensitive

Add the PBZ/termination date-in-past comparison and normalize status casing on mobile so EPP UI doesn't surface before the effective date

Mobile Rewrite Acceptance Skips acceptRewriteQuote/expireRewriteQuote

Confirm signRewriteQuote alone books a first-time buyer rewrite; if acceptRewriteQuote does booking/expiration work, mobile primary-signer acceptances may be incomplete

Mobile Missing Sibling-Quote Cancellation (extension↔rewrite)

Add sibling-quote cancellation to both mobile accept mutations, mirroring web, so stale quotes aren't left active server-side

Total-Loss / Turned-In Vehicle: Self-Serve vs Hard Block

Decide whether total-loss/turned-in customers self-serve (web) or must call in (mobile) and make both platforms consistent

LBO Counterpart-E-Sign Tracker States Only on Mobile

Port the counterpart-signature status surface to web so co-lessee customers can see they're waiting on the other party

Odometer-Disclosure E-Sign UI Missing on Web

Confirm whether web customers owing only an odometer-statement e-sign have any completion path; if not, this is a functional gap

AAPI_BUS_E053 Maps to Conflicting Guidance

Align the customer action (call dealership vs call Ally) for this code — sending customers to the wrong channel is a real CX bug

11pm Same-Day Cutoff Not Server-Enforced for Generic Payments

Add a blocking server-side cutoff to the generic (non-AON, non-repo) payment path so a direct API call can't bypass the 11pm rule

Future-Payment Window Varies 1–365 Days by Layer

Reconcile web's 180/1-day and mobile's 90-day windows against the API's real 365-day ceiling; a raw API call can schedule far beyond any UI limit

Pending-Payment Cap Value & Enforcement Differ

Pick one server-enforced threshold, eliminate the web-only 12-vs-13 autopay tier mobile doesn't replicate, and wire E014 into a real check

Day-29-31 Autopay Copy Contradicts Across Platforms

Confirm the real downstream behavior for short-month autopay dates and fix whichever client's copy is wrong — the two currently promise opposite outcomes

Direct Pay + Autopay Conflict Is Client-Only

Add a server-side rejection when enrolling autopay while a DPA flag is active so a direct API call can't create a dual-debit conflict

>10 DPD Autopay Restriction Is Client-Only

Enforce the DPD>10 new-enrollment restriction server-side (wire up or replace E089) since it currently exists only in the UI

NSF Exclusion Server-Validated Only in Repo Path

Add an NSF-exclusion check to the generic (non-repo) server-side payment path — a direct API call for a non-repo NSF account currently bypasses this control

Dead NACHA-Return Protection (AAPI_BUS_E103)

Wire up AAPI_BUS_E103 (or confirm retired) — a customer whose account was disabled after an ACH return can re-add the identical routing/account with no rejection anywhere

CUPP paymentsKept Shaw-Path planComplete Drops allSatisfied

Reconcile the two data-source paths: under ff-AAOS-49177-dfs-cam the Shaw path can mark a plan complete even with unsatisfied promise items where the ADV path would not — confirm which is authoritative and align the doc

Extension-Agreement Lifecycle Is NOT Host-Only (document-center re-implements)

Correct flows/extension.md (15,28,37) and cross-layer-matrix.md:167 to state the extension-agreement lifecycle is duplicated across TWO independent Web implementations (account-details PaymentExtensionModal + document-center ReviewAndAcceptAgreementModal), not host-only. Add document-center's four files to Key Files. Maintenance/drift risk — the copies already diverge.

View full drift report