{
  "name": "Automate expense reporting from Airtable to QuickBooks",
  "nodes": [
    {
      "id": "92e68aed-1a03-478b-89d4-5d94e98b3db0",
      "name": "Airtable Trigger",
      "type": "n8n-nodes-base.airtableTrigger",
      "position": [
        -120,
        1120
      ]
    },
    {
      "id": "0b1822e8-1fcf-4ef0-872d-ec3b50d0ef9d",
      "name": "Search records",
      "type": "n8n-nodes-base.airtable",
      "position": [
        240,
        1120
      ]
    },
    {
      "id": "6bd50650-7226-48ad-afe3-c2493e6c50f8",
      "name": "If",
      "type": "n8n-nodes-base.if",
      "position": [
        700,
        1120
      ]
    },
    {
      "id": "2d50d1e9-8c4c-4dff-91cb-d39d0c1d0237",
      "name": "No Operation, do nothing",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1580,
        1580
      ]
    },
    {
      "id": "5edab364-f81e-47e3-8da4-601b84b3ac19",
      "name": "Download File",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1560,
        780
      ]
    },
    {
      "id": "84784657-8fad-4e60-aa32-bdf75255ac2f",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        2800,
        760
      ]
    },
    {
      "id": "02450b3c-81fa-4159-a910-730365a05dfd",
      "name": "Update record",
      "type": "n8n-nodes-base.airtable",
      "position": [
        3840,
        760
      ]
    },
    {
      "id": "cb4a1747-f86b-427a-8325-113315392775",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -320,
        1300
      ],
      "parameters": {
        "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- ⏰ "
      }
    },
    {
      "id": "d3c122f4-ce1a-4968-b57a-f8fa3ad261eb",
      "name": "Sticky Note1",
      "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 processi"
      }
    },
    {
      "id": "2bc54880-2d88-41e6-9327-37dd97da3689",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        500,
        1280
      ],
      "parameters": {
        "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; w"
      }
    },
    {
      "id": "111d0402-84f5-4f09-b78d-b5b9ead43713",
      "name": "Sticky Note3",
      "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 unap"
      }
    },
    {
      "id": "b9847915-663e-4ec6-b815-71b09d28e687",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1360,
        440
      ],
      "parameters": {
        "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 th"
      }
    },
    {
      "id": "6c6f6ede-b978-4351-abe3-cc6226ebc746",
      "name": "QBO-Create Expense",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2220,
        460
      ]
    },
    {
      "id": "d6f91071-2044-4c56-b940-962a63765b60",
      "name": "QBO-Upload File",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3320,
        760
      ]
    },
    {
      "id": "b12dc68f-ef24-42a7-801c-54d03e729b67",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2060,
        100
      ],
      "parameters": {
        "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- 📊 Autom"
      }
    },
    {
      "id": "e0617428-57bd-4fd6-b4cd-afec5931f363",
      "name": "Sticky Note6",
      "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 "
      }
    },
    {
      "id": "21f9dc2b-852c-43eb-9600-beb33c567bf7",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3120,
        500
      ],
      "parameters": {
        "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:"
      }
    },
    {
      "id": "5e7976bb-8812-407b-b79e-a67f2462e07c",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3680,
        940
      ],
      "parameters": {
        "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 e"
      }
    },
    {
      "id": "f270dc7e-492a-4f23-9f65-f4658c3aedde",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -180,
        20
      ],
      "parameters": {
        "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"
      }
    },
    {
      "id": "a356ca74-915c-4349-9d68-c1a03cdc58f8",
      "name": "Sticky Note10",
      "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\nW"
      }
    }
  ],
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "Download File",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "No Operation, do nothing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "QBO-Upload File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download File": {
      "main": [
        [
          {
            "node": "QBO-Create Expense",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Search records": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "QBO-Upload File": {
      "main": [
        [
          {
            "node": "Update record",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Airtable Trigger": {
      "main": [
        [
          {
            "node": "Search records",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "QBO-Create Expense": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}