After completing Plaid Link with the transactions and auth products, call the Signal evaluate endpoint with the access_token, account_id, amount, and transaction type (DEBIT)
Parse the Signal response: the scores object contains a customer_initiated_return_risk score and a bank_initiated_return_risk score, each from 0 to 99; higher scores indicate higher return risk
Map scores to your decisioning tiers — for example: score 0-30 approve automatically, 31-60 require additional verification (micro-deposit or document), 61-99 decline or require manual review
If you approve and originate the ACH transfer, call the Signal decision_report endpoint with the decision and your transfer identifier so Plaid can improve its model with outcome feedback
After the transfer settles or returns, call the Signal return_report endpoint with the actual return code if the ACH was returned; this closes the feedback loop and contributes to model accuracy
Store the Signal request ID alongside your transfer record for debugging and regulatory audit purposes
Known gotchas
Signal scores are only meaningful when the account has sufficient transaction history; for newly linked accounts with sparse history, Plaid may return a low-confidence score — treat low-confidence scores conservatively
Signal does not guarantee a transfer will not be returned; it is a risk signal, not a payment guarantee — you remain the ODFI and bear return risk regardless of Signal's output
Calling Signal without subsequently reporting the decision and outcome degrades the model for all Plaid customers; Plaid may enforce reporting requirements in production agreements
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp