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
- https://production.plaid.com
- https://sandbox.plaid.com
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 |
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 |
user_present |
Boolean | No |
|
is_recurring |
Boolean | No |
Use |
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 |
risk_profile_key |
String | No |
Specifying |
default_payment_method |
String | No |
The default ACH payment method to complete the transaction. When using a Balance-only ruleset, this field is ignored.
|
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: |
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: |
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. |
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 This will return an |
access_token |
String | Yes |
The access token associated with the Item data is being requested for. |
secret |
String | No |
Your Plaid API |
How to start integrating
- Add HTTP Task to your workflow definition.
- 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.
- Click Test request to test run your request to the API and see the API's response.