AutomationFlowsFinance › Create Quickbooks Online Customers with Sales Receipts for New Stripe Payments

Create Quickbooks Online Customers with Sales Receipts for New Stripe Payments

ByArtur @arlusm1 on n8n.io

Streamline your accounting by automatically creating QuickBooks Online customers and sales receipts whenever a successful Stripe payment is processed. Ideal for businesses looking to reduce manual data entry and improve accounting efficiency. Trigger: The workflow is triggered…

Event trigger★★★☆☆ complexity10 nodesHTTP RequestStripeStripe TriggerQuickBooks
Finance Trigger: Event Nodes: 10 Complexity: ★★★☆☆ Added:

This workflow corresponds to n8n.io template #2807 — we link there as the canonical source.

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
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "7fe02521-c46a-4314-9387-b7b4983fa859",
      "name": "POST Sales Receipt",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1320,
        -120
      ],
      "parameters": {
        "url": "https://sandbox-quickbooks.api.intuit.com/YOUR_AWS_SECRET_KEY_HERE?minorversion=73",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"Line\": [\n    {\n      \"Description\": \"{{ $json.data.object.description }}\",\n      \"DetailType\": \"SalesItemLineDetail\",\n      \"SalesItemLineDetail\": {\n        \"TaxCodeRef\": {\n          \"value\": \"NON\"\n        },\n        \"Qty\": 1,\n        \"UnitPrice\": {{ $json.data.object.amount_received / 100 }},\n        \"ItemRef\": {\n          \"name\": \"Subscription\", \n          \"value\": \"10\"\n        }\n      },\n      \"Amount\": {{ $json.data.object.amount / 100 }},\n      \"LineNum\": 1\n    }\n  ],\n  \"CustomerRef\": {\n    \"value\": {{ $input.all()[2].json.QueryResponse.Customer[0].BillAddr.Id }},\n    \"name\": \"{{ $input.all()[2].json.QueryResponse.Customer[0].DisplayName }}\"\n  },\n  \"CurrencyRef\": {\n    \"value\": \"{{ $json.data.object.currency.toUpperCase() }}\"\n  },\n  \"PrivateNote\": \"Payment from Stripe Payment Intent ID: {{ $json.data.object.id }}\"\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "quickBooksOAuth2Api"
      },
      "credentials": {
        "quickBooksOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 4.2
    },
    {
      "id": "5ed429d7-c93d-48c8-b603-ca8d7efb57ed",
      "name": "GET Quickbooks Customer",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        400,
        -20
      ],
      "parameters": {
        "url": "=https://sandbox-quickbooks.api.intuit.com/v3/company/9341453851324714/query?query=select * from Customer Where PrimaryEmailAddr = '{{ $json.email }}'&minorversion=73\n\n",
        "options": {},
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "quickBooksOAuth2Api"
      },
      "credentials": {
        "httpCustomAuth": {
          "name": "<your credential>"
        },
        "quickBooksOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "bef5b4c3-4948-4294-bd80-7039342edf0d",
      "name": "Get Stripe Customer",
      "type": "n8n-nodes-base.stripe",
      "position": [
        240,
        -140
      ],
      "parameters": {
        "resource": "customer",
        "customerId": "={{ $json.data.object.customer }}"
      },
      "credentials": {
        "stripeApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "042fff2c-b5e7-4877-b935-f6a707118c4a",
      "name": "New Payment",
      "type": "n8n-nodes-base.stripeTrigger",
      "position": [
        80,
        -260
      ],
      "parameters": {
        "events": [
          "payment_intent.succeeded"
        ]
      },
      "credentials": {
        "stripeApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "12235c25-712b-4e84-b744-60573e00d381",
      "name": "If Customer Exists",
      "type": "n8n-nodes-base.if",
      "position": [
        560,
        100
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "aef7393c-c4ff-4196-887d-6a9b057381f8",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.QueryResponse.Customer[0].PrimaryEmailAddr.Address }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "68f63246-cb95-494f-918c-c0c6da5a64f9",
      "name": "Use Stripe Customer",
      "type": "n8n-nodes-base.merge",
      "position": [
        880,
        120
      ],
      "parameters": {},
      "executeOnce": true,
      "typeVersion": 3
    },
    {
      "id": "e9eea332-7109-479f-8f50-65b3b9438e0e",
      "name": "Create QuickBooks Customer",
      "type": "n8n-nodes-base.quickbooks",
      "position": [
        1100,
        120
      ],
      "parameters": {
        "operation": "create",
        "displayName": "={{ $input.all()[0].json.name }}",
        "additionalFields": {
          "Balance": "={{ $input.all()[0].json.balance }}",
          "PrimaryEmailAddr": "={{ $input.all()[0].json.email }}"
        }
      },
      "credentials": {
        "quickBooksOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 1
    },
    {
      "id": "f805f03d-93b7-4e3b-8b6a-37d9dd802368",
      "name": "Merge Stripe and QuickBooks Data",
      "type": "n8n-nodes-base.merge",
      "position": [
        1100,
        -120
      ],
      "parameters": {
        "numberInputs": 3
      },
      "typeVersion": 3
    },
    {
      "id": "b9c31838-2bb7-4882-bd15-c096cb97e225",
      "name": "Merge Payment and QuickBooks Customer",
      "type": "n8n-nodes-base.merge",
      "position": [
        1320,
        120
      ],
      "parameters": {},
      "executeOnce": true,
      "typeVersion": 3
    },
    {
      "id": "cb69fcee-8d5d-47ab-be76-9e25cb0a7f42",
      "name": "POST Sales Receipt To QuickBooks",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1540,
        120
      ],
      "parameters": {
        "url": "https://sandbox-quickbooks.api.intuit.com/YOUR_AWS_SECRET_KEY_HERE?minorversion=73",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"Line\": [\n    {\n      \"Description\": \"{{ $json.data.object.description }}\",\n      \"DetailType\": \"SalesItemLineDetail\",\n      \"SalesItemLineDetail\": {\n        \"TaxCodeRef\": {\n          \"value\": \"NON\"\n        },\n        \"Qty\": 1,\n        \"UnitPrice\": {{ $json.data.object.amount_received / 100 }},\n        \"ItemRef\": {\n          \"name\": \"Subscription\", \n          \"value\": \"10\"\n        }\n      },\n      \"Amount\": {{ $json.data.object.amount / 100 }},\n      \"LineNum\": 1\n    }\n  ],\n  \"CustomerRef\": {\n    \"value\": {{ $input.all()[1].json.Id}},\n    \"name\": \"{{ $input.all()[1].json.DisplayName }}\"\n  },\n  \"CurrencyRef\": {\n    \"value\": \"{{ $json.data.object.currency.toUpperCase() }}\"\n  },\n  \"PrivateNote\": \"Payment from Stripe Payment Intent ID: {{ $json.data.object.id }}\"\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "quickBooksOAuth2Api"
      },
      "credentials": {
        "quickBooksOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 4.2
    }
  ],
  "connections": {
    "New Payment": {
      "main": [
        [
          {
            "node": "Get Stripe Customer",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge Stripe and QuickBooks Data",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge Payment and QuickBooks Customer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If Customer Exists": {
      "main": [
        [
          {
            "node": "Merge Stripe and QuickBooks Data",
            "type": "main",
            "index": 2
          }
        ],
        [
          {
            "node": "Use Stripe Customer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "POST Sales Receipt": {
      "main": [
        []
      ]
    },
    "Get Stripe Customer": {
      "main": [
        [
          {
            "node": "GET Quickbooks Customer",
            "type": "main",
            "index": 0
          },
          {
            "node": "Use Stripe Customer",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Use Stripe Customer": {
      "main": [
        [
          {
            "node": "Create QuickBooks Customer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "GET Quickbooks Customer": {
      "main": [
        [
          {
            "node": "If Customer Exists",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge Stripe and QuickBooks Data",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Create QuickBooks Customer": {
      "main": [
        [
          {
            "node": "Merge Payment and QuickBooks Customer",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Merge Stripe and QuickBooks Data": {
      "main": [
        [
          {
            "node": "POST Sales Receipt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge Payment and QuickBooks Customer": {
      "main": [
        [
          {
            "node": "POST Sales Receipt To QuickBooks",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

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

Streamline your accounting by automatically creating QuickBooks Online customers and sales receipts whenever a successful Stripe payment is processed. Ideal for businesses looking to reduce manual data entry and improve accounting efficiency. Trigger: The workflow is triggered…

Source: https://n8n.io/workflows/2807/ — 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

Http Stripe. Uses httpRequest, stripe, stripeTrigger, quickbooks. Event-driven trigger; 10 nodes.

HTTP Request, Stripe, Stripe Trigger +1
Finance

Automated Stripe Payment to QuickBooks Sales Receipt

HTTP Request, Stripe, Stripe Trigger +1
Finance

In this example, the workflow is triggered from a new payout from Stripe. It then logs the transaction as a journal entry in Wave Accounting, helping you automate your accounting without needing to pa

Stripe Trigger, HTTP Request
Finance

This workflow automates the process of recording successful payments from Stripe into QuickBooks by creating corresponding Sales Receipts. It ensures payment data is captured accurately, checks whethe

QuickBooks, Stripe
Finance

This automation manages Stripe disputes by fetching dispute data, formatting it, logging it into Google Sheets, updating related payment records, and notifying the customer via email. It ensures finan

HTTP Request, Google Sheets, Gmail