{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/plaid/main/json-schema/plaid-processor-signal-evaluate-request-schema.json", "title": "ProcessorSignalEvaluateRequest", "description": "ProcessorSignalEvaluateRequest defines the request schema for `/processor/signal/evaluate`", "x-generated": "2026-09-23", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/plaid-plaid-api-openapi.yml#/components/schemas/ProcessorSignalEvaluateRequest", "type": "object", "properties": { "client_id": { "$ref": "#/$defs/APIClientID" }, "secret": { "$ref": "#/$defs/APISecret" }, "processor_token": { "$ref": "#/$defs/ProcessorToken" }, "client_transaction_id": { "type": "string", "description": "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.", "minLength": 1, "maxLength": 36 }, "amount": { "type": "number", "format": "double", "description": "The transaction amount, in USD (e.g. `102.05`)" }, "user_present": { "type": [ "boolean", "null" ], "description": "`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)." }, "client_user_id": { "type": "string", "description": "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`." }, "is_recurring": { "type": [ "boolean", "null" ], "description": "**true** if the ACH transaction is a recurring transaction; **false** otherwise." }, "default_payment_method": { "type": [ "string", "null" ], "description": "The default ACH payment method to complete the transaction.\n\n`SAME_DAY_ACH`: Same Day ACH by Nacha. The debit transaction is processed and settled on the same day.\n\n`STANDARD_ACH`: Standard ACH by Nacha.\n\n`MULTIPLE_PAYMENT_METHODS`: If there is no default debit rail or there are multiple payment methods.\n\nPossible values: `SAME_DAY_ACH`, `STANDARD_ACH`, `MULTIPLE_PAYMENT_METHODS`" }, "user": { "$ref": "#/$defs/SignalUser" }, "device": { "$ref": "#/$defs/SignalDevice" }, "ruleset_key": { "type": [ "string", "null" ], "description": "The key of the ruleset to use for this transaction. You can configure a ruleset using the Plaid Dashboard, under [Signal->Rules](https://dashboard.plaid.com/signal/risk-profiles). If not provided, for customers who began using Signal Transaction Scores before October 15, 2025, by default, no ruleset will be used; for customers who began using Signal Transaction Scores after that date, or for Balance customers, the `default` ruleset will be used. For more details, or to opt out of using a ruleset, see [Signal Rules](https://plaid.com/docs/signal/signal-rules/)." } }, "required": [ "processor_token", "client_transaction_id", "amount" ], "$defs": { "APIClientID": { "title": "ClientID", "type": "string", "description": "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." }, "APISecret": { "title": "APISecret", "type": "string", "description": "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." }, "ProcessorToken": { "title": "ProcessorToken", "type": "string", "description": "The processor token obtained from the Plaid integration partner. Processor tokens are in the format: `processor--`" }, "SignalAddressData": { "title": "AddressData", "type": [ "object", "null" ], "additionalProperties": true, "description": "Data about the components comprising an address.", "properties": { "city": { "type": "string", "description": "The full city name" }, "region": { "type": [ "string", "null" ], "description": "The region or state\nExample: `\"NC\"`" }, "street": { "type": "string", "description": "The full street address\nExample: `\"564 Main Street, APT 15\"`" }, "postal_code": { "type": [ "string", "null" ], "description": "The postal code" }, "country": { "type": [ "string", "null" ], "description": "The ISO 3166-1 alpha-2 country code" } } }, "SignalDevice": { "title": "SignalEvaluateDevice", "type": "object", "description": "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.", "properties": { "ip_address": { "type": [ "string", "null" ], "description": "The IP address of the device that initiated the transaction" }, "user_agent": { "type": [ "string", "null" ], "description": "The user agent of the device that initiated the transaction (e.g. \"Mozilla/5.0\")" } } }, "SignalPersonName": { "title": "SignalPersonName", "type": [ "object", "null" ], "description": "The user's legal name", "properties": { "prefix": { "type": [ "string", "null" ], "description": "The user's name prefix (e.g. \"Mr.\")" }, "given_name": { "type": [ "string", "null" ], "description": "The user's given name. If the user has a one-word name, it should be provided in this field." }, "middle_name": { "type": [ "string", "null" ], "description": "The user's middle name" }, "family_name": { "type": [ "string", "null" ], "description": "The user's family name / surname" }, "suffix": { "type": [ "string", "null" ], "description": "The user's name suffix (e.g. \"II\")" } } }, "SignalUser": { "title": "SignalUser", "type": "object", "description": "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.", "properties": { "name": { "$ref": "#/$defs/SignalPersonName" }, "phone_number": { "type": [ "string", "null" ], "description": "The user's phone number, in E.164 format: +{countrycode}{number}. For example: \"+14151234567\"" }, "email_address": { "type": [ "string", "null" ], "description": "The user's email address." }, "address": { "$ref": "#/$defs/SignalAddressData" } } } } }