Airtable から QuickBooks へ自動費用レポートの転送
これはInvoice Processing, Multimodal AI分野の自動化ワークフローで、20個のノードを含みます。主にIf, Merge, Airtable, HttpRequest, AirtableTriggerなどのノードを使用。 Airtable から QuickBooks へ費用レポートの自動化
- •Airtable API Key
- •ターゲットAPIの認証情報が必要な場合あり
{
"id": "WCAyzxSt6yCROjq8",
"meta": {
"instanceId": "1a54c41d9050a8f1fa6f74ca858828ad9fb97b9fafa3e9760e576171c531a787"
},
"name": "Automate Expense Reporting from Airtable to QuickBooks",
"tags": [],
"nodes": [
{
"id": "92e68aed-1a03-478b-89d4-5d94e98b3db0",
"name": "Airtable Trigger",
"type": "n8n-nodes-base.airtableTrigger",
"position": [
-120,
1120
],
"parameters": {
"baseId": {
"__rl": true,
"mode": "id",
"value": "appT0dprL0zCSuG45"
},
"tableId": {
"__rl": true,
"mode": "id",
"value": "{YOUR_AIRTABLE_TABLE_ID}"
},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"triggerField": "Created",
"authentication": "airtableTokenApi",
"additionalFields": {}
},
"typeVersion": 1
},
{
"id": "0b1822e8-1fcf-4ef0-872d-ec3b50d0ef9d",
"name": "レコード検索",
"type": "n8n-nodes-base.airtable",
"position": [
240,
1120
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "{YOUR_AIRTABLE_BASE_ID}",
"cachedResultUrl": "https://airtable.com/{YOUR_AIRTABLE_BASE_ID}",
"cachedResultName": "airtable_expenses_dummy.csv"
},
"table": {
"__rl": true,
"mode": "list",
"value": "{YOUR_AIRTABLE_TABLE_ID}",
"cachedResultUrl": "https://airtable.com/{YOUR_AIRTABLE_BASE_ID}/{YOUR_AIRTABLE_TABLE_ID}",
"cachedResultName": "expense management"
},
"options": {},
"operation": "search"
},
"typeVersion": 2.1
},
{
"id": "6bd50650-7226-48ad-afe3-c2493e6c50f8",
"name": "条件分岐",
"type": "n8n-nodes-base.if",
"position": [
700,
1120
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "dd2d7985-b436-4213-a3b9-56916c8f59b4",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.Status }}",
"rightValue": "Approved"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "2d50d1e9-8c4c-4dff-91cb-d39d0c1d0237",
"name": "No Operation(処理なし)",
"type": "n8n-nodes-base.noOp",
"position": [
1580,
1580
],
"parameters": {},
"typeVersion": 1
},
{
"id": "5edab364-f81e-47e3-8da4-601b84b3ac19",
"name": "ファイルダウンロード",
"type": "n8n-nodes-base.httpRequest",
"position": [
1560,
780
],
"parameters": {
"url": "={{ $json['Receipt URL'] }}",
"options": {
"response": {
"response": {
"responseFormat": "file",
"outputPropertyName": "=Receipt"
}
}
}
},
"typeVersion": 4.2
},
{
"id": "84784657-8fad-4e60-aa32-bdf75255ac2f",
"name": "マージ",
"type": "n8n-nodes-base.merge",
"position": [
2800,
760
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition"
},
"typeVersion": 3.2
},
{
"id": "02450b3c-81fa-4159-a910-730365a05dfd",
"name": "レコード更新",
"type": "n8n-nodes-base.airtable",
"position": [
3840,
760
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "{YOUR_AIRTABLE_BASE_ID}",
"cachedResultUrl": "https://airtable.com/{YOUR_AIRTABLE_BASE_ID}",
"cachedResultName": "airtable_expenses_dummy.csv"
},
"table": {
"__rl": true,
"mode": "list",
"value": "{YOUR_AIRTABLE_TABLE_ID}",
"cachedResultUrl": "https://airtable.com/{YOUR_AIRTABLE_BASE_ID}/{YOUR_AIRTABLE_TABLE_ID}",
"cachedResultName": "expense management"
},
"columns": {
"value": {
"id": "={{ $('Search records').item.json.id }}",
"Status": "Done"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "id",
"defaultMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Receipt URL",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Receipt URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Amount",
"type": "number",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Amount",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Date",
"type": "dateTime",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Memo",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Memo",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "QBO Vendor ID",
"type": "number",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "QBO Vendor ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "QBO Expense Account ID",
"type": "number",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "QBO Expense Account ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "QBO Payment Account ID",
"type": "number",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "QBO Payment Account ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Category",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Category",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Created",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "Created",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Receipt Type",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Receipt Type",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Customer",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Customer",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update"
},
"typeVersion": 2.1
},
{
"id": "cb4a1747-f86b-427a-8325-113315392775",
"name": "付箋",
"type": "n8n-nodes-base.stickyNote",
"position": [
-320,
1300
],
"parameters": {
"color": 3,
"width": 500,
"height": 300,
"content": "### Step 1: Airtable Trigger 🚦📋\n\nThis node triggers the workflow whenever there is a change in the **Created** column, effectively activating when new data is added.\n\nWhy this step is important:\n\n- ⏰ Automatically starts the workflow on new entries.\n- 📈 Monitors real-time changes for timely processing.\n- 🔄 Ensures your automation responds instantly to new Airtable data.\n\nIt’s the step that keeps your workflow synced with your Airtable updates. 🔔✨\n"
},
"typeVersion": 1
},
{
"id": "d3c122f4-ce1a-4968-b57a-f8fa3ad261eb",
"name": "付箋1",
"type": "n8n-nodes-base.stickyNote",
"position": [
60,
780
],
"parameters": {
"width": 460,
"height": 300,
"content": "### Step 2: Airtable Search Records 🔍📋\n\nThis node searches and retrieves all records from a specific Airtable table.\n\nWhy this step is important:\n\n- 🔎 Gathers complete data from the table for processing.\n- 📊 Enables further filtering, updating, or analysis within the workflow.\n- 🗂️ Provides a snapshot of all relevant records at once.\n\nIt’s the step that collects your data foundation for the automation ahead. 🧱✨\n"
},
"typeVersion": 1
},
{
"id": "2bc54880-2d88-41e6-9327-37dd97da3689",
"name": "付箋2",
"type": "n8n-nodes-base.stickyNote",
"position": [
500,
1280
],
"parameters": {
"color": 4,
"width": 500,
"height": 340,
"content": "### Step 3: Status Check (If Node) ✅❌\n\nThis node checks whether the **Status** field is set to **Approved**.\n\n- **True:** Status is Approved; workflow continues.\n- **False:** Status is not Approved; workflow can exit or take alternate action.\n\nWhy this step is important:\n\n- ✔️ Ensures only approved items proceed in the workflow.\n- 🛑 Prevents processing of unapproved or incomplete records.\n- 🔄 Maintains workflow accuracy and efficiency.\n\nIt’s the decision point that filters records based on their approval status. 🚦✨\n"
},
"typeVersion": 1
},
{
"id": "111d0402-84f5-4f09-b78d-b5b9ead43713",
"name": "付箋3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1420,
1260
],
"parameters": {
"width": 440,
"height": 300,
"content": "### Graceful Exit (No-Op Node) 🛑✨\n\nThis **No Operation** node acts as a graceful exit for items whose **Status** is not Approved.\n\nWhy this step is important:\n\n- 🛡️ Prevents further processing of unapproved records.\n- 🔄 Ensures the workflow ends cleanly without errors.\n- 🧹 Maintains clear and organized workflow logic.\n\nIt’s the safe stopping point that quietly ends the flow when no action is needed. 🚪✅\n"
},
"typeVersion": 1
},
{
"id": "b9847915-663e-4ec6-b815-71b09d28e687",
"name": "付箋4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1360,
440
],
"parameters": {
"color": 6,
"width": 480,
"height": 300,
"content": "### Step 4: Download File from Receipt URL (HTTP Request) 📥💻\n\nThis node sends an **HTTP Request** to download the file from the provided **Receipt URL**.\n\nWhy this step is important:\n\n- 📄 Retrieves the actual file (e.g., invoice, receipt) for further processing.\n- 🔗 Ensures the workflow has access to the necessary document.\n- ⚡ Enables downstream nodes to work with the downloaded file.\n\nIt’s the step that pulls the file into your workflow for processing or storage. 🗂️✨\n"
},
"typeVersion": 1
},
{
"id": "6c6f6ede-b978-4351-abe3-cc6226ebc746",
"name": "QBO-経費作成",
"type": "n8n-nodes-base.httpRequest",
"position": [
2220,
460
],
"parameters": {
"url": "https://sandbox-quickbooks.api.intuit.com/v3/company/{YOUR_QUICKBOOKS_COMPANY_ID}/purchase",
"method": "POST",
"options": {},
"jsonBody": "={\n \"PaymentType\": \"Cash\",\n \"TxnDate\": \"{{$json['Date']}}\",\n \"PrivateNote\": \"{{$json['Memo']}}\",\n \"AccountRef\": { \"value\": \"{{$json['QBO Payment Account ID']}}\" },\n \"EntityRef\": { \"type\": \"Vendor\", \"value\": \"{{$json['QBO Vendor ID']}}\" },\n \"Line\": [\n {\n \"Amount\": {{$json['Amount']}},\n \"DetailType\": \"AccountBasedExpenseLineDetail\",\n \"AccountBasedExpenseLineDetail\": {\n \"AccountRef\": { \"value\": \"{{$json['QBO Expense Account ID']}}\" }\n }\n }\n ]\n}\n",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "quickBooksOAuth2Api"
},
"typeVersion": 4.2
},
{
"id": "d6f91071-2044-4c56-b940-962a63765b60",
"name": "QBO-ファイルアップロード",
"type": "n8n-nodes-base.httpRequest",
"position": [
3320,
760
],
"parameters": {
"url": "https://sandbox-quickbooks.api.intuit.com/v3/company/{YOUR_QUICKBOOKS_COMPANY_ID}/upload?minorversion=65",
"method": "POST",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
},
"sendBody": true,
"contentType": "multipart-form-data",
"authentication": "predefinedCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "file_content_01",
"parameterType": "formBinaryData",
"inputDataFieldName": "Receipt"
}
]
},
"nodeCredentialType": "quickBooksOAuth2Api"
},
"typeVersion": 4.2
},
{
"id": "b12dc68f-ef24-42a7-801c-54d03e729b67",
"name": "付箋5",
"type": "n8n-nodes-base.stickyNote",
"position": [
2060,
100
],
"parameters": {
"color": 5,
"width": 440,
"height": 300,
"content": "**Step 5 - Create Expense in QuickBooks (QBO) 💸🧾**\n\nThis node uses the **Create Expense** operation to add an expense in QuickBooks based on data from Airtable.\n\nWhy this step is important:\n\n- 📊 Automatically records expenses from your Airtable data.\n- 🔗 Links expenses to the correct accounts and vendors in QuickBooks.\n- ⚡ Streamlines bookkeeping and financial tracking.\n\nIt’s the step that turns raw expense data into an official QuickBooks record. ✅✨\n"
},
"typeVersion": 1
},
{
"id": "e0617428-57bd-4fd6-b4cd-afec5931f363",
"name": "付箋6",
"type": "n8n-nodes-base.stickyNote",
"position": [
2640,
920
],
"parameters": {
"width": 480,
"height": 340,
"content": "### Step 6: Merge Expense and File Data Node 🔗📂\n\nThis node merges data from the **Create Expense** node and the **Download File** node.\n\nWhy this step is important:\n\n- 🔄 Combines expense details with the corresponding file (receipt or invoice).\n- 📊 Ensures all relevant information is packaged together for the next steps.\n- ⚙️ Maintains data integrity and prepares a unified dataset for further processing.\n\nIt’s the step that consolidates expense and file data for smooth workflow continuation. 🤝✨\n"
},
"typeVersion": 1
},
{
"id": "21f9dc2b-852c-43eb-9600-beb33c567bf7",
"name": "付箋7",
"type": "n8n-nodes-base.stickyNote",
"position": [
3120,
500
],
"parameters": {
"color": 3,
"width": 480,
"height": 240,
"content": "### Step 7: Upload File to QuickBooks (QBO Upload) 📤🧾\n\nThis node uses the **Upload File** operation to attach the downloaded file (e.g., receipt or invoice) to QuickBooks.\n\nWhy this step is important:\n- 🔗 Ensures proper documentation for bookkeeping and auditing.\n- ⚡ Automates file management within QuickBooks, saving time and reducing errors.\n\n"
},
"typeVersion": 1
},
{
"id": "5e7976bb-8812-407b-b79e-a67f2462e07c",
"name": "付箋8",
"type": "n8n-nodes-base.stickyNote",
"position": [
3680,
940
],
"parameters": {
"color": 4,
"width": 480,
"height": 300,
"content": "### Step 8: Update Airtable Record Status ✏️✅\n\nThis node updates the **Status** column of the Airtable records to **Done**.\n\nWhy this step is important:\n\n- 🔄 Marks the completion of the workflow for each record.\n- 📋 Provides clear visibility on processed items.\n- ⚡ Ensures Airtable reflects the latest workflow status.\n\nIt’s the step that closes the loop by updating the record’s status to indicate successful processing. 🏁✨\n"
},
"typeVersion": 1
},
{
"id": "f270dc7e-492a-4f23-9f65-f4658c3aedde",
"name": "付箋9",
"type": "n8n-nodes-base.stickyNote",
"position": [
-180,
20
],
"parameters": {
"color": 3,
"width": 600,
"height": 440,
"content": "### Prerequisites ⚙️🔗\n\n- Create and connect your **Airtable** account using a **Personal Access Token**.\n- Create a table with the following columns:\n - **Status**\n - **Receipt URL**\n - **Amount**\n - **Date**\n - **Memo**\n - **QBO Vendor ID**\n - **QBO Expense Account ID**\n - **QBO Payment Account ID**\n - **Category**\n - **Receipt Type**\n - **Customer**\n- Connect your oauth2 Quickbooks credentials\n- Add your company id in the QBO nodes\nThese configurations ensure your Airtable is ready for seamless integration with QuickBooks and the workflow. ✅✨\n"
},
"typeVersion": 1
},
{
"id": "a356ca74-915c-4349-9d68-c1a03cdc58f8",
"name": "付箋10",
"type": "n8n-nodes-base.stickyNote",
"position": [
1500,
1800
],
"parameters": {
"width": 440,
"height": 300,
"content": "### Get in Touch\n\nPlease feel free to reachout to us, if you need any help in settin up this workflow.\n\nWe can also help customize workflow pet the use-case. \n\nReach out us at: getstarted@intuz.com\n\nWebsite: https://www.intuz.com/\n\n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "71973fac-b373-4884-b5d0-f70497f5c2cb",
"connections": {
"6bd50650-7226-48ad-afe3-c2493e6c50f8": {
"main": [
[
{
"node": "5edab364-f81e-47e3-8da4-601b84b3ac19",
"type": "main",
"index": 0
}
],
[
{
"node": "2d50d1e9-8c4c-4dff-91cb-d39d0c1d0237",
"type": "main",
"index": 0
}
]
]
},
"84784657-8fad-4e60-aa32-bdf75255ac2f": {
"main": [
[
{
"node": "d6f91071-2044-4c56-b940-962a63765b60",
"type": "main",
"index": 0
}
]
]
},
"5edab364-f81e-47e3-8da4-601b84b3ac19": {
"main": [
[
{
"node": "6c6f6ede-b978-4351-abe3-cc6226ebc746",
"type": "main",
"index": 0
},
{
"node": "84784657-8fad-4e60-aa32-bdf75255ac2f",
"type": "main",
"index": 1
}
]
]
},
"0b1822e8-1fcf-4ef0-872d-ec3b50d0ef9d": {
"main": [
[
{
"node": "6bd50650-7226-48ad-afe3-c2493e6c50f8",
"type": "main",
"index": 0
}
]
]
},
"d6f91071-2044-4c56-b940-962a63765b60": {
"main": [
[
{
"node": "02450b3c-81fa-4159-a910-730365a05dfd",
"type": "main",
"index": 0
}
]
]
},
"92e68aed-1a03-478b-89d4-5d94e98b3db0": {
"main": [
[
{
"node": "0b1822e8-1fcf-4ef0-872d-ec3b50d0ef9d",
"type": "main",
"index": 0
}
]
]
},
"6c6f6ede-b978-4351-abe3-cc6226ebc746": {
"main": [
[
{
"node": "84784657-8fad-4e60-aa32-bdf75255ac2f",
"type": "main",
"index": 0
}
]
]
}
}
}このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - 請求書処理, マルチモーダルAI
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
Intuz
@intuzWorkflow automation can help automate your routine activities and help saves $$$, as well as hours of time. As a boutique tech consulting company, Intuz help businesses with custom AI/ML, AI Workflow Automations, and software development. Automate your business workflow for: Sales Marketing Accounting Finance Operations E-Commerce Customer Support Admin & Backoffice Logistics & Supply Chain
このワークフローを共有