Finanzbeispiel
Dies ist ein Miscellaneous-Bereich Automatisierungsworkflow mit 22 Nodes. Hauptsächlich werden Set, Merge, Resend, ItemLists, HttpRequest und andere Nodes verwendet. Automatisierung der Synchronisierung und Berichterstattung von Transaktionen über mehrere Banken mit GoCardless und Maybe Finance
- •Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
Verwendete Nodes (22)
Kategorie
{
"id": "tY32QDTdup1LAwR1",
"meta": {
"instanceId": "358ebc7e70f0c2213a4211c90e6cecc1d427950728ea9da9fc037017aab28666",
"templateCredsSetupCompleted": true
},
"name": "Maybe Finance example",
"tags": [],
"nodes": [
{
"id": "c7580a81-6327-4da4-b01a-9afe9d9d3b22",
"name": "Zugriffstoken abrufen",
"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": "Revolut Pro-Transaktionen abrufen",
"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": "Revolut Personal-Transaktionen abrufen",
"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": "Konten-IDs von Maybe abrufen",
"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": "Haftnotiz",
"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": "Schritt 2 - Institution-ID abrufen",
"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": "Schritt 5 - Konto-ID abrufen",
"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": "Haftnotiz1",
"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": "Transaktionen zu Maybe erstellen",
"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": "Haftnotiz2",
"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": "Haftnotiz3",
"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": "Alle Transaktionen in einem Array zusammenführen",
"type": "n8n-nodes-base.merge",
"position": [
580,
-80
],
"parameters": {},
"typeVersion": 3.1
},
{
"id": "07bd503d-d842-459e-8e07-f240f08fc039",
"name": "Erneut senden",
"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 \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://100.78.73.50: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>    </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>    ​</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://100.78.73.50: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": {
"id": "YFj2hXsELN5yFJ26",
"name": "Resend account"
}
},
"executeOnce": true,
"typeVersion": 1
},
{
"id": "7ed11872-a6e8-4c36-a137-dcb527a8394d",
"name": "Haftnotiz4",
"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": "Gebuchte Transaktionen extrahieren - Revolut Personal",
"type": "n8n-nodes-base.itemLists",
"position": [
40,
60
],
"parameters": {
"options": {},
"fieldToSplitOut": "transactions.booked"
},
"typeVersion": 3
},
{
"id": "eb8d3441-4d25-4ee7-a94e-4073294914b9",
"name": "Gebuchte Transaktionen extrahieren - Revolut Pro",
"type": "n8n-nodes-base.itemLists",
"position": [
40,
-180
],
"parameters": {
"options": {},
"fieldToSplitOut": "transactions.booked"
},
"typeVersion": 3
},
{
"id": "305021b2-cf36-4d29-9ddd-fd31eca8902d",
"name": "Transaktionen für Revolut Pro festlegen",
"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": "Transaktionen für Revolut Personal festlegen",
"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": "Zeitplan-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": "Schritt 4 - Verbindung mit Revolut aufbauen",
"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": "Schritt 3a - Nutzungsvereinbarung mit erstem Revolut-Konto",
"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": "Schritt 3a - Nutzungsvereinbarung mit zweitem Revolut-Konto",
"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,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "7ec2a3e7-4e68-4229-bb92-2a12ab1aac24",
"connections": {
"c7580a81-6327-4da4-b01a-9afe9d9d3b22": {
"main": [
[
{
"node": "61fb2bc6-abf0-469d-9ade-ef7aec5429fe",
"type": "main",
"index": 0
},
{
"node": "8c0c26ef-083a-4028-a866-2b3857dc47c3",
"type": "main",
"index": 0
}
]
]
},
"2b010267-68da-4c25-81e1-547ea4795c45": {
"main": [
[
{
"node": "c7580a81-6327-4da4-b01a-9afe9d9d3b22",
"type": "main",
"index": 0
}
]
]
},
"878df10c-1704-48f5-b1a2-ac9a4ff4a5f2": {
"main": [
[]
]
},
"ba89f635-926c-4750-a862-b5e335852cc0": {
"main": [
[
{
"node": "07bd503d-d842-459e-8e07-f240f08fc039",
"type": "main",
"index": 0
}
]
]
},
"eb8d3441-4d25-4ee7-a94e-4073294914b9": {
"main": [
[
{
"node": "305021b2-cf36-4d29-9ddd-fd31eca8902d",
"type": "main",
"index": 0
}
]
]
},
"8c0c26ef-083a-4028-a866-2b3857dc47c3": {
"main": [
[
{
"node": "eb8d3441-4d25-4ee7-a94e-4073294914b9",
"type": "main",
"index": 0
}
]
]
},
"305021b2-cf36-4d29-9ddd-fd31eca8902d": {
"main": [
[
{
"node": "afdeeee2-8f96-436b-8011-a3a507c341f0",
"type": "main",
"index": 0
}
]
]
},
"061da286-bf40-41b3-9bd6-52c579067451": {
"main": [
[
{
"node": "6205fdc5-b59c-41b9-9c00-c3a6a9d67a72",
"type": "main",
"index": 0
}
]
]
},
"61fb2bc6-abf0-469d-9ade-ef7aec5429fe": {
"main": [
[
{
"node": "061da286-bf40-41b3-9bd6-52c579067451",
"type": "main",
"index": 0
}
]
]
},
"afdeeee2-8f96-436b-8011-a3a507c341f0": {
"main": [
[
{
"node": "ba89f635-926c-4750-a862-b5e335852cc0",
"type": "main",
"index": 0
}
]
]
},
"6205fdc5-b59c-41b9-9c00-c3a6a9d67a72": {
"main": [
[
{
"node": "afdeeee2-8f96-436b-8011-a3a507c341f0",
"type": "main",
"index": 1
}
]
]
},
"1d76a8c1-10fd-4252-80a7-cece9a0e8e6e": {
"main": [
[]
]
}
}
}Wie verwende ich diesen Workflow?
Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.
Für welche Szenarien ist dieser Workflow geeignet?
Experte - Verschiedenes
Ist es kostenpflichtig?
Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.
Verwandte Workflows
Giannis Kotsakiachidis
@gianniskotsasDiesen Workflow teilen