signalEvaluate
Use /signal/evaluate to evaluate a planned ACH transaction to get a return risk assessment (such as a risk score and risk tier) and additional risk signals.
In order to obtain a valid score for an ACH transaction, Plaid must have an access token for the account, and the Item must be healthy (receiving product updates) or have recently been in a healthy state. If the transaction does not meet eligibility requirements, an error will be returned corresponding to the underlying cause.
Authorization
PLAID-CLIENT-ID PLAID-SECRET Plaid-Version In: header
In: header
In: header
Request Body
application/json
SignalEvaluateRequest defines the request schema for /signal/evaluate
Your Plaid API client_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.
Your Plaid API secret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.
The access token associated with the Item data is being requested for.
The account_id of the account whose verification status is to be modified
The unique ID that you would like to use to refer to this transaction. For your convenience mapping your internal data, you could use your internal ID/identifier for this transaction. The max length for this field is 36 characters.
length <= 36The transaction amount, in USD (e.g. 102.05)
A unique ID that identifies the end user in your system. This ID is used to correlate requests by a user with multiple Items. The max length for this field is 36 characters.
length <= 36Details about the end user initiating the transaction (i.e., the account holder).
Details about the end user's device
Response Body
application/json
application/json
curl -X POST "https://example.com/signal/evaluate" \ -H "Content-Type: application/json" \ -d '{ "access_token": "string", "account_id": "string", "client_transaction_id": "string", "amount": 0 }'{ "scores": { "customer_initiated_return_risk": { "score": 9, "risk_tier": 1 }, "bank_initiated_return_risk": { "score": 72, "risk_tier": 7 } }, "core_attributes": { "unauthorized_transactions_count_7d": 0, "unauthorized_transactions_count_30d": 0, "unauthorized_transactions_count_60d": 0, "unauthorized_transactions_count_90d": 0, "nsf_overdraft_transactions_count_7d": 1, "nsf_overdraft_transactions_count_30d": 1, "nsf_overdraft_transactions_count_60d": 2, "nsf_overdraft_transactions_count_90d": 2, "days_since_first_plaid_connection": 510, "plaid_connections_count_7d": 6, "plaid_connections_count_30d": 7, "total_plaid_connections_count": 15, "is_savings_or_money_market_account": false, "total_credit_transactions_amount_10d": 507.04, "total_debit_transactions_amount_10d": 590.14, "p50_credit_transactions_amount_28d": 46.79, "p50_debit_transactions_amount_28d": 75, "p95_credit_transactions_amount_28d": 155.95, "p95_debit_transactions_amount_28d": 799.59, "days_with_negative_balance_count_90d": 0, "p90_eod_balance_30d": 555.71, "p90_eod_balance_60d": 449.96, "p90_eod_balance_90d": 434.38, "p10_eod_balance_30d": 320.44, "p10_eod_balance_60d": 320.46, "p10_eod_balance_90d": 320.23, "available_balance": 420.22, "current_balance": 476, "balance_last_updated": "2021-02-25T09:18:21Z", "phone_change_count_28d": 0, "phone_change_count_90d": 0, "email_change_count_28d": 0, "email_change_count_90d": 0, "address_change_count_28d": 0, "address_change_count_90d": 0 }, "request_id": "mdqfuVxeoza6mhu"}incomeVerificationCreate POST
`/income/verification/create` begins the income verification process by returning an `income_verification_id`. You can then provide the `income_verification_id` to `/link/token/create` under the `income_verification` parameter in order to create a Link instance that will prompt the user to go through the income verification flow. Plaid will fire an `INCOME` webhook once the user completes the Payroll Income flow, or when the uploaded documents in the Document Income flow have finished processing.
signalDecisionReport POST
After calling `/signal/evaluate`, call `/signal/decision/report` to report whether the transaction was initiated. This endpoint will return an `INVALID_REQUEST` error if called a second time with a different value for `initiated`.

