Exemple financier
Ceci est unMiscellaneousworkflow d'automatisation du domainecontenant 22 nœuds.Utilise principalement des nœuds comme Set, Merge, Resend, ItemLists, HttpRequest. Utiliser GoCardless et Maybe Finance pour automatiser la synchronisation et le rapport des transactions multi-banques
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
Nœuds utilisés (22)
Catégorie
{
"id": "tY32QDTdup1LAwR1",
"meta": {
"instanceId": "358ebc7e70f0c2213a4211c90e6cecc1d427950728ea9da9fc037017aab28666",
"templateCredsSetupCompleted": true
},
"name": "Maybe Finance example",
"tags": [],
"nodes": [
{
"id": "c7580a81-6327-4da4-b01a-9afe9d9d3b22",
"name": "Obtenir le jeton d'accès",
"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": "Obtenir les transactions Revolut Pro",
"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": "Obtenir les transactions Revolut Personnel",
"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": "Obtenir les ID de comptes depuis 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": "Note adhésive",
"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": "Étape 2 - Obtenir l'ID de l'institution",
"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": "Étape 5 - Obtenir l'ID du compte",
"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": "Note adhésive 1",
"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": "Créer des transactions vers 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": "Note adhésive 2",
"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": "Note adhésive 3",
"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": "Fusionner toutes les transactions dans un tableau",
"type": "n8n-nodes-base.merge",
"position": [
580,
-80
],
"parameters": {},
"typeVersion": 3.1
},
{
"id": "07bd503d-d842-459e-8e07-f240f08fc039",
"name": "Renvoyer",
"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": "Note adhésive 4",
"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": "Extraire les transactions comptabilisées - Revolut Personnel",
"type": "n8n-nodes-base.itemLists",
"position": [
40,
60
],
"parameters": {
"options": {},
"fieldToSplitOut": "transactions.booked"
},
"typeVersion": 3
},
{
"id": "eb8d3441-4d25-4ee7-a94e-4073294914b9",
"name": "Extraire les transactions comptabilisées - Revolut Pro",
"type": "n8n-nodes-base.itemLists",
"position": [
40,
-180
],
"parameters": {
"options": {},
"fieldToSplitOut": "transactions.booked"
},
"typeVersion": 3
},
{
"id": "305021b2-cf36-4d29-9ddd-fd31eca8902d",
"name": "Définir les transactions pour 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": "Définir les transactions pour Revolut Personnel",
"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": "Déclencheur programmé",
"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": "Étape 4 - Établir le lien avec 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": "Étape 3a - Accord utilisateur avec le premier compte Revolut",
"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": "Étape 3a - Accord utilisateur avec le deuxième compte Revolut",
"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": [
[]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - Divers
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Giannis Kotsakiachidis
@gianniskotsasPartager ce workflow