AutomationFlowsAI & RAG › Intelligent Real-time Financial Fraud Detection and Risk Scoring Engine

Intelligent Real-time Financial Fraud Detection and Risk Scoring Engine

ByCheng Siong Chin @cschin on n8n.io

Automates fraud risk detection for financial transactions by analyzing real-time webhook events through AI-powered scoring. Target audience: fintech companies, payment processors, and banking teams preventing fraud losses. Problem solved: manual fraud checks are reactive and…

Webhook trigger★★★★☆ complexityAI-powered19 nodesAgentOpenAI ChatOutput Parser StructuredHTTP RequestSlackEmail SendGoogle Sheets
AI & RAG Trigger: Webhook Nodes: 19 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #11862 — we link there as the canonical source.

This workflow follows the Agent → Emailsend recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "gsR8g2fQBzoJbx3u",
  "name": "Intelligent Real-Time Financial Fraud Detection and Risk Scoring Engine",
  "tags": [],
  "nodes": [
    {
      "id": "5483fc1c-cc7a-4773-88bf-f1822c8e2d01",
      "name": "Transaction Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -1024,
        96
      ],
      "parameters": {
        "path": "transaction-risk-YOUR_OPENAI_KEY_HERE",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "lastNode"
      },
      "typeVersion": 2.1
    },
    {
      "id": "a4736bd7-ae6c-4a94-b9f2-1461ddd72942",
      "name": "Workflow Configuration",
      "type": "n8n-nodes-base.set",
      "position": [
        -800,
        96
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "highRiskThreshold",
              "type": "number",
              "value": 70
            },
            {
              "id": "id-2",
              "name": "transactionHoldApiUrl",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Transaction hold API endpoint URL__>"
            },
            {
              "id": "id-3",
              "name": "fraudAlertChannel",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Slack channel ID for fraud alerts__>"
            },
            {
              "id": "id-4",
              "name": "fraudTeamEmail",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Fraud team email address__>"
            },
            {
              "id": "id-5",
              "name": "incidentLogSheetId",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Google Sheets ID for incident logging__>"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "0696d85d-0033-46b0-88a7-dc2e054da850",
      "name": "Fraud Detection AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -576,
        96
      ],
      "parameters": {
        "text": "=Transaction Data:\nAmount: {{ $json.amount }}\nCurrency: {{ $json.currency }}\nMerchant: {{ $json.merchant }}\nCustomer ID: {{ $json.customerId }}\nCredit Score: {{ $json.creditScore }}\nTransaction Location: {{ $json.location }}\nTransaction Time: {{ $json.timestamp }}\nPrevious Transaction History: {{ $json.transactionHistory }}\nAccount Age: {{ $json.accountAge }}\nDevice Info: {{ $json.deviceInfo }}",
        "options": {
          "systemMessage": "You are an expert fraud detection AI analyzing financial transactions in real-time.\n\nYour task is to:\n1. Analyze the transaction data including amount, merchant, location, timing, and customer behavior patterns\n2. Evaluate the customer's credit score and transaction history\n3. Identify fraud signals such as:\n   - Unusual transaction amounts or patterns\n   - Geographic anomalies (location mismatches)\n   - Time-based anomalies (unusual hours)\n   - Velocity checks (too many transactions in short time)\n   - Device fingerprint mismatches\n   - Merchant category risks\n4. Calculate a risk score from 0-100 where:\n   - 0-30: Low risk (normal transaction)\n   - 31-69: Medium risk (monitor)\n   - 70-100: High risk (potential fraud)\n5. Provide specific fraud indicators detected\n6. Recommend action (approve, review, or block)\n\nReturn your analysis in the structured JSON format."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 3
    },
    {
      "id": "dd6e4eb4-368b-4c05-97d8-46a762d94784",
      "name": "OpenAI GPT-4",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -576,
        320
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "gpt-4o"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "c3f65ce7-f322-4c2c-ad84-6cb3a753528a",
      "name": "Risk Score Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -440,
        320
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"riskScore\": {\n\t\t\t\"type\": \"number\",\n\t\t\t\"description\": \"Risk score from 0-100\"\n\t\t},\n\t\t\"riskLevel\": {\n\t\t\t\"type\": \"string\",\n\t\t\t\"description\": \"Risk level: low, medium, or high\"\n\t\t},\n\t\t\"fraudIndicators\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"string\"\n\t\t\t},\n\t\t\t\"description\": \"List of specific fraud signals detected\"\n\t\t},\n\t\t\"recommendation\": {\n\t\t\t\"type\": \"string\",\n\t\t\t\"description\": \"Recommended action: approve, review, or block\"\n\t\t},\n\t\t\"reasoning\": {\n\t\t\t\"type\": \"string\",\n\t\t\t\"description\": \"Explanation of the risk assessment\"\n\t\t}\n\t}\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "3f0b6a6c-722f-42d5-a0a4-d59fe079d237",
      "name": "Check Risk Level",
      "type": "n8n-nodes-base.if",
      "position": [
        -224,
        96
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "id-1",
              "operator": {
                "type": "number",
                "operation": "gte"
              },
              "leftValue": "={{ $json.riskScore }}",
              "rightValue": "={{ $('Workflow Configuration').first().json.highRiskThreshold }}"
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "06e417fc-1760-4b70-9490-3463f666b931",
      "name": "Hold Transaction",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        16,
        112
      ],
      "parameters": {
        "url": "={{ $('Workflow Configuration').first().json.transactionHoldApiUrl }}",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "transactionId",
              "value": "={{ $('Transaction Webhook').first().json.transactionId }}"
            },
            {
              "name": "action",
              "value": "HOLD"
            },
            {
              "name": "riskScore",
              "value": "={{ $json.riskScore }}"
            },
            {
              "name": "reason",
              "value": "={{ $json.reasoning }}"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "35e4d17c-e9de-4597-a49b-7c95cc63190c",
      "name": "Send High Risk Alert",
      "type": "n8n-nodes-base.slack",
      "position": [
        240,
        112
      ],
      "parameters": {
        "text": "=\ud83d\udea8 *HIGH RISK TRANSACTION DETECTED*\n\n*Transaction ID:* {{ $('Transaction Webhook').first().json.transactionId }}\n*Risk Score:* {{ $json.riskScore }}/100\n*Customer ID:* {{ $('Transaction Webhook').first().json.customerId }}\n*Amount:* {{ $('Transaction Webhook').first().json.amount }} {{ $('Transaction Webhook').first().json.currency }}\n*Merchant:* {{ $('Transaction Webhook').first().json.merchant }}\n\n*Fraud Indicators:*\n{{ $json.fraudIndicators.join(\"\\n\") }}\n\n*Recommendation:* {{ $json.recommendation }}\n*Reasoning:* {{ $json.reasoning }}\n\n\u26a0\ufe0f Transaction has been HELD for review.",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Workflow Configuration').first().json.fraudAlertChannel }}"
        },
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.4
    },
    {
      "id": "4c9e6769-74c5-42f9-9626-52055f143060",
      "name": "Email Fraud Team",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        464,
        112
      ],
      "parameters": {
        "html": "=<h2 style=\"color: #d32f2f;\">\ud83d\udea8 HIGH RISK TRANSACTION DETECTED</h2>\n\n<p><strong>A potentially fraudulent transaction has been flagged and held for review.</strong></p>\n\n<h3>Transaction Details:</h3>\n<ul>\n  <li><strong>Transaction ID:</strong> {{ $('Transaction Webhook').first().json.transactionId }}</li>\n  <li><strong>Customer ID:</strong> {{ $('Transaction Webhook').first().json.customerId }}</li>\n  <li><strong>Amount:</strong> {{ $('Transaction Webhook').first().json.amount }} {{ $('Transaction Webhook').first().json.currency }}</li>\n  <li><strong>Merchant:</strong> {{ $('Transaction Webhook').first().json.merchant }}</li>\n  <li><strong>Location:</strong> {{ $('Transaction Webhook').first().json.location }}</li>\n  <li><strong>Timestamp:</strong> {{ $('Transaction Webhook').first().json.timestamp }}</li>\n</ul>\n\n<h3>Risk Assessment:</h3>\n<ul>\n  <li><strong>Risk Score:</strong> {{ $json.riskScore }}/100</li>\n  <li><strong>Risk Level:</strong> {{ $json.riskLevel }}</li>\n  <li><strong>Recommendation:</strong> {{ $json.recommendation }}</li>\n</ul>\n\n<h3>Fraud Indicators Detected:</h3>\n<ul>\n  {{ $json.fraudIndicators.map(indicator => `<li>${indicator}</li>`).join(\"\") }}\n</ul>\n\n<h3>AI Analysis:</h3>\n<p>{{ $json.reasoning }}</p>\n\n<p style=\"color: #d32f2f;\"><strong>\u26a0\ufe0f The transaction has been automatically HELD. Please review immediately.</strong></p>",
        "options": {},
        "subject": "=URGENT: High Risk Transaction Alert - ID {{ $('Transaction Webhook').first().json.transactionId }}",
        "toEmail": "={{ $('Workflow Configuration').first().json.fraudTeamEmail }}"
      },
      "typeVersion": 2.1
    },
    {
      "id": "a9c65075-c614-4481-8484-2ac2c9288def",
      "name": "Log High Risk Incident",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        912,
        112
      ],
      "parameters": {
        "columns": {
          "value": {
            "amount": "={{ $json.amount }}",
            "status": "={{ $json.status }}",
            "currency": "={{ $json.currency }}",
            "merchant": "={{ $json.merchant }}",
            "reasoning": "={{ $json.reasoning }}",
            "riskLevel": "={{ $json.riskLevel }}",
            "riskScore": "={{ $json.riskScore }}",
            "customerId": "={{ $json.customerId }}",
            "logTimestamp": "={{ $json.logTimestamp }}",
            "transactionId": "={{ $json.transactionId }}",
            "recommendation": "={{ $json.recommendation }}",
            "fraudIndicators": "={{ $json.fraudIndicators }}"
          },
          "schema": [
            {
              "id": "logTimestamp",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "logTimestamp",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "transactionId",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "transactionId",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "customerId",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "customerId",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "amount",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "amount",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "currency",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "currency",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "merchant",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "merchant",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "riskScore",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "riskScore",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "riskLevel",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "riskLevel",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "fraudIndicators",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "fraudIndicators",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "recommendation",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "recommendation",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "reasoning",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "reasoning",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "status",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [
            "logTimestamp",
            "transactionId",
            "customerId",
            "amount",
            "currency",
            "merchant",
            "riskScore",
            "riskLevel",
            "fraudIndicators",
            "recommendation",
            "reasoning",
            "status"
          ]
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "High Risk Incidents"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Workflow Configuration').first().json.incidentLogSheetId }}"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "056b21e8-4144-4117-b99f-ed2eb02f7da2",
      "name": "Log Low Risk Transaction",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        0,
        352
      ],
      "parameters": {
        "columns": {
          "value": {
            "amount": "={{ $('Transaction Webhook').first().json.amount }}",
            "status": "APPROVED",
            "currency": "={{ $('Transaction Webhook').first().json.currency }}",
            "merchant": "={{ $('Transaction Webhook').first().json.merchant }}",
            "riskLevel": "={{ $json.riskLevel }}",
            "riskScore": "={{ $json.riskScore }}",
            "timestamp": "={{ $now.toISO() }}",
            "customerId": "={{ $('Transaction Webhook').first().json.customerId }}",
            "transactionId": "={{ $('Transaction Webhook').first().json.transactionId }}"
          },
          "schema": [
            {
              "id": "timestamp",
              "required": false,
              "displayName": "timestamp",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "transactionId",
              "required": false,
              "displayName": "transactionId",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "customerId",
              "required": false,
              "displayName": "customerId",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "amount",
              "required": false,
              "displayName": "amount",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "currency",
              "required": false,
              "displayName": "currency",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "merchant",
              "required": false,
              "displayName": "merchant",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "riskScore",
              "required": false,
              "displayName": "riskScore",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "riskLevel",
              "required": false,
              "displayName": "riskLevel",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "status",
              "required": false,
              "displayName": "status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "transactionId"
          ]
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "Low Risk Transactions"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Workflow Configuration').first().json.incidentLogSheetId }}"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "d3d62b5d-0004-4b75-86ed-b6eb34aae684",
      "name": "Prepare Incident Log Data",
      "type": "n8n-nodes-base.set",
      "position": [
        688,
        112
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "logTimestamp",
              "type": "string",
              "value": "={{ $now.toISO() }}"
            },
            {
              "id": "id-2",
              "name": "transactionId",
              "type": "string",
              "value": "={{ $('Transaction Webhook').first().json.transactionId }}"
            },
            {
              "id": "id-3",
              "name": "customerId",
              "type": "string",
              "value": "={{ $('Transaction Webhook').first().json.customerId }}"
            },
            {
              "id": "id-4",
              "name": "amount",
              "type": "number",
              "value": "={{ $('Transaction Webhook').first().json.amount }}"
            },
            {
              "id": "id-5",
              "name": "currency",
              "type": "string",
              "value": "={{ $('Transaction Webhook').first().json.currency }}"
            },
            {
              "id": "id-6",
              "name": "merchant",
              "type": "string",
              "value": "={{ $('Transaction Webhook').first().json.merchant }}"
            },
            {
              "id": "id-7",
              "name": "status",
              "type": "string",
              "value": "HELD"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "2d685b51-5dce-48d8-8966-ae5e659bd17c",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1056,
        -272
      ],
      "parameters": {
        "width": 752,
        "height": 208,
        "content": "## How It Works\nAutomates fraud risk detection for financial transactions by analyzing real-time webhook events through AI-powered scoring. Target audience: fintech companies, payment processors, and banking teams preventing fraud losses. Problem solved: manual fraud checks are reactive and slow; automated detection catches suspicious transactions instantly. Workflow receives transactions via webhook, configures processing parameters, runs OpenAI GPT-4 fraud analysis, calculates risk scores, branches on risk level, holds high-risk transactions, alerts fraud teams, logs incidents, and documents evidence for compliance investigations."
      },
      "typeVersion": 1
    },
    {
      "id": "c54142a4-beb4-48d5-9f07-c72f7ab93eff",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -272,
        -256
      ],
      "parameters": {
        "color": 3,
        "width": 416,
        "height": 176,
        "content": "## Setup Steps\n1. Configure webhook endpoint for transaction ingestion. \n2. Set OpenAI API key and fraud detection prompts. \n3. Connect Google Sheets for incident logging. \n4. Enable email alerts to fraud team distribution list. \n5. Map risk thresholds (high/low)."
      },
      "typeVersion": 1
    },
    {
      "id": "f6e3d558-2de5-4b1c-acb1-bb64120e09b1",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        192,
        -288
      ],
      "parameters": {
        "color": 4,
        "width": 368,
        "height": 224,
        "content": "## Prerequisites\nOpenAI API key, webhook-capable transaction source, Gmail for alerts, Google Sheets access, incident tracking database.\n\n## Use Cases\nPayment processors detecting card fraud, fintech platforms catching account takeovers "
      },
      "typeVersion": 1
    },
    {
      "id": "1482e987-8201-4d13-809d-5617614e219e",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        608,
        -272
      ],
      "parameters": {
        "color": 6,
        "width": 336,
        "height": 208,
        "content": "## Customization\nAdjust risk thresholds and scoring logic. Add phone/SMS alerts for urgency.  \n\n## Benefits\nDetects fraud within seconds, reduces financial losses by up to 90% "
      },
      "typeVersion": 1
    },
    {
      "id": "d6bc6edb-4901-4200-bd0e-aa7d5e3f59b2",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1072,
        -48
      ],
      "parameters": {
        "color": 7,
        "width": 784,
        "height": 528,
        "content": "## Detect & Score\n**What:** Webhook receives transactions; OpenAI GPT-4 analyzes fraud indicators and generates risk scores.\n**Why:** Real-time AI analysis catches anomalies instantly; risk scores enable automated decisions."
      },
      "typeVersion": 1
    },
    {
      "id": "8186187e-99c4-400f-8ccf-dc4cba1aeb30",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -272,
        -48
      ],
      "parameters": {
        "color": 7,
        "width": 672,
        "height": 560,
        "content": "\n## Risk-YOUR_OPENAI_KEY_HERE Routing\n**What:** Conditional logic branches, high-risk transactions held and alerted; low-risk logged automatically.\n**Why:** Tiered response prevents fraud while minimizing false positives "
      },
      "typeVersion": 1
    },
    {
      "id": "55251d70-fcf4-4407-a19f-97881b4e7ec6",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        416,
        -48
      ],
      "parameters": {
        "color": 7,
        "width": 672,
        "height": 560,
        "content": "## Escalation & Documentation\n**What:** High-risk alerts sent to fraud team; all incidents logged to Google Sheets and incident database.\n**Why:** Immediate escalation enables fast investigation; "
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "1b7c16c9-4bad-4bb2-86f2-73b58987889b",
  "connections": {
    "OpenAI GPT-4": {
      "ai_languageModel": [
        [
          {
            "node": "Fraud Detection AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Check Risk Level": {
      "main": [
        [
          {
            "node": "Hold Transaction",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Log Low Risk Transaction",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Email Fraud Team": {
      "main": [
        [
          {
            "node": "Prepare Incident Log Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Hold Transaction": {
      "main": [
        [
          {
            "node": "Send High Risk Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transaction Webhook": {
      "main": [
        [
          {
            "node": "Workflow Configuration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send High Risk Alert": {
      "main": [
        [
          {
            "node": "Email Fraud Team",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Workflow Configuration": {
      "main": [
        [
          {
            "node": "Fraud Detection AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fraud Detection AI Agent": {
      "main": [
        [
          {
            "node": "Check Risk Level",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Risk Score Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Fraud Detection AI Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Incident Log Data": {
      "main": [
        [
          {
            "node": "Log High Risk Incident",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Automates fraud risk detection for financial transactions by analyzing real-time webhook events through AI-powered scoring. Target audience: fintech companies, payment processors, and banking teams preventing fraud losses. Problem solved: manual fraud checks are reactive and…

Source: https://n8n.io/workflows/11862/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This n8n workflow orchestrates a powerful suite of AI Agents and automations to manage and optimize various aspects of an e-commerce operation, particularly for platforms like Shopify. It leverages La

Google Sheets, HTTP Request, Slack +10
AI & RAG

This workflow transforms natural language queries into research reports through a five-stage AI pipeline. When triggered via webhook (typically from Google Sheets using the companion [](https://gist.g

Redis, Agent, Output Parser Structured +7
AI & RAG

This workflow automates customer feedback processing by analyzing sentiment, identifying key issues, generating personalized responses, and escalating critical cases to support teams when required. De

Redis, Postgres, Agent +7
AI & RAG

This workflow automates veterinary clinic operations and client communications for animal hospitals and veterinary practices managing appointments, inventory, and patient care. It solves the dual chal

HTTP Request, Agent, OpenAI Chat +4
AI & RAG

This workflow automates the creation and publishing of LinkedIn posts with AI-generated content and human approval via Slack, using Google Sheets, OpenAI (GPT-4), Slack Interactive Messages, and the L

Output Parser Structured, OpenAI Chat, Google Sheets Trigger +4