8
n8n 한국어amn8n.com

구글 시트와 퀵북스 비용 자동화 템플릿

고급

이것은Invoice Processing, Multimodal AI분야의자동화 워크플로우로, 16개의 노드를 포함합니다.주로 If, Set, SplitOut, Quickbooks, HttpRequest 등의 노드를 사용하며. 구글 시트와 QuickBooks 비용 자동화 템플릿

사전 요구사항
  • 대상 API의 인증 정보가 필요할 수 있음
  • Google Sheets API 인증 정보
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "meta": {
    "instanceId": "d6e2f2f655b1125bbcac14a4cac6d2e46c7a150e927f85fc96fdca1a6dc39e0e",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "4678f902-8b59-42f2-adab-f123ca1f637f",
      "name": "'워크플로 실행' 클릭 시",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -16,
        192
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "5b68c737-5caa-4d36-b957-5b4458c759a8",
      "name": "QuickBooks에서 활성 공급업체 가져오기",
      "type": "n8n-nodes-base.quickbooks",
      "position": [
        880,
        0
      ],
      "parameters": {
        "filters": {},
        "resource": "vendor",
        "operation": "getAll",
        "returnAll": true
      },
      "credentials": {
        "quickBooksOAuth2Api": {
          "id": "zZyR3nZpTizUyR0u",
          "name": "QuickBooks n8n Sandbox"
        }
      },
      "executeOnce": true,
      "typeVersion": 1
    },
    {
      "id": "5f464de5-83b7-4fd2-9068-93422b2356bf",
      "name": "계정 과목표 가져오기",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        432,
        192
      ],
      "parameters": {
        "url": "=https://sandbox-quickbooks.api.intuit.com/v3/company/{{ $json.realmID }}/query",
        "options": {},
        "sendQuery": true,
        "authentication": "predefinedCredentialType",
        "queryParameters": {
          "parameters": [
            {
              "name": "query",
              "value": "select * from Account where active=true maxResults 500"
            },
            {
              "name": "minorversion",
              "value": "75"
            }
          ]
        },
        "nodeCredentialType": "quickBooksOAuth2Api"
      },
      "credentials": {
        "quickBooksOAuth2Api": {
          "id": "zZyR3nZpTizUyR0u",
          "name": "QuickBooks n8n Sandbox"
        }
      },
      "executeOnce": true,
      "typeVersion": 4.2
    },
    {
      "id": "0b295195-8e3b-4d64-b1ef-ca4dbfca84c9",
      "name": "계정 분할",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        656,
        192
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "QueryResponse.Account"
      },
      "typeVersion": 1
    },
    {
      "id": "aaaa6cf5-8e29-42d1-a182-b4506dd73583",
      "name": "Google Sheet 템플릿에 계정 추가",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        880,
        192
      ],
      "parameters": {
        "columns": {
          "value": {
            "ID": "={{ $json.Id }}",
            "Name": "={{ $json.Name }}",
            "Account Type": "={{ $json.AccountType }}"
          },
          "schema": [
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ID",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Account Type",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Account Type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "ID"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 124163501,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1dmkXHeMghVp5AHrdyU1vrwjUHWNaoDfkk9UOuG-SNKI/edit#gid=124163501",
          "cachedResultName": "Accounts"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1dmkXHeMghVp5AHrdyU1vrwjUHWNaoDfkk9UOuG-SNKI/edit?usp=sharing"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "iNp7jBkCGXjTLqFd",
          "name": "Rosh's Personal Sheets Account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "a37448d0-6c95-4bf0-8504-3519abda9d49",
      "name": "QBO에 비용 추가",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        880,
        384
      ],
      "parameters": {
        "url": "=https://sandbox-quickbooks.api.intuit.com/v3/company/{{ $('Set Realm ID for Custom API Call').item.json.realmID }}/purchase",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"PaymentType\": \"Cash\",\n  \"TxnDate\": \"{{ $json.Date.toDateTime('M/d/y').toFormat('yyyy-MM-dd') }}\",\n  \"PrivateNote\": \"{{ $json.Description }}\",\n  \"EntityRef\": {\n    \"value\": \"{{ $json['Vendor ID'] }}\"\n  },\n  \"AccountRef\": {\n    \"value\": \"{{ $json['Asset ID'] }}\"\n  },\n  \"Line\": [\n    {\n      \"DetailType\": \"AccountBasedExpenseLineDetail\",\n      \"Amount\": {{ $json.Total }},\n      \"AccountBasedExpenseLineDetail\": {\n        \"AccountRef\": {\n          \"value\": \"{{ $json['Expense ID'] }}\"\n        }\n      }\n    }\n  ]\n}\n",
        "sendBody": true,
        "sendQuery": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "queryParameters": {
          "parameters": [
            {
              "name": "minorversion",
              "value": "75"
            }
          ]
        },
        "nodeCredentialType": "quickBooksOAuth2Api"
      },
      "credentials": {
        "quickBooksOAuth2Api": {
          "id": "zZyR3nZpTizUyR0u",
          "name": "QuickBooks n8n Sandbox"
        }
      },
      "executeOnce": false,
      "typeVersion": 4.2
    },
    {
      "id": "b1ed3c64-f832-4822-ae8a-2bf04cd7dd01",
      "name": "Google Sheets에서 새 공급업체 가져오기",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        208,
        0
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1066861641,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1dmkXHeMghVp5AHrdyU1vrwjUHWNaoDfkk9UOuG-SNKI/edit#gid=1066861641",
          "cachedResultName": "Vendors"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1dmkXHeMghVp5AHrdyU1vrwjUHWNaoDfkk9UOuG-SNKI/edit?usp=sharing"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "iNp7jBkCGXjTLqFd",
          "name": "Rosh's Personal Sheets Account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "5ed5cff9-7c9a-48c0-90f7-fdb158e10983",
      "name": "Google Sheet 템플릿에서 공급업체 새로 고침",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1104,
        0
      ],
      "parameters": {
        "columns": {
          "value": {
            "ID": "={{ $json.Id }}",
            "Name": "={{ $json.DisplayName }}"
          },
          "schema": [
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ID",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "ID"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1066861641,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1dmkXHeMghVp5AHrdyU1vrwjUHWNaoDfkk9UOuG-SNKI/edit#gid=1066861641",
          "cachedResultName": "Vendors"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1dmkXHeMghVp5AHrdyU1vrwjUHWNaoDfkk9UOuG-SNKI/edit?usp=sharing"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "iNp7jBkCGXjTLqFd",
          "name": "Rosh's Personal Sheets Account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "6de704e8-7007-4802-ac84-10f81ca21af3",
      "name": "새 비용 거래 내역 가져오기",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        432,
        384
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupColumn": "Transaction ID"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1dmkXHeMghVp5AHrdyU1vrwjUHWNaoDfkk9UOuG-SNKI/edit#gid=0",
          "cachedResultName": "Expenses"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1dmkXHeMghVp5AHrdyU1vrwjUHWNaoDfkk9UOuG-SNKI/edit?usp=sharing"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "iNp7jBkCGXjTLqFd",
          "name": "Rosh's Personal Sheets Account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "17d09d9c-028a-4ccd-b2d7-1fc269e7fcca",
      "name": "중복 제거",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        432,
        0
      ],
      "parameters": {
        "compare": "selectedFields",
        "options": {},
        "fieldsToCompare": "Name"
      },
      "typeVersion": 2,
      "alwaysOutputData": true
    },
    {
      "id": "ff8d137b-b491-49e4-b656-81896a6bed0e",
      "name": "빈 항목 제거",
      "type": "n8n-nodes-base.if",
      "position": [
        656,
        384
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "2aa9700c-74c1-464a-bce8-beb2ce28c7da",
              "operator": {
                "type": "string",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $json['Transaction ID'] }}",
              "rightValue": ""
            },
            {
              "id": "481f12f7-e8d0-4c80-bb3c-c21850c8795c",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json.Vendor }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "da89ac36-ba2b-431f-b2ff-345951d90a45",
      "name": "Google Sheets에 Txn ID 기록",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1104,
        288
      ],
      "parameters": {
        "columns": {
          "value": {
            "#": "={{ $('Remove Empties').item.json['#'] }}",
            "Transaction ID": "={{ $json.Purchase.Id }}"
          },
          "schema": [
            {
              "id": "#",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "#",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Description",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Vendor",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Vendor",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Asset Account",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Asset Account",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Expense Account",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Expense Account",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Transaction ID",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Transaction ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Message",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Message",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Vendor ID",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Vendor ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Asset ID",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Asset ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Expense ID",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Expense ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "#"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/10pdz8hvNsCWX6IogQ_Nyb2qlXmOHWtgsAH4EgAUKfSw/edit#gid=0",
          "cachedResultName": "Expenses"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/10pdz8hvNsCWX6IogQ_Nyb2qlXmOHWtgsAH4EgAUKfSw/edit?pli=1&gid=0#gid=0"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "iNp7jBkCGXjTLqFd",
          "name": "Rosh's Personal Sheets Account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "fb36bbce-7b08-4ec1-aeaf-4fbc409a3f4c",
      "name": "QuickBooks에서 새 공급업체 생성",
      "type": "n8n-nodes-base.quickbooks",
      "onError": "continueRegularOutput",
      "position": [
        656,
        0
      ],
      "parameters": {
        "resource": "vendor",
        "operation": "create",
        "displayName": "={{ $json.Name }}",
        "additionalFields": {}
      },
      "credentials": {
        "quickBooksOAuth2Api": {
          "id": "zZyR3nZpTizUyR0u",
          "name": "QuickBooks n8n Sandbox"
        }
      },
      "executeOnce": false,
      "typeVersion": 1
    },
    {
      "id": "615ced03-6162-494f-9006-7aef2b8f10b6",
      "name": "사용자 정의 API 호출을 위한 Realm ID 설정",
      "type": "n8n-nodes-base.set",
      "position": [
        208,
        288
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "df10e087-0f27-4d07-98ba-aee302ee5477",
              "name": "realmID",
              "type": "string",
              "value": ""
            }
          ]
        }
      },
      "executeOnce": true,
      "typeVersion": 3.4
    },
    {
      "id": "cd56254b-d062-40f0-87dc-f3c6d1bca8c3",
      "name": "오류 메시지 기록",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1104,
        480
      ],
      "parameters": {
        "columns": {
          "value": {
            "#": "={{ $json['#'] }}",
            "Message": "={{ $json.error }}"
          },
          "schema": [
            {
              "id": "#",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "#",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Description",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Total",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Vendor",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Vendor",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Asset Account",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Asset Account",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Expense Account",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Expense Account",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Transaction ID",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Transaction ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Vendor ID",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Vendor ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Asset ID",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Asset ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Expense ID",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Expense ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Message",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Message",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "#"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/10pdz8hvNsCWX6IogQ_Nyb2qlXmOHWtgsAH4EgAUKfSw/edit#gid=0",
          "cachedResultName": "Expenses"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1dmkXHeMghVp5AHrdyU1vrwjUHWNaoDfkk9UOuG-SNKI/edit?usp=sharing"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "iNp7jBkCGXjTLqFd",
          "name": "Rosh's Personal Sheets Account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "cc3c8c70-63c7-4c48-bcd2-3c8321f7f489",
      "name": "스티커 메모",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -800,
        -448
      ],
      "parameters": {
        "width": 660,
        "height": 2192,
        "content": "## Automatically Upload Expenses to QuickBooks from Google Sheets\n\n## What It Does\nThis n8n workflow template automates the process of uploading categorized expenses from Google Sheets into QuickBooks Online. It leverages your Google Sheets data to create expense entries in QuickBooks with minimal manual effort, streamlining the accounting process.\n\n## Prerequisites\n- **QuickBooks Online Credential**: Set up your QuickBooks Online connection in n8n for expense creation.\n- **Google Sheets Credential**: Set up your Google Sheets connection in n8n to read and write data.\n\n## How It Works\n1. **Refresh Google Sheets Data**: The workflow will first refresh the list of vendors and chart of accounts from your Google Sheets template.\n2. **Import Bank Transactions**: Open the provided Google Sheets template and copy-paste your transactions from your online banking CSV file.\n3. **Categorize Transactions**: Quickly categorize the transactions in Google Sheets, or assign this task to a team member.\n4. **Run the Workflow**: Once the transactions are categorized, run the workflow again, and each expense will be created automatically in QuickBooks Online.\n\n## Example Use Cases\n- **Small Business Owners**: Automatically track and upload monthly expenses to QuickBooks Online without manually entering data.\n- **Accountants**: Automate the transfer of bank transactions to QuickBooks, streamlining the financial process.\n- **Bookkeepers**: Quickly categorize and upload business expenses to QuickBooks with minimal effort.\n\n## Setup Instructions\n1. **Connect Your Google Sheets and QuickBooks Credentials**:  \n   - In n8n, connect your Google Sheets and QuickBooks accounts. Follow the credential setup instructions for both services.\n\n2. **Setup the Google Sheets Node**:  \n   - Link the specific Google Sheet that contains your expense data. Make sure the sheet includes the correct columns for transactions, vendors, and accounts.\n\n3. **Setup the QuickBooks Node**:  \n   - Configure the QuickBooks Online node to create expense entries in QuickBooks from the data in your Google Sheets.\n\n4. **Setup the HTTP Node for API Calls**:  \n   - Use the HTTP node to make custom API calls to QuickBooks\n\n5. **Configure the QuickBooks Realm ID**:  \n   - Obtain the QuickBooks Realm ID from your QuickBooks Online Developer account to use for custom API calls. This ensures the workflow targets the correct QuickBooks instance.\n\n## How to Use\n1. **Import Transactions**:  \n   - Copy and paste your bank transactions from the CSV into the provided Google Sheets template.\n\n2. **Categorize Transactions**:  \n   - Manually categorize the transactions in the sheet, or delegate this task to another person to ensure they’re correctly tagged (e.g., Utilities, Office Supplies, Travel).\n\n3. **Run the Workflow**:  \n   - Execute the workflow to automatically upload the categorized expenses into QuickBooks.\n\n4. **Verify in QuickBooks**:  \n   - After the workflow runs, log into QuickBooks Online to confirm the expenses have been created and categorized correctly.\n\n## Free Google Sheets Template\nTo get started quickly, download my **free Google Sheets template** that includes pre-configured sheets for bank transactions, vendors, and chart of accounts. This template will make it easier for you to import and categorize your expenses before running the n8n workflow.\n\n[Download the Free Google Sheets Template](https://docs.google.com/spreadsheets/d/1dmkXHeMghVp5AHrdyU1vrwjUHWNaoDfkk9UOuG-SNKI/edit?usp=sharing)\n\n## Customization Options\n- **Category Mapping**: Customize how categories in Google Sheets are mapped to QuickBooks expense types.\n- **Additional API Calls**: Add custom API calls if you need extra functionality, such as creating custom reports or syncing additional data.\n- **Notifications**: Configure email or Slack notifications to alert you when the expenses have been successfully uploaded.\n\n## Why It's Useful\n- **Time-Saving**: Automatically upload and categorize expenses in QuickBooks without needing to enter them manually.\n- **Error Reduction**: Minimize human error by automating the process of uploading and categorizing transactions.\n- **Efficiency**: Connects Google Sheets to QuickBooks, making it easy to manage expenses in one place without having to toggle between multiple apps.\n- **Accuracy**: Syncs data between Google Sheets and QuickBooks in a structured, automated way for consistent and reliable financial reporting.\n- **Flexibility**: Allow external users or lower-permission employees to categorize financial transactions without providing direct access to QBO\n"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "ff8d137b-b491-49e4-b656-81896a6bed0e": {
      "main": [
        [
          {
            "node": "a37448d0-6c95-4bf0-8504-3519abda9d49",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "17d09d9c-028a-4ccd-b2d7-1fc269e7fcca": {
      "main": [
        [
          {
            "node": "fb36bbce-7b08-4ec1-aeaf-4fbc409a3f4c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0b295195-8e3b-4d64-b1ef-ca4dbfca84c9": {
      "main": [
        [
          {
            "node": "aaaa6cf5-8e29-42d1-a182-b4506dd73583",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a37448d0-6c95-4bf0-8504-3519abda9d49": {
      "main": [
        [
          {
            "node": "da89ac36-ba2b-431f-b2ff-345951d90a45",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "cd56254b-d062-40f0-87dc-f3c6d1bca8c3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5f464de5-83b7-4fd2-9068-93422b2356bf": {
      "main": [
        [
          {
            "node": "0b295195-8e3b-4d64-b1ef-ca4dbfca84c9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6de704e8-7007-4802-ac84-10f81ca21af3": {
      "main": [
        [
          {
            "node": "ff8d137b-b491-49e4-b656-81896a6bed0e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fb36bbce-7b08-4ec1-aeaf-4fbc409a3f4c": {
      "main": [
        [
          {
            "node": "5b68c737-5caa-4d36-b957-5b4458c759a8",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "5b68c737-5caa-4d36-b957-5b4458c759a8": {
      "main": [
        [
          {
            "node": "5ed5cff9-7c9a-48c0-90f7-fdb158e10983",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "615ced03-6162-494f-9006-7aef2b8f10b6": {
      "main": [
        [
          {
            "node": "5f464de5-83b7-4fd2-9068-93422b2356bf",
            "type": "main",
            "index": 0
          },
          {
            "node": "6de704e8-7007-4802-ac84-10f81ca21af3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b1ed3c64-f832-4822-ae8a-2bf04cd7dd01": {
      "main": [
        [
          {
            "node": "17d09d9c-028a-4ccd-b2d7-1fc269e7fcca",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4678f902-8b59-42f2-adab-f123ca1f637f": {
      "main": [
        [
          {
            "node": "b1ed3c64-f832-4822-ae8a-2bf04cd7dd01",
            "type": "main",
            "index": 0
          },
          {
            "node": "615ced03-6162-494f-9006-7aef2b8f10b6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "aaaa6cf5-8e29-42d1-a182-b4506dd73583": {
      "main": [
        []
      ]
    },
    "5ed5cff9-7c9a-48c0-90f7-fdb158e10983": {
      "main": [
        []
      ]
    }
  }
}
자주 묻는 질문

이 워크플로우를 어떻게 사용하나요?

위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.

이 워크플로우는 어떤 시나리오에 적합한가요?

고급 - 청구서 처리, 멀티모달 AI

유료인가요?

이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
고급
노드 수16
카테고리2
노드 유형9
난이도 설명

고급 사용자를 위한 16+개 노드의 복잡한 워크플로우

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34