AutomationFlowsFinance › Invoice Follow-up (7-day Reminder)

Invoice Follow-up (7-day Reminder)

Invoice Follow-Up (7-Day Reminder). Uses quickbooks, emailSend, googleSheets. Scheduled trigger; 5 nodes.

Cron / scheduled trigger★★★★☆ complexity5 nodesQuickBooksEmail SendGoogle Sheets
Finance Trigger: Cron / scheduled Nodes: 5 Complexity: ★★★★☆ Added:

This workflow follows the Emailsend → Google Sheets recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "Invoice Follow-Up (7-Day Reminder)",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 24
            }
          ]
        }
      },
      "id": "schedule-trigger",
      "name": "Schedule \u2014 Daily Check",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1,
      "position": [
        240,
        300
      ]
    },
    {
      "parameters": {
        "resource": "invoice",
        "operation": "getAll",
        "returnAll": true,
        "filters": {
          "status": "unpaid"
        }
      },
      "id": "quickbooks-invoices",
      "name": "QuickBooks \u2014 Get Unpaid Invoices",
      "type": "n8n-nodes-base.quickbooks",
      "typeVersion": 1,
      "position": [
        460,
        300
      ],
      "credentials": {
        "quickBooksOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "notes": "Swap for FreshBooks, Xero, Wave, or any accounting tool with an API"
    },
    {
      "parameters": {
        "conditions": {
          "number": [
            {
              "value1": "={{ Math.floor((Date.now() - new Date($json.DueDate).getTime()) / 86400000) }}",
              "operation": "equal",
              "value2": 7
            }
          ]
        }
      },
      "id": "filter-7-days",
      "name": "Filter \u2014 Exactly 7 Days Overdue",
      "type": "n8n-nodes-base.filter",
      "typeVersion": 1,
      "position": [
        680,
        300
      ]
    },
    {
      "parameters": {
        "fromEmail": "billing@yourdomain.com",
        "toEmail": "={{ $json.BillEmail.Address }}",
        "subject": "=Friendly reminder: Invoice #{{ $json.DocNumber }} is due",
        "emailType": "text",
        "message": "=Hi {{ $json.CustomerRef.name }},\n\nJust a quick reminder that invoice #{{ $json.DocNumber }} for ${{ $json.TotalAmt }} was due on {{ $json.DueDate }}.\n\nIf you've already sent payment, please disregard this message. Otherwise, you can pay here: [payment link]\n\nThanks,\nThe Team"
      },
      "id": "send-reminder",
      "name": "Email \u2014 Send Reminder",
      "type": "n8n-nodes-base.emailSend",
      "typeVersion": 2,
      "position": [
        900,
        300
      ],
      "credentials": {
        "smtp": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "appendOrUpdate",
        "documentId": {
          "value": "YOUR_SHEET_ID"
        },
        "sheetName": "Invoice Log",
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Invoice #": "={{ $json.DocNumber }}",
            "Customer": "={{ $json.CustomerRef.name }}",
            "Amount": "={{ $json.TotalAmt }}",
            "Due Date": "={{ $json.DueDate }}",
            "Reminder Sent": "={{ $now.toISO() }}"
          }
        }
      },
      "id": "log-to-sheets",
      "name": "Google Sheets \u2014 Log Reminder",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4,
      "position": [
        1120,
        300
      ],
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "Schedule \u2014 Daily Check": {
      "main": [
        [
          {
            "node": "QuickBooks \u2014 Get Unpaid Invoices",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "QuickBooks \u2014 Get Unpaid Invoices": {
      "main": [
        [
          {
            "node": "Filter \u2014 Exactly 7 Days Overdue",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter \u2014 Exactly 7 Days Overdue": {
      "main": [
        [
          {
            "node": "Email \u2014 Send Reminder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Email \u2014 Send Reminder": {
      "main": [
        [
          {
            "node": "Google Sheets \u2014 Log Reminder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "meta": {
    "templateCredsSetupCompleted": false,
    "description": "Runs daily, finds invoices exactly 7 days overdue, sends a reminder email, and logs it to Google Sheets. Built by Aplos AI (aplosai.com)."
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Invoice Follow-Up (7-Day Reminder). Uses quickbooks, emailSend, googleSheets. Scheduled trigger; 5 nodes.

Source: https://github.com/zachariah-mithani/aplosai-workflows/blob/c3f67b9a2b84d28e45b19922cd0fa5ebc12b7134/n8n/invoice-followup.json — original creator credit. Request a take-down →

More Finance workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Finance

This workflow provides a powerful solution for businesses using QuickBooks Online to automate their payment reminder process. It solves the time-consuming and manual task of chasing late payments by c

QuickBooks, Email Send
Finance

Tired of the standard, boring invoices from QuickBooks Online? This workflow completely automates the process of creating beautiful, custom-branded PDF invoices and emailing them directly to your clie

QuickBooks, HTTP Request, Email Send
Finance

Automated QuickBooks Invoice to Custom PDF & Email

QuickBooks, HTTP Request, Email Send
Finance

It instantly syncs new QuickBooks invoices to Google Sheets, using specific invoice data or keywords as triggers to ensure your financial records are always accurate and up-to-date.

QuickBooks, Google Sheets
Finance

This is the ultimate sales-to-cash automation. When a deal in Airtable is marked "Approved for Invoicing," this workflow intelligently syncs customer data across QuickBooks and Stripe (creating them i

Airtable Trigger, Stripe, QuickBooks +2