AutomationFlowsWeb Scraping › Automate Multi-bank Transaction Sync & Reporting with Gocardless & Maybe Finance

Automate Multi-bank Transaction Sync & Reporting with Gocardless & Maybe Finance

ByGiannis Kotsakiachidis @gianniskotsas on n8n.io

Freelancers, founders, households, and side-hustlers who work with several bank accounts but want one, always-up-to-date budget inside Maybe Finance—no more CSV exports or copy-paste. Schedule Trigger (cron) fires every Monday 📅 (switch to Manual Trigger while testing) Get…

Cron / scheduled trigger★★★★☆ complexity22 nodesHTTP RequestN8N Nodes ResendItem Lists
Web Scraping Trigger: Cron / scheduled Nodes: 22 Complexity: ★★★★☆ Added:

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

This workflow follows the HTTP Request → Itemlists 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": "tY32QDTdup1LAwR1",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Maybe Finance example",
  "tags": [],
  "nodes": [
    {
      "id": "c7580a81-6327-4da4-b01a-9afe9d9d3b22",
      "name": "Get access token",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -820,
        -80
      ],
      "parameters": {
        "url": "https://bankaccountdata.gocardless.com/api/v2/token/new/",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "secret_id"
            },
            {
              "name": "secret_key"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "accept",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "8c0c26ef-083a-4028-a866-2b3857dc47c3",
      "name": "Get Revolut Pro transactions",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -400,
        -180
      ],
      "parameters": {
        "url": "https://bankaccountdata.gocardless.com/api/v2/accounts/<account_id>/transactions",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "date_from",
              "value": "={{ DateTime.now().startOf('week').minus({days: 7}).toFormat('yyyy-MM-dd') }}"
            },
            {
              "name": "date_to",
              "value": "={{ DateTime.now().startOf('week').minus({days: 1}).toFormat('yyyy-MM-dd') }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "accept",
              "value": "application/json"
            },
            {
              "name": "Authorization",
              "value": "=Bearer {{ $json.access }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "61fb2bc6-abf0-469d-9ade-ef7aec5429fe",
      "name": "Get Revolut Personal transactions",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -400,
        60
      ],
      "parameters": {
        "url": "https://bankaccountdata.gocardless.com/api/v2/accounts/<account_id>/transactions",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "date_from",
              "value": "={{ DateTime.now().startOf('week').minus({days: 7}).toFormat('yyyy-MM-dd') }}"
            },
            {
              "name": "date_to",
              "value": "={{ DateTime.now().startOf('week').minus({days: 1}).toFormat('yyyy-MM-dd') }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "accept",
              "value": "application/json"
            },
            {
              "name": "Authorization",
              "value": "=Bearer {{ $json.access }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "878df10c-1704-48f5-b1a2-ac9a4ff4a5f2",
      "name": "Get accounts id from Maybe",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -480,
        -540
      ],
      "parameters": {
        "url": "http://localhost:3005/api/v1/accounts",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "X-Api-Key"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "524015a4-4d7b-4836-b8da-125f995d9ca4",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -120,
        -680
      ],
      "parameters": {
        "width": 1440,
        "height": 340,
        "content": "## Run once - Configuration\nAfter getting the access token, follow the GoCardless steps from their docs and run these nodes accordingly in the right order.\nGoCardless docs: https://developer.gocardless.com/bank-account-data/quick-start-guide"
      },
      "typeVersion": 1
    },
    {
      "id": "cda3a7d7-f434-4d64-bdc9-0f9d6c04b5a3",
      "name": "Step 2 - Get institution id",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        0,
        -540
      ],
      "parameters": {
        "url": "https://bankaccountdata.gocardless.com/api/v2/institutions",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "country",
              "value": "nl"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "accept",
              "value": "application/json"
            },
            {
              "name": "Authorization",
              "value": "=Bearer {{ $json.access }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "96ea05dd-27a5-41b7-8049-ef0be4036662",
      "name": "Step 5 - Get account id",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1100,
        -540
      ],
      "parameters": {
        "url": "https://bankaccountdata.gocardless.com/api/v2/requisitions/96bed7e3-a275-48fc-8fed-4d97ca1d452f/",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "accept",
              "value": "application/json"
            },
            {
              "name": "Authorization",
              "value": "=Bearer {{ $json.access }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "5367c00b-97f5-4002-a7b3-b2bc111b63c0",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -980,
        -680
      ],
      "parameters": {
        "color": 6,
        "width": 280,
        "height": 340,
        "content": "## Set up weekly workflow\nAfter linking the bank accounts, you can request access token (lasts 24h) and use that to request the transactions from all your bank accounts. You have 4 requests per bank account per day before you hit your rate limit. Use them wisely."
      },
      "typeVersion": 1
    },
    {
      "id": "ba89f635-926c-4750-a862-b5e335852cc0",
      "name": "Create transactions to Maybe",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        840,
        -80
      ],
      "parameters": {
        "url": "http://localhost/api/v1/transactions/",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"transaction\": {\n    \"account_id\": \"{{ $json.transaction.account_id }}\",\n    \"name\": \"{{ $json.transaction.name }}\",\n    \"date\": \"{{ $json.transaction.date }}\",\n    \"amount\": {{ $json.transaction.amount }},\n    \"currency\": \"{{ $json.transaction.currency }}\",\n    \"nature\": \"{{ $json.transaction.nature }}\"\n  }\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "X-Api-Key"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "56f290e1-9e12-40f6-8883-93ff25e9227d",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -980,
        -320
      ],
      "parameters": {
        "color": 5,
        "width": 840,
        "height": 640,
        "content": "## GoCardless - Fetch transactions\nFirst we fetch transactions from GoCardless for all bank accounts that we have connected. Change the <account_id> to your own id."
      },
      "typeVersion": 1
    },
    {
      "id": "cebfa4eb-2e0b-42ea-b637-c285e822e7ac",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -120,
        -320
      ],
      "parameters": {
        "color": 2,
        "width": 1440,
        "height": 640,
        "content": "## Maybe Finance - Create transactions\nCombine transactions in one object, call the API recursively for each of the transaction to create them to Maybe Finance. Change account id in the json to your own account id."
      },
      "typeVersion": 1
    },
    {
      "id": "afdeeee2-8f96-436b-8011-a3a507c341f0",
      "name": "Merge all transactions in one array",
      "type": "n8n-nodes-base.merge",
      "position": [
        580,
        -80
      ],
      "parameters": {},
      "typeVersion": 3.1
    },
    {
      "id": "07bd503d-d842-459e-8e07-f240f08fc039",
      "name": "Resend",
      "type": "n8n-nodes-resend.resend",
      "position": [
        1060,
        -80
      ],
      "parameters": {
        "html": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html dir=\"ltr\" lang=\"en\">\n  <head>\n    <link\n      rel=\"preload\"\n      as=\"image\"\n      href=\"https://di867tnz6fwga.cloudfront.net/brand-kits/cfcf0bf8-7c74-4001-9740-435b7c42c4a8/primary/07c4924e-2064-4f81-8281-1d56c5850866.png\" />\n    <meta content=\"text/html; charset=UTF-8\" http-equiv=\"Content-Type\" />\n    <meta name=\"x-apple-disable-message-reformatting\" />\n  </head>\n  <body\n    style='background-color:rgb(0,0,0);font-family:ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";padding-top:40px;padding-bottom:40px'>\n    <!--$-->\n    <div\n      style=\"display:none;overflow:hidden;line-height:1px;opacity:0;max-height:0;max-width:0\"\n      data-skip-in-text=\"true\">\n      Your weekly bank transaction overview is ready to view\n      <div>\n        \u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\u00a0\u200c\u200b\u200d\u200e\u200f\ufeff\n      </div>\n    </div>\n    <table\n      align=\"center\"\n      width=\"100%\"\n      border=\"0\"\n      cellpadding=\"0\"\n      cellspacing=\"0\"\n      role=\"presentation\"\n      style=\"margin-left:auto;margin-right:auto;padding-top:20px;padding-bottom:20px;padding-left:20px;padding-right:20px;background-color:rgb(18,18,18);border-radius:8px;max-width:600px\">\n      <tbody>\n        <tr style=\"width:100%\">\n          <td>\n            <table\n              align=\"center\"\n              width=\"100%\"\n              border=\"0\"\n              cellpadding=\"0\"\n              cellspacing=\"0\"\n              role=\"presentation\"\n              style=\"text-align:center;margin-bottom:32px\">\n              <tbody>\n                <tr>\n                  <td>\n                    <img\n                      alt=\"Syllogic\"\n                      src=\"https://di867tnz6fwga.cloudfront.net/brand-kits/cfcf0bf8-7c74-4001-9740-435b7c42c4a8/primary/07c4924e-2064-4f81-8281-1d56c5850866.png\"\n                      style=\"width:100%;height:auto;object-fit:cover;max-width:200px;margin-left:auto;margin-right:auto;display:block;outline:none;border:none;text-decoration:none\" />\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n            <table\n              align=\"center\"\n              width=\"100%\"\n              border=\"0\"\n              cellpadding=\"0\"\n              cellspacing=\"0\"\n              role=\"presentation\"\n              style=\"padding-left:20px;padding-right:20px;text-align:center\">\n              <tbody>\n                <tr>\n                  <td>\n                    <h1\n                      style=\"color:rgb(255,255,255);font-size:24px;font-weight:700;margin-bottom:24px\">\n                      Your Weekly Overview is Ready\n                    </h1>\n                    <p\n                      style=\"color:rgb(255,255,255);font-size:16px;line-height:24px;margin-bottom:32px;margin-top:16px\">\n                      Your comprehensive bank transaction overview for this past\n                      week has been compiled and is ready for review.\n                    </p>\n                    <table\n                      align=\"center\"\n                      width=\"100%\"\n                      border=\"0\"\n                      cellpadding=\"0\"\n                      cellspacing=\"0\"\n                      role=\"presentation\"\n                      style=\"margin-bottom:32px\">\n                      <tbody>\n                        <tr>\n                          <td>\n                            <a\n                              href=\"http://0.0.0.0:3005/\"\n                              style=\"background-color:rgb(255,255,255);color:rgb(0,0,0);padding-left:32px;padding-right:32px;padding-top:12px;padding-bottom:12px;border-radius:6px;font-size:16px;font-weight:500;text-decoration-line:none;box-sizing:border-box;display:inline-block;line-height:100%;text-decoration:none;max-width:100%;mso-padding-alt:0px\"\n                              target=\"_blank\"\n                              ><span\n                                ><!--[if mso]><i style=\"mso-font-width:400%;mso-text-raise:18\" hidden>&#8202;&#8202;&#8202;&#8202;</i><![endif]--></span\n                              ><span\n                                style=\"max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:9px\"\n                                >View Your Overview</span\n                              ><span\n                                ><!--[if mso]><i style=\"mso-font-width:400%\" hidden>&#8202;&#8202;&#8202;&#8202;&#8203;</i><![endif]--></span\n                              ></a\n                            >\n                          </td>\n                        </tr>\n                      </tbody>\n                    </table>\n                    <p\n                      style=\"color:rgb(255,255,255);font-size:14px;line-height:20px;margin-bottom:24px;opacity:0.8;margin-top:16px\">\n                      Link: http://0.0.0.0:3005/\n                    </p>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n            <hr\n              style=\"border-color:rgb(51,51,51);margin-top:32px;margin-bottom:32px;width:100%;border:none;border-top:1px solid #eaeaea\" />\n            <table\n              align=\"center\"\n              width=\"100%\"\n              border=\"0\"\n              cellpadding=\"0\"\n              cellspacing=\"0\"\n              role=\"presentation\"\n              style=\"padding-left:20px;padding-right:20px;text-align:center\">\n              <tbody>\n                <tr>\n                  <td>\n                    <p\n                      style=\"color:rgb(255,255,255);font-size:12px;line-height:16px;opacity:0.6;margin-bottom:16px;margin-top:16px\">\n                      After years of watching teams struggle with data access,\n                      we are building a better way.\n                    </p>\n                    <p\n                      style=\"color:rgb(255,255,255);font-size:12px;line-height:16px;opacity:0.6;margin-top:16px;margin-bottom:16px\">\n                      <a\n                        href=\"https://syllogic.ai\"\n                        style=\"color:rgb(255,255,255);text-decoration-line:underline\"\n                        target=\"_blank\"\n                        >Syllogic</a\n                      >\n                    </p>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n    <!--7--><!--/$-->\n  </body>\n</html>\n",
        "subject": "Weekly transactions overview",
        "additionalOptions": {}
      },
      "credentials": {
        "resendApi": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 1
    },
    {
      "id": "7ed11872-a6e8-4c36-a137-dcb527a8394d",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -680,
        -680
      ],
      "parameters": {
        "color": 6,
        "width": 540,
        "height": 340,
        "content": "## Get Maybe Finance accounts\nAfter creating the respective accounts in Maybe Finance, run a GET request to fetch all account ids to insert them to the \"Set\" nodes later."
      },
      "typeVersion": 1
    },
    {
      "id": "061da286-bf40-41b3-9bd6-52c579067451",
      "name": "Extract booked - Revolut Personal",
      "type": "n8n-nodes-base.itemLists",
      "position": [
        40,
        60
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "transactions.booked"
      },
      "typeVersion": 3
    },
    {
      "id": "eb8d3441-4d25-4ee7-a94e-4073294914b9",
      "name": "Extract booked - Revolut Pro",
      "type": "n8n-nodes-base.itemLists",
      "position": [
        40,
        -180
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "transactions.booked"
      },
      "typeVersion": 3
    },
    {
      "id": "305021b2-cf36-4d29-9ddd-fd31eca8902d",
      "name": "Set transactions for Revolut Pro",
      "type": "n8n-nodes-base.set",
      "position": [
        320,
        -180
      ],
      "parameters": {
        "mode": "raw",
        "options": {},
        "jsonOutput": "=    {\n      \"transaction\": {\n        \"account_id\": \"\",\n        \"name\": \"{{ $json.creditorName || $json.remittanceInformationUnstructuredArray[0]}}\",\n        \"date\": \"{{ $json.bookingDate }}\",\n        \"amount\": \"{{ Math.abs(parseFloat($json.transactionAmount.amount)) }}\",\n        \"currency\": \"{{ $json.transactionAmount.currency }}\",\n        \"nature\": \"{{ parseFloat($json.transactionAmount.amount) >= 0 ? 'income' : 'expense' }}\"\n      }}"
      },
      "typeVersion": 3.4
    },
    {
      "id": "6205fdc5-b59c-41b9-9c00-c3a6a9d67a72",
      "name": "Set transactions for Revolut Personal",
      "type": "n8n-nodes-base.set",
      "position": [
        320,
        60
      ],
      "parameters": {
        "mode": "raw",
        "options": {},
        "jsonOutput": "=    {\n      \"transaction\": {\n        \"account_id\": \"\",\n        \"name\": \"{{ $json.creditorName || $json.remittanceInformationUnstructuredArray[0]}}\",\n        \"date\": \"{{ $json.bookingDate }}\",\n        \"amount\": \"{{ Math.abs(parseFloat($json.transactionAmount.amount)) }}\",\n        \"currency\": \"{{ $json.transactionAmount.currency }}\",\n        \"nature\": \"{{ parseFloat($json.transactionAmount.amount) >= 0 ? 'income' : 'expense' }}\"\n      }}"
      },
      "typeVersion": 3.4
    },
    {
      "id": "2b010267-68da-4c25-81e1-547ea4795c45",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -1220,
        -80
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "weeks",
              "triggerAtDay": [
                1
              ],
              "triggerAtHour": 4
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "f22aa661-1a95-4dbe-b37a-4322bfb7251c",
      "name": "Step 4 - Building link with Revolut",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        840,
        -540
      ],
      "parameters": {
        "url": "https://bankaccountdata.gocardless.com/api/v2/requisitions/",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "redirect",
              "value": "http://www.yourwebpage.com"
            },
            {
              "name": "institution_id",
              "value": "ABNAMRO_ABNANL2A"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "accept",
              "value": "application/json"
            },
            {
              "name": "Authorization",
              "value": "=Bearer {{ $json.access }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "496d6d35-6844-4b72-90ff-4daa2d8ae9fa",
      "name": "Step 3a - User agreement with first Revolut Account",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        280,
        -540
      ],
      "parameters": {
        "url": "https://bankaccountdata.gocardless.com/api/v2/agreements/enduser/",
        "method": "POST",
        "options": {},
        "jsonBody": "{\n  \"institution_id\": \"ABNAMRO_ABNANL2A\",\n  \"max_historical_days\": \"180\",\n  \"access_valid_for_days\": \"90\",\n  \"access_scope\": [\n    \"balances\",\n    \"details\",\n    \"transactions\"\n  ]\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "accept",
              "value": "application/json"
            },
            {
              "name": "Authorization",
              "value": "=Bearer {{ $json.access }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "1d76a8c1-10fd-4252-80a7-cece9a0e8e6e",
      "name": "Step 3a - User agreement with second Revolut Account",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        560,
        -540
      ],
      "parameters": {
        "url": "https://bankaccountdata.gocardless.com/api/v2/agreements/enduser/",
        "method": "POST",
        "options": {},
        "jsonBody": "{\n  \"institution_id\": \"REVOLUT_REVOGB21\",\n  \"max_historical_days\": \"180\",\n  \"access_valid_for_days\": \"90\",\n  \"access_scope\": [\n    \"balances\",\n    \"details\",\n    \"transactions\"\n  ]\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "accept",
              "value": "application/json"
            },
            {
              "name": "Authorization",
              "value": "=Bearer {{ $json.access }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "7ec2a3e7-4e68-4229-bb92-2a12ab1aac24",
  "connections": {
    "Get access token": {
      "main": [
        [
          {
            "node": "Get Revolut Personal transactions",
            "type": "main",
            "index": 0
          },
          {
            "node": "Get Revolut Pro transactions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get access token",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get accounts id from Maybe": {
      "main": [
        []
      ]
    },
    "Create transactions to Maybe": {
      "main": [
        [
          {
            "node": "Resend",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract booked - Revolut Pro": {
      "main": [
        [
          {
            "node": "Set transactions for Revolut Pro",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Revolut Pro transactions": {
      "main": [
        [
          {
            "node": "Extract booked - Revolut Pro",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set transactions for Revolut Pro": {
      "main": [
        [
          {
            "node": "Merge all transactions in one array",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract booked - Revolut Personal": {
      "main": [
        [
          {
            "node": "Set transactions for Revolut Personal",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Revolut Personal transactions": {
      "main": [
        [
          {
            "node": "Extract booked - Revolut Personal",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge all transactions in one array": {
      "main": [
        [
          {
            "node": "Create transactions to Maybe",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set transactions for Revolut Personal": {
      "main": [
        [
          {
            "node": "Merge all transactions in one array",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Step 3a - User agreement with second Revolut Account": {
      "main": [
        []
      ]
    }
  }
}

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

Freelancers, founders, households, and side-hustlers who work with several bank accounts but want one, always-up-to-date budget inside Maybe Finance—no more CSV exports or copy-paste. Schedule Trigger (cron) fires every Monday 📅 (switch to Manual Trigger while testing) Get…

Source: https://n8n.io/workflows/6284/ — 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 workflow pushes Stripe charges to HubSpot contacts. It uses the Stripe API to get all charges and the HubSpot API to update the contacts. The workflow will create a new HubSpot property to store

Stripe, Item Lists, HubSpot +1
Web Scraping

This workflow syncs Zendesk tickets to Pipedrive contact owners.

Function Item, HTTP Request, Zendesk +2
Web Scraping

This workflow snoozes any Todoist tasks, by moving them into a Snoozed todoist list and unsnoozes them 3 days before due date. Helps keep inbox clear only of tasks you need to worry about soon. Add yo

Todoist, Crypto, Item Lists +1
Web Scraping

Weekly_Shodan_Query___Report_Accidents__no_function_node_. Uses httpRequest, itemLists, html, markdown. Scheduled trigger; 15 nodes.

HTTP Request, Item Lists, The Hive
Web Scraping

This n8n workflow, which runs every Monday at 5:00 AM, initiates a comprehensive process to monitor and analyze network security by scrutinizing IP addresses and their associated ports. It begins by f

HTTP Request, Item Lists, The Hive