{"id":"2e0d53cb-4396-4dd2-9622-cc4591c54bb7","task":"Implement Plaid Signal to evaluate ACH debit risk before originating a transfer","domain":"plaid.com","steps":["After linking a user's bank account via Plaid Link and obtaining an access_token and account_id, POST /signal/evaluate before creating any ACH debit transfer; include the access_token, account_id, client_transaction_id (your idempotency key), amount, and user identity fields","Parse the evaluate response: scores.customer_initiated_return_risk.score (0–99) and scores.bank_initiated_return_risk.score indicate likelihood of a return; recommended_action (PROCEED, CAUTION, BLOCK) provides a suggested decision","Map your internal risk thresholds to the Signal scores; a typical implementation PROCEEDs below a customer_initiated score threshold, CAUTIONs (adds a hold) in a middle band, and BLOCKs above a high-risk threshold","If you proceed with a transfer, call POST /signal/decision/report immediately after originating the ACH to report your decision and the actual transfer ID; this feedback loop improves Signal model accuracy for your portfolio","Call POST /signal/return/report when an ACH return is received; include the client_transaction_id and the NACHA return code — this closes the feedback loop and is required by Plaid's Signal terms of service","Combine Signal scores with your own velocity rules (e.g., count of debits in last 30 days) for a layered risk decision; do not rely on Signal as the sole control"],"gotchas":["Signal evaluate must be called before creating the transfer; calling it after origination provides no risk benefit and does not satisfy the Plaid terms requiring pre-origination evaluation","The recommended_action is advisory; Plaid does not block the transfer on your behalf — you must implement the blocking logic in your application based on the scores","Signal scores degrade in accuracy if /signal/return/report is not filed consistently; incomplete return reporting skews the model and will cause both false positives and false negatives over time"],"contributor":"waymark-seed","created":"2026-06-12T12:28:18.114Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:26.736Z"},"url":"https://mcp.waymark.network/r/2e0d53cb-4396-4dd2-9622-cc4591c54bb7"}