AutomationFlowsWeb Scraping › Racepass Kyc Workflow

Racepass Kyc Workflow

RacePass KYC Workflow. Uses httpRequest. Webhook trigger; 7 nodes.

Webhook trigger★★★★☆ complexity7 nodesHTTP Request
Web Scraping Trigger: Webhook Nodes: 7 Complexity: ★★★★☆ Added:

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
{
  "name": "RacePass KYC Workflow",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "kyc",
        "responseMode": "responseNode",
        "options": {
          "responseHeaders": {
            "entries": [
              {
                "name": "Access-Control-Allow-Origin",
                "value": "*"
              }
            ]
          }
        }
      },
      "id": "webhook-node",
      "name": "Webhook - Receive KYC",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        250,
        300
      ]
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict"
          },
          "conditions": [
            {
              "id": "condition-aadhaar",
              "leftValue": "={{ $json.kycData.aadhaarNumber.length }}",
              "rightValue": 12,
              "operator": {
                "type": "number",
                "operation": "equals"
              }
            },
            {
              "id": "condition-wallet",
              "leftValue": "={{ $json.walletAddress.startsWith('0x') }}",
              "rightValue": true,
              "operator": {
                "type": "boolean",
                "operation": "true"
              }
            },
            {
              "id": "condition-name",
              "leftValue": "={{ $json.kycData.fullName.length }}",
              "rightValue": 0,
              "operator": {
                "type": "number",
                "operation": "gt"
              }
            },
            {
              "id": "condition-dob",
              "leftValue": "={{ $json.kycData.dateOfBirth.length }}",
              "rightValue": 0,
              "operator": {
                "type": "number",
                "operation": "gt"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "id": "if-validate",
      "name": "IF - Validate KYC",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2,
      "position": [
        470,
        300
      ]
    },
    {
      "parameters": {
        "jsCode": "const input = $input.first().json;\n\n// Calculate age from DOB\nconst dob = new Date(input.kycData.dateOfBirth);\nconst now = new Date();\nlet age = now.getFullYear() - dob.getFullYear();\nconst m = now.getMonth() - dob.getMonth();\nif (m < 0 || (m === 0 && now.getDate() < dob.getDate())) age--;\n\nreturn [{\n  json: {\n    ...input,\n    computedAge: age,\n    isAdult: age >= 18,\n    ageCategory: age >= 21 ? '21+' : age >= 18 ? '18+' : 'under-18',\n    processedAt: new Date().toISOString()\n  }\n}];"
      },
      "id": "code-enrich",
      "name": "Code - Enrich Data",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        690,
        200
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "http://localhost:3001/api/kyc/process",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"walletAddress\": \"{{ $json.walletAddress }}\",\n  \"kycData\": {{ JSON.stringify($json.kycData) }},\n  \"kycStatus\": \"approved\",\n  \"computedAge\": {{ $json.computedAge }},\n  \"isAdult\": {{ $json.isAdult }},\n  \"ageCategory\": \"{{ $json.ageCategory }}\"\n}",
        "options": {
          "timeout": 10000
        }
      },
      "id": "http-backend",
      "name": "HTTP - Call Backend",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        910,
        200
      ]
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={\n  \"success\": true,\n  \"message\": \"KYC verified and credential created via n8n\",\n  \"data\": {{ JSON.stringify($json.data || $json) }},\n  \"processedVia\": \"n8n\"\n}",
        "options": {}
      },
      "id": "respond-success",
      "name": "Respond - Success",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.1,
      "position": [
        1130,
        200
      ]
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "{\n  \"success\": false,\n  \"message\": \"KYC validation failed. Please check your data.\",\n  \"errors\": [\n    \"Aadhaar must be exactly 12 digits\",\n    \"Wallet address must start with 0x\",\n    \"Full name is required\",\n    \"Date of birth is required\"\n  ],\n  \"processedVia\": \"n8n\"\n}",
        "options": {
          "responseCode": 400
        }
      },
      "id": "respond-failure",
      "name": "Respond - Validation Failed",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.1,
      "position": [
        690,
        450
      ]
    },
    {
      "parameters": {
        "content": "## RacePass KYC Workflow\n\n### Flow:\n1. **Webhook** receives KYC from frontend\n2. **IF** validates Aadhaar (12 digits), wallet (0x), name, DOB\n3. **Code** enriches data: calculates age, adult status\n4. **HTTP** calls backend to create credential\n5. **Respond** returns success/failure to frontend\n\n### Webhook URL:\n`POST http://localhost:5678/webhook/kyc`\n\n### Body:\n```json\n{\n  \"walletAddress\": \"0x...\",\n  \"kycData\": {\n    \"fullName\": \"...\",\n    \"dateOfBirth\": \"YYYY-MM-DD\",\n    \"aadhaarNumber\": \"123456789012\"\n  }\n}\n```\n\n### Make sure:\n- Backend running on port 3001\n- This workflow is **ACTIVATED**",
        "height": 420,
        "width": 360
      },
      "id": "sticky-note",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        240,
        0
      ]
    }
  ],
  "connections": {
    "Webhook - Receive KYC": {
      "main": [
        [
          {
            "node": "IF - Validate KYC",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF - Validate KYC": {
      "main": [
        [
          {
            "node": "Code - Enrich Data",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Respond - Validation Failed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code - Enrich Data": {
      "main": [
        [
          {
            "node": "HTTP - Call Backend",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP - Call Backend": {
      "main": [
        [
          {
            "node": "Respond - Success",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "staticData": null,
  "tags": [],
  "triggerCount": 0
}
Pro

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

About this workflow

RacePass KYC Workflow. Uses httpRequest. Webhook trigger; 7 nodes.

Source: https://github.com/anushkaa2704/RacePass/blob/2c9b6504f98207f88483be4be6977a6c447a1d27/n8n/racepass-workflow.json — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

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

Web Scraping

This n8n template provides enterprise-level version control for your workflows using GitHub integration. Stop losing hours to broken workflows and manual exports – get proper commit history, visual di

n8n, Execute Workflow Trigger, HTTP Request +1
Web Scraping

This flow creates dummy files for every item added in your *Arrs (Radarr/Sonarr) with the tag .

HTTP Request, Ssh
Web Scraping

eek-Go v2 (Batch-Then-Review). Uses httpRequest. Webhook trigger; 75 nodes.

HTTP Request
Web Scraping

This workflow receives webhook requests from a content calendar and uses the X API v2 to publish text posts, threads, image/video posts, and polls, as well as delete existing posts and run a credentia

HTTP Request
Web Scraping

This workflow acts as a central API gateway for all technical indicator agents in the Binance Spot Market Quant AI system. It listens for incoming webhook requests and dynamically routes them to the c

HTTP Request