POST /signal/evaluate

Use /signal/evaluate to evaluate a planned ACH transaction to get a return risk assessment and additional risk signals.

Before using /signal/evaluate, you must first create a ruleset in the Dashboard under Signal->Rules.

/signal/evaluate can be used with either Signal Transaction Scores or the Balance product. Which product is used will be determined by the ruleset_key that you provide. For more details, see Signal Rules.

Note: This request may have higher latency when using a Balance-only ruleset. This is because Plaid must communicate directly with the institution to request data. Balance-only rulesets may have latency of up to 30 seconds or more; if you encounter errors, you may find it necessary to adjust your timeout period when making requests.

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. These fields are optional, but strongly recommended to increase the accuracy of results when using Signal Transaction Scores. When using a Balance-only Ruleset, these fields are ignored if the Signal Addendum has been signed; if it has not been signed, using these fields will result in an error.

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 evaluating this transaction. You can create a ruleset using the Plaid Dashboard, under Signal->Rules. If not provided, for all new customers as of October 15, 2025, the default ruleset will be used. For existing Signal Transaction Scores customers as of October 15, 2025, by default, no ruleset will be used if the ruleset_key is not provided. For more information, or to opt out of using rulesets, see Signal Rules.

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). When using a Balance-only ruleset, this field is ignored.

is_recurring Boolean No

Use true if the ACH transaction is a part of recurring schedule (for example, a monthly repayment); false otherwise. When using a Balance-only ruleset, this field is ignored.

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 payment method to complete the transaction. When using a Balance-only ruleset, this field is ignored. SAME_DAY_ACH: Same Day ACH by Nacha. The debit transaction is processed and settled on the same day. STANDARD_ACH: Standard ACH by Nacha. MULTIPLE_PAYMENT_METHODS: If there is no default debit rail or there are multiple payment methods. Possible values: SAME_DAY_ACH, STANDARD_ACH, MULTIPLE_PAYMENT_METHODS

user Object No

Details about the end user initiating the transaction (i.e., the account holder). These fields are optional, but strongly recommended to increase the accuracy of results when using Signal Transaction Scores. When using a Balance-only ruleset, if the Signal Addendum has been signed, these fields are ignored; if the Addendum has not been signed, using these fields will result in an error.

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 evaluation attempt - for example, a payment attempt ID. You will use this later to debug this evaluation, and/or report an ACH return, etc. 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.