POST /signal/evaluate

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. If /signal/evaluate is called on the same transaction multiple times within a 24-hour period, cached results may be returned. For more information please refer to the error documentation on Item errors and Link in Update Mode.

Note: This request may take some time to complete if Signal is being added to an existing Item. This is because Plaid must communicate directly with the institution when retrieving the data for the first time.

Servers

Request headers

Name Type Required Description
Content-Type String Yes The media type of the request body.

Default value: "application/json"

Request body fields

Name Type Required Description
device Object No

Details about the end user's device. When calling /signal/evaluate or /signal/processor/evaluate, this field is optional, but strongly recommended to increase the accuracy of Signal results.

device.ip_address String No

The IP address of the device that initiated the transaction

device.user_agent String No

The user agent of the device that initiated the transaction (e.g. "Mozilla/5.0")

client_id String No

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.

ruleset_key String No

The key of the Ruleset to use for this transaction. You can configure a Ruleset using the Signal dashboard located within the Plaid Dashboard. If not provided, no Ruleset will be used. This feature is currently in closed beta; to request access, contact your account manager.

user_present Boolean No

true if the end user is present while initiating the ACH transfer and the endpoint is being called; false otherwise (for example, when the ACH transfer is scheduled and the end user is not present, or you call this endpoint after the ACH transfer but before submitting the Nacha file for ACH processing).

is_recurring Boolean No

true if the ACH transaction is a recurring transaction; false otherwise

client_user_id String No

A unique ID that identifies the end user in your system. This ID is used to correlate requests by a user with multiple Items. Personally identifiable information, such as an email address or phone number, should not be used in the client_user_id.

risk_profile_key String No

Specifying risk_profile_key is deprecated. Please provide ruleset instead.

default_payment_method String No

The default ACH or non-ACH payment method to complete the transaction. SAME_DAY_ACH: Same Day ACH by NACHA. The debit transaction is processed and settled on the same day NEXT_DAY_ACH: Next Day ACH settlement for debit transactions, offered by some payment processors STANDARD_ACH: standard ACH by NACHA REAL_TIME_PAYMENTS: real-time payments such as RTP and FedNow DEBIT_CARD: if the default payment is over debit card networks MULTIPLE_PAYMENT_METHODS: if there is no default debit rail or there are multiple payment methods Possible values: SAME_DAY_ACH, NEXT_DAY_ACH, STANDARD_ACH, REAL_TIME_PAYMENTS, DEBIT_CARD, MULTIPLE_PAYMENT_METHODS

user Object No

Details about the end user initiating the transaction (i.e., the account holder). When calling /signal/evaluate or /signal/processor/evaluate, this field is optional, but strongly recommended to increase the accuracy of Signal results.

user.name Object No

The user's legal name

user.name.family_name String No

The user's family name / surname

user.name.prefix String No

The user's name prefix (e.g. "Mr.")

user.name.given_name String No

The user's given name. If the user has a one-word name, it should be provided in this field.

user.name.middle_name String No

The user's middle name

user.name.suffix String No

The user's name suffix (e.g. "II")

user.email_address String No

The user's email address.

user.address Object No

Data about the components comprising an address.

user.address.region String No

The region or state Example: "NC"

user.address.postal_code String No

The postal code

user.address.country String No

The ISO 3166-1 alpha-2 country code

user.address.street String No

The full street address Example: "564 Main Street, APT 15"

user.address.city String No

The full city name

user.phone_number String No

The user's phone number, in E.164 format: +{countrycode}{number}. For example: "+14151234567"

amount Number Yes

The transaction amount, in USD (e.g. 102.05)

client_transaction_id String Yes

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.

account_id String Yes

The Plaid account_id of the account that is the funding source for the proposed transaction. The account_id is returned in the /accounts/get endpoint as well as the onSuccess callback metadata.

This will return an INVALID_ACCOUNT_ID error if the account has been removed at the bank or if the account_id is no longer valid.

access_token String Yes

The access token associated with the Item data is being requested for.

secret String No

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.

How to start integrating

  1. Add HTTP Task to your workflow definition.
  2. Search for the API you want to integrate with and click on the name.
    • This loads the API reference documentation and prepares the Http request settings.
  3. Click Test request to test run your request to the API and see the API's response.