{"_id":"@emilfrom/n8n-nodes-actual-budget","_rev":"7-897659f330de36701737fb5a562b30fa","name":"@emilfrom/n8n-nodes-actual-budget","dist-tags":{"latest":"2.4.0"},"versions":{"1.0.2":{"name":"@emilfrom/n8n-nodes-actual-budget","version":"1.0.2","keywords":["n8n-community-node-package","n8n","actual","actual-budget","budgeting"],"author":{"name":"Emil Halkjær From","email":"npm@emilfrom.com"},"license":"MIT","_id":"@emilfrom/n8n-nodes-actual-budget@1.0.2","maintainers":[{"name":"emilfrom","email":"npm@emilfrom.com"}],"homepage":"https://github.com/EmilFrom/n8n-nodes-actual-budget","bugs":{"url":"https://github.com/EmilFrom/n8n-nodes-actual-budget/issues"},"n8n":{"nodes":["dist/nodes/ActualBudget/ActualBudget.node.js"],"strict":true,"credentials":["dist/credentials/ActualHttpApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"fb6ee9da5eb65b23cc42231f392835756bc99c51","tarball":"https://registry.npmjs.org/@emilfrom/n8n-nodes-actual-budget/-/n8n-nodes-actual-budget-1.0.2.tgz","fileCount":19,"integrity":"sha512-sAP3VyCOh86O9zEKLh/neNML4Ym3h5ADldogZ+2rZRwtFoO1QslYCJ0seE713SQsXb//OwN8kj3wW1uUEBGiVw==","signatures":[{"sig":"MEYCIQDYbwMfJ8u8G6z64aqByOtYx92HpOKICSy/jU0S3p/qoQIhAOr2DDcJB6Xl50jNUVt1jyPM3mtU7Ca34ZFLc6f0czt8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@emilfrom%2fn8n-nodes-actual-budget@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":123833},"gitHead":"e796d07f04f4f247080d691b0f617b3c9f1cf868","scripts":{"dev":"n8n-node dev","lint":"n8n-node lint","build":"n8n-node build","release":"n8n-node release","lint:fix":"n8n-node lint --fix","build:watch":"tsc --watch","prepublishOnly":"n8n-node prerelease"},"_npmUser":{"name":"emilfrom","email":"npm@emilfrom.com"},"repository":{"url":"git+https://github.com/EmilFrom/n8n-nodes-actual-budget.git","type":"git"},"_npmVersion":"11.11.0","description":"personal project for keeping track of my expenses. Thank you to jhonderson for the actual-http-api and Actual Budget for the software. Thank you Jan Oberhauser for the incredible n8n project.","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"9.39.4","prettier":"3.8.3","release-it":"20.0.1","typescript":"5.9.3","@n8n/node-cli":"*"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-actual-budget_1.0.2_1778365606671_0.6401258787863511","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@emilfrom/n8n-nodes-actual-budget","version":"2.0.0","keywords":["n8n-community-node-package","n8n","actual","actual-budget","budgeting"],"author":{"name":"Emil Halkjær From","email":"npm@emilfrom.com"},"license":"MIT","_id":"@emilfrom/n8n-nodes-actual-budget@2.0.0","maintainers":[{"name":"emilfrom","email":"npm@emilfrom.com"}],"homepage":"https://github.com/EmilFrom/n8n-nodes-actual-budget","bugs":{"url":"https://github.com/EmilFrom/n8n-nodes-actual-budget/issues"},"n8n":{"nodes":["dist/nodes/ActualBudget/ActualBudget.node.js"],"strict":true,"credentials":["dist/credentials/ActualHttpApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"377ae299d94737498f3376b5f340cd6e80a7cc6e","tarball":"https://registry.npmjs.org/@emilfrom/n8n-nodes-actual-budget/-/n8n-nodes-actual-budget-2.0.0.tgz","fileCount":19,"integrity":"sha512-gDuNFGP0nKQaj1oqGnc3f1E3wY7t8bhCC4izgsjFY2qqxm/6qKC2hVilJPg3hteFTuYnx8ATeHxWm/l6Qzmr+A==","signatures":[{"sig":"MEUCIQDPrWHnp7LZtPORXLsF/dG6QRdZyH3YHv6rcryuoyFgTQIgHZ0fUtGha0dQOi9e+D46oSZih9ClzcCsvxphqtN0qls=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@emilfrom%2fn8n-nodes-actual-budget@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":120767},"gitHead":"e7f01f06d211878459e4072ee25a6c4fa14de5f1","scripts":{"dev":"n8n-node dev","lint":"n8n-node lint","build":"n8n-node build","release":"n8n-node release","lint:fix":"n8n-node lint --fix","build:watch":"tsc --watch","prepublishOnly":"n8n-node prerelease"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3f4afdbe-9412-44b8-b302-538f2eea45ce"}},"repository":{"url":"git+https://github.com/EmilFrom/n8n-nodes-actual-budget.git","type":"git"},"_npmVersion":"11.11.0","description":"personal project for keeping track of my expenses. Thank you to jhonderson for the actual-http-api and Actual Budget for the software. Thank you Jan Oberhauser for the incredible n8n project.","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"9.39.4","prettier":"3.8.3","release-it":"20.0.1","typescript":"5.9.3","@n8n/node-cli":"*"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-actual-budget_2.0.0_1778370961574_0.5217404446477842","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@emilfrom/n8n-nodes-actual-budget","version":"2.0.1","keywords":["n8n-community-node-package","n8n","actual","actual-budget","budgeting"],"author":{"name":"Emil Halkjær From","email":"npm@emilfrom.com"},"license":"MIT","_id":"@emilfrom/n8n-nodes-actual-budget@2.0.1","maintainers":[{"name":"emilfrom","email":"npm@emilfrom.com"}],"homepage":"https://github.com/EmilFrom/n8n-nodes-actual-budget","bugs":{"url":"https://github.com/EmilFrom/n8n-nodes-actual-budget/issues"},"n8n":{"nodes":["dist/nodes/ActualBudget/ActualBudget.node.js"],"strict":true,"credentials":["dist/credentials/ActualHttpApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"bece164b18f42e03e6768e2bd6e43b7a38c02673","tarball":"https://registry.npmjs.org/@emilfrom/n8n-nodes-actual-budget/-/n8n-nodes-actual-budget-2.0.1.tgz","fileCount":19,"integrity":"sha512-RMU2vwkl8ZYzyn+OcJr/hQ2hE/oiLoVDCK1ZirBruceBWI7BptSIHMmWXIiV7xrbz9wQis3JG/eBx4CMgvH/XQ==","signatures":[{"sig":"MEUCIQDAHr8+boM3OLAZJIo4ImCJrpKB30+HUiPIJ5Bq3UiBFAIgN/etdlp9r0Dx7VMlqRy1GuEv/PaV8WFo2Ts8WiNBREo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@emilfrom%2fn8n-nodes-actual-budget@2.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":124388},"gitHead":"02a0971c8b3870f6cebcbe91df3c78f46e7163e4","scripts":{"dev":"n8n-node dev","lint":"n8n-node lint","build":"n8n-node build","release":"n8n-node release","lint:fix":"n8n-node lint --fix","build:watch":"tsc --watch","prepublishOnly":"n8n-node prerelease"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3f4afdbe-9412-44b8-b302-538f2eea45ce"}},"repository":{"url":"git+https://github.com/EmilFrom/n8n-nodes-actual-budget.git","type":"git"},"_npmVersion":"11.11.0","description":"personal project for keeping track of my expenses. Thank you to jhonderson for the actual-http-api and Actual Budget for the software. Thank you Jan Oberhauser for the incredible n8n project.","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"9.39.4","prettier":"3.8.3","release-it":"20.0.1","typescript":"5.9.3","@n8n/node-cli":"*"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-actual-budget_2.0.1_1778372591246_0.0412138294737483","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@emilfrom/n8n-nodes-actual-budget","version":"2.2.0","keywords":["n8n-community-node-package","n8n","actual","actual-budget","budgeting"],"author":{"name":"Emil Halkjær From","email":"npm@emilfrom.com"},"license":"MIT","_id":"@emilfrom/n8n-nodes-actual-budget@2.2.0","maintainers":[{"name":"emilfrom","email":"npm@emilfrom.com"}],"homepage":"https://github.com/EmilFrom/n8n-nodes-actual-budget","bugs":{"url":"https://github.com/EmilFrom/n8n-nodes-actual-budget/issues"},"n8n":{"nodes":["dist/nodes/ActualBudget/ActualBudget.node.js"],"strict":true,"credentials":["dist/credentials/ActualHttpApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"c168b587862884725ca173eea9f68051037e71f9","tarball":"https://registry.npmjs.org/@emilfrom/n8n-nodes-actual-budget/-/n8n-nodes-actual-budget-2.2.0.tgz","fileCount":22,"integrity":"sha512-Z9884lrP889lk1vbbEM9+CDOreTr3lKN+UZNq7dl0DYKpx4i6Ez8/TAaROE53D0SvjbrFzUfexTj60HN9D+/0g==","signatures":[{"sig":"MEYCIQCE7w8yVhDOxTy7FaGx186iauXBmZVzBXuvq2muzjPXoQIhAJAJ9D9QYkLZyRfhkxAikmCXH0oclVMskRDoROgJNPMv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@emilfrom%2fn8n-nodes-actual-budget@2.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":147653},"gitHead":"a08b58ef3350be1c9baecc58db7eeefd7ad70875","scripts":{"dev":"n8n-node dev","lint":"n8n-node lint","build":"n8n-node build","release":"n8n-node release","lint:fix":"n8n-node lint --fix","build:watch":"tsc --watch","prepublishOnly":"n8n-node prerelease"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3f4afdbe-9412-44b8-b302-538f2eea45ce"}},"repository":{"url":"git+https://github.com/EmilFrom/n8n-nodes-actual-budget.git","type":"git"},"_npmVersion":"11.11.0","description":"personal project for keeping track of my expenses. Thank you to jhonderson for the actual-http-api and Actual Budget for the software. Thank you Jan Oberhauser for the incredible n8n project.","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"9.39.4","prettier":"3.8.3","release-it":"20.0.1","typescript":"5.9.3","@n8n/node-cli":"*"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-actual-budget_2.2.0_1778377020932_0.12244889489678545","host":"s3://npm-registry-packages-npm-production"}},"2.2.2":{"name":"@emilfrom/n8n-nodes-actual-budget","version":"2.2.2","keywords":["n8n-community-node-package","n8n","actual","actual-budget","budgeting"],"author":{"name":"Emil Halkjær From","email":"npm@emilfrom.com"},"license":"MIT","_id":"@emilfrom/n8n-nodes-actual-budget@2.2.2","maintainers":[{"name":"emilfrom","email":"npm@emilfrom.com"}],"homepage":"https://github.com/EmilFrom/n8n-nodes-actual-budget","bugs":{"url":"https://github.com/EmilFrom/n8n-nodes-actual-budget/issues"},"n8n":{"nodes":["dist/nodes/ActualBudget/ActualBudget.node.js"],"strict":true,"credentials":["dist/credentials/ActualHttpApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"23577509516cff0f921a32ef4bef2f2305521f35","tarball":"https://registry.npmjs.org/@emilfrom/n8n-nodes-actual-budget/-/n8n-nodes-actual-budget-2.2.2.tgz","fileCount":22,"integrity":"sha512-dexn/UVdzuIcznb5gh13+G/UyCvg+xxkBh5pM+iB0s0b3V2uYb4fxRaKQ9KX678e/a83c2JGyOjM6xZj1e+mpw==","signatures":[{"sig":"MEYCIQCO9tdTSI1B++W8iJOuHzg3c+lo3lCmLhCNkt3JksoSIwIhALPCczyqa+mHODug7/dAQCWHuwgqNESTMvhE+FOG85um","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@emilfrom%2fn8n-nodes-actual-budget@2.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":147794},"gitHead":"c2a46249c1a3e1a70d8e8828e680b6f6a4b64e2c","scripts":{"dev":"n8n-node dev","lint":"n8n-node lint","build":"n8n-node build","release":"n8n-node release","lint:fix":"n8n-node lint --fix","build:watch":"tsc --watch","prepublishOnly":"n8n-node prerelease"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3f4afdbe-9412-44b8-b302-538f2eea45ce"}},"repository":{"url":"git+https://github.com/EmilFrom/n8n-nodes-actual-budget.git","type":"git"},"_npmVersion":"11.11.0","description":"personal project for keeping track of my expenses. Thank you to jhonderson for the actual-http-api and Actual Budget for the software. Thank you Jan Oberhauser for the incredible n8n project.","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"9.39.4","prettier":"3.8.3","release-it":"20.0.1","typescript":"5.9.3","@n8n/node-cli":"*"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-actual-budget_2.2.2_1778384048840_0.04758215017286904","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@emilfrom/n8n-nodes-actual-budget","version":"2.3.0","keywords":["n8n-community-node-package","n8n","actual","actual-budget","budgeting"],"author":{"name":"Emil Halkjær From","email":"npm@emilfrom.com"},"license":"MIT","_id":"@emilfrom/n8n-nodes-actual-budget@2.3.0","maintainers":[{"name":"emilfrom","email":"npm@emilfrom.com"}],"homepage":"https://github.com/EmilFrom/n8n-nodes-actual-budget","bugs":{"url":"https://github.com/EmilFrom/n8n-nodes-actual-budget/issues"},"n8n":{"nodes":["dist/nodes/ActualBudget/ActualBudget.node.js"],"strict":true,"credentials":["dist/credentials/ActualHttpApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"105f18e167bee513022c94a702a0835da088553d","tarball":"https://registry.npmjs.org/@emilfrom/n8n-nodes-actual-budget/-/n8n-nodes-actual-budget-2.3.0.tgz","fileCount":22,"integrity":"sha512-X1OQp9poecz0e7VYz9Od1aSPDOedvp31wbUFauulUsAX1/vioNMX1jwIiHPSjM79vVDWS9ofM1u+CRzQapWk9Q==","signatures":[{"sig":"MEQCIDzbobVGMI3mnWtQEUBhvaXoITDVLZUUvGjKl1izLb0JAiB1SyzKqLFfJXD7KO3Bvhe91AF+rwwy8DLY3Tfc9R0FLg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@emilfrom%2fn8n-nodes-actual-budget@2.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":149152},"gitHead":"a55b90f1f8bbbc12f74f5b317fc1c9d5af82e082","scripts":{"dev":"n8n-node dev","lint":"n8n-node lint","build":"n8n-node build","release":"n8n-node release","lint:fix":"n8n-node lint --fix","build:watch":"tsc --watch","prepublishOnly":"n8n-node prerelease"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3f4afdbe-9412-44b8-b302-538f2eea45ce"}},"repository":{"url":"git+https://github.com/EmilFrom/n8n-nodes-actual-budget.git","type":"git"},"_npmVersion":"11.11.0","description":"personal project for keeping track of my expenses. Thank you to jhonderson for the actual-http-api and Actual Budget for the software. Thank you Jan Oberhauser for the incredible n8n project.","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"9.39.4","prettier":"3.8.3","release-it":"20.0.1","typescript":"5.9.3","@n8n/node-cli":"*"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-actual-budget_2.3.0_1778441349484_0.7237184116696158","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"@emilfrom/n8n-nodes-actual-budget","version":"2.4.0","description":"personal project for keeping track of my expenses. Thank you to jhonderson for the actual-http-api and Actual Budget for the software. Thank you Jan Oberhauser for the incredible n8n project.","license":"MIT","homepage":"https://github.com/EmilFrom/n8n-nodes-actual-budget","keywords":["n8n-community-node-package","n8n","actual","actual-budget","budgeting"],"author":{"name":"Emil Halkjær From","email":"npm@emilfrom.com"},"repository":{"type":"git","url":"git+https://github.com/EmilFrom/n8n-nodes-actual-budget.git"},"publishConfig":{"access":"public"},"scripts":{"build":"n8n-node build","build:watch":"tsc --watch","dev":"n8n-node dev","lint":"n8n-node lint","lint:fix":"n8n-node lint --fix","release":"n8n-node release","prepublishOnly":"n8n-node prerelease"},"n8n":{"n8nNodesApiVersion":1,"strict":true,"credentials":["dist/credentials/ActualHttpApi.credentials.js"],"nodes":["dist/nodes/ActualBudget/ActualBudget.node.js"]},"devDependencies":{"@n8n/node-cli":"*","eslint":"9.39.4","prettier":"3.8.3","release-it":"20.0.1","typescript":"5.9.3"},"peerDependencies":{"n8n-workflow":"*"},"gitHead":"1a9ea50a97f7a91c576b351008220ae7dccfe9e1","_id":"@emilfrom/n8n-nodes-actual-budget@2.4.0","bugs":{"url":"https://github.com/EmilFrom/n8n-nodes-actual-budget/issues"},"_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-yEK4LZt5YcsmbjHdl0OMkLFXrw/XlkqlfC1shOOYbJbNzeQ+TxaxPvAkwhqK2SjeJy5K2SEm/FfkgxjolEqYxw==","shasum":"5e7ac9e2a18828e0a7ae19994d7f6a93ab9a02fe","tarball":"https://registry.npmjs.org/@emilfrom/n8n-nodes-actual-budget/-/n8n-nodes-actual-budget-2.4.0.tgz","fileCount":22,"unpackedSize":153091,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@emilfrom%2fn8n-nodes-actual-budget@2.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDJGQr3P/2WzFXPoqLl9/Wa+ya3xTR4fiiBDc8Bme1BRgIhAKgYS0v7v8YOhXMq5PZRRWdKLDuMhDQT/pzeO3fAven/"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3f4afdbe-9412-44b8-b302-538f2eea45ce"}},"directories":{},"maintainers":[{"name":"emilfrom","email":"npm@emilfrom.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/n8n-nodes-actual-budget_2.4.0_1778447348750_0.6241635142748672"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-09T22:26:46.506Z","modified":"2026-05-10T21:09:09.193Z","1.0.2":"2026-05-09T22:26:46.834Z","2.0.0":"2026-05-09T23:56:01.712Z","2.0.1":"2026-05-10T00:23:11.401Z","2.2.0":"2026-05-10T01:37:01.070Z","2.2.2":"2026-05-10T03:34:08.990Z","2.3.0":"2026-05-10T19:29:09.653Z","2.4.0":"2026-05-10T21:09:08.892Z"},"bugs":{"url":"https://github.com/EmilFrom/n8n-nodes-actual-budget/issues"},"author":{"name":"Emil Halkjær From","email":"npm@emilfrom.com"},"license":"MIT","homepage":"https://github.com/EmilFrom/n8n-nodes-actual-budget","keywords":["n8n-community-node-package","n8n","actual","actual-budget","budgeting"],"repository":{"type":"git","url":"git+https://github.com/EmilFrom/n8n-nodes-actual-budget.git"},"description":"personal project for keeping track of my expenses. Thank you to jhonderson for the actual-http-api and Actual Budget for the software. Thank you Jan Oberhauser for the incredible n8n project.","maintainers":[{"name":"emilfrom","email":"npm@emilfrom.com"}],"readme":"# @emilfrom/n8n-nodes-actual-budget\n\nThis is an n8n community node for working with [Actual Budget](https://actualbudget.org/)\nthrough [actual-http-api](https://github.com/jhonderson/actual-http-api).\n\n[n8n](https://n8n.io/) is a workflow automation platform.\n\npersonal project for keeping track of my expenses. Thank you to jhonderson for the actual-http-api and Actual Budget for the software. Thank you Jan Oberhauser for the incredible n8n project.\nThis was just for fun but let's see how it goes.\nI have learned so much about github actions and the npm registry now.\n\n## Installation\n\nFollow the n8n community node\n[installation guide](https://docs.n8n.io/integrations/community-nodes/installation/).\n\nFor local development in this repository:\n\n```bash\nnpm install\nnpm run dev\n```\n\n## Prerequisites\n\nRun `actual-http-api` somewhere n8n can reach it. The API service needs access to\nyour Actual server and should be configured with an `API_KEY`,\n`ACTUAL_SERVER_URL`, and `ACTUAL_SERVER_PASSWORD`.\n\nExample:\n\n```bash\ndocker run -d --name actualhttpapi \\\n  -v \"$PWD/data:/data:rw\" \\\n  -p 5007:5007 \\\n  -e ACTUAL_SERVER_URL=\"http://actual-server:5006/\" \\\n  -e ACTUAL_SERVER_PASSWORD=\"your-actual-password\" \\\n  -e API_KEY=\"your-api-key\" \\\n  jhonderson/actual-http-api:26.5.0\n```\n\n## Credentials\n\nCreate an `Actual HTTP API` credential in n8n with:\n\n- `Base URL`: Host (and optional path) where actual-http-api listens — for example `http://localhost:5007`, `http://actualhttpapi:5007`, or `http://localhost:5007/v1`. **Host-only URLs** (no path) automatically use the API root **`/v1`**, matching [actual-http-api OpenAPI](https://github.com/jhonderson/actual-http-api) defaults.\n- `API Key`: The `API_KEY` configured for actual-http-api\n- `Budget Sync ID`: The Sync ID from Actual Budget settings under advanced settings\n- `Budget Encryption Password`: Optional, only for encrypted budgets\n\nThe credential test calls `GET /v1/budgets/{budgetSyncId}/accounts` (or the same path under your custom base URL).\n\n### Troubleshooting\n\n| Symptom | What to check |\n|--------|----------------|\n| **404** on `/budgets/...` | **Budget Sync ID** must match the budget file on the Actual server that actual-http-api uses. Confirm with curl against the same host (routes live under **`/v1/budgets/...`**). |\n| **`ECONNREFUSED` to `::1` or `127.0.0.1`** | n8n runs in Docker: **`localhost` inside the container is not your host.** Use the container/service DNS name (e.g. `http://actualhttpapi:5007`) or the LAN IP n8n can reach. |\n| Works in curl but not in n8n | Same **Base URL** shape as curl (host/service name), same sync id and API key. See [Debugging (logs)](#debugging-logs). |\n\n## Node version 2 (breaking change)\n\nVersion **2** of the **Actual Budget** node removes the old **Import** operation (which used\n`POST .../transactions/import` and `imported_id` dedupe). Workflows must use **Transaction: Create**\nand amounts as **integer minor units**, matching the [actual-http-api](https://github.com/jhonderson/actual-http-api)\ncontract (`value * 100` for most currencies).\n\n## Actions\n\nPick an **Action** on the node:\n\n### Transaction: Create\n\nCreates one transaction per input item using the official single-create endpoint:\n\n`POST /budgets/{budgetSyncId}/accounts/{accountId}/transactions`\n\nRequest body matches the API: `learnCategories`, `runTransfers`, and `transaction` with\n`account`, `category`, `amount`, `payee_name`, `date`, `cleared`, and optionally `notes`.\n\n- **Account** / **Category**: selectable lists from `GET /accounts` and `GET /categories`\n- **Amount**: integer minor units (for example `-7374` for `-73.74` in a two-decimal currency)\n- **Date**: stored as `YYYY-MM-DD`\n- **Payee Name**: plain text (for example `Amazon`)\n- **Notes**: optional; when non-empty, sent as `transaction.notes` (memo on the transaction)\n- **Cleared**, **Learn Categories**, **Run Transfers**: booleans\n\n### Budget: Get Month\n\n`GET /budgets/{budgetSyncId}/months/{month}` — pass **Month** as `YYYY-MM`. Output includes the API\n`data` payload (totals, category groups, etc.).\n\n### Account: List\n\n`GET /budgets/{budgetSyncId}/accounts` — returns the API response (including `data`).\n\n### Account: Get Balance\n\n`GET /budgets/{budgetSyncId}/accounts/{accountId}/balance` — returns `{ \"data\": <integer> }` in **minor units** (same as amounts elsewhere). Pick the **Account** from the list or by ID. **Balance Cutoff Date** is optional: maps to query `cutoff_date=YYYY-MM-DD` (balance as of that date). Leave it empty to rely on actual-http-api’s default (typically “today”).\n\n### Category: List\n\n`GET /budgets/{budgetSyncId}/categories` — returns the API response (including `data`).\n\n### Category: Create\n\n`POST /budgets/{budgetSyncId}/categories` with body `{ category: { name, group_id, is_income, hidden } }`. Pick a **category group** from the searchable list (same groups as in Actual). Response includes `data` (new category id); the node also exposes **`categoryId`** on the output item for convenience.\n\n### Transaction: Create — category UX\n\nUnder **Transaction: Create**, **Category** controls how the category is chosen:\n\n- **Existing Category** — same as before: pick a category (list or UUID).\n- **Create New Category** — the node calls **POST /categories** with your name and group, reads the new id from the API response, then creates the transaction with that category. The execution output includes **`categoryCreate`** (request/response and resolved id) next to the transaction **`request`** / API response.\n\n## Debugging (logs)\n\nThis node uses n8n’s **`LoggerProxy`** from `n8n-workflow` (same approach as [n8n’s logging docs](https://docs.n8n.io/hosting/logging-monitoring/logging/)): each outbound call logs at **info** (method, resource, URL with the sync id redacted as `_syncId_`), extra hints at **debug**, and **warn** if the request fails (HTTP status when present; **404** entries may include a short `troubleshootingHint`). You do **not** need to add `/v1` manually when using a host-only Base URL — it is applied automatically.\n\n**Where to read logs:** server stdout/stderr (Docker/Kubernetes logs) or the log file if you enable file output — not the workflow execution panel in the editor.\n\n**Environment variables** (optional; defaults are usually enough until you need more detail):\n\n| Variable | Typical value | Purpose |\n|----------|-----------------|--------|\n| `N8N_LOG_LEVEL` | `info` (default) | Use **`debug`** to include `Logger.debug` lines (credential-shape hints). |\n| `N8N_LOG_OUTPUT` | `console` (default) | Use `console,file` and set `N8N_LOG_FILE_LOCATION` if you want a persistent log file. |\n| `N8N_LOG_FILE_LOCATION` | e.g. `/home/node/.n8n/logs/n8n.log` | Path when `N8N_LOG_OUTPUT` includes `file`. |\n\nAfter changing env vars, restart n8n.\n\n## Development\n\n```bash\nnpm run build\nnpm run lint\n```\n\n## Resources\n\n- [Actual Budget API docs](https://actualbudget.org/docs/api/)\n- [actual-http-api](https://github.com/jhonderson/actual-http-api)\n- [n8n community node docs](https://docs.n8n.io/integrations/community-nodes/)\n","readmeFilename":"README.md"}