Générer des factures pour les clients avec Jotform et QuickBooks
Avancé
Ceci est uncontenant 22 nœuds.Utilise principalement des nœuds comme If, Code, Webhook, Quickbooks. Générer des factures pour les clients avec Jotform et QuickBooks
Prérequis
- •Point de terminaison HTTP Webhook (généré automatiquement par n8n)
Nœuds utilisés (22)
Catégorie
-
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
"id": "9JbuwG2cZQVIvUHn",
"meta": {
"instanceId": "3549451ca835035557d5dc1c3d9e6ba924e7314534a74c901f66b91f9ef6023e",
"templateCredsSetupCompleted": true
},
"name": "Generate Invoices for Customers with Jotform and QuickBooks",
"tags": [],
"nodes": [
{
"id": "4f6366d5-b755-4bec-83eb-482efdba74a3",
"name": "Recevoir la soumission du formulaire",
"type": "n8n-nodes-base.webhook",
"position": [
-464,
0
],
"webhookId": "d65e73cf-179b-4021-82d0-4ebeccb4cd10",
"parameters": {
"path": "requests",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 2.1
},
{
"id": "6d770cb0-0b36-484c-9c58-46afe7a4bb8a",
"name": "Si",
"type": "n8n-nodes-base.if",
"position": [
320,
0
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "bfa24559-7702-4ebf-909d-c5c2a60ad817",
"operator": {
"type": "object",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json }}",
"rightValue": 0
},
{
"id": "b4301cfe-a22a-490f-a72b-50d266bc1c5e",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.Id }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "4391d022-ce12-41ab-ab4b-c35143f6ac38",
"name": "Obtenir le produit",
"type": "n8n-nodes-base.quickbooks",
"position": [
1248,
0
],
"parameters": {
"limit": 1,
"filters": {
"query": "=WHERE name = '{{ $json.item.name }}'"
},
"resource": "item",
"operation": "getAll"
},
"credentials": {
"quickBooksOAuth2Api": {
"id": "E1S8XZZk9iMCPDSN",
"name": "QuickBooks Online account"
}
},
"typeVersion": 1
},
{
"id": "b13d423b-9fe9-44d2-ac74-93b193a5de1b",
"name": "Créer la facture",
"type": "n8n-nodes-base.quickbooks",
"position": [
1856,
0
],
"parameters": {
"Line": [
{
"Amount": 1,
"itemId": "={{ $json.item.id }}",
"DetailType": "SalesItemLineDetail",
"Description": "Jotform submission"
}
],
"resource": "invoice",
"operation": "create",
"CustomerRef": "={{ $json.customer.id }}",
"additionalFields": {}
},
"credentials": {
"quickBooksOAuth2Api": {
"id": "E1S8XZZk9iMCPDSN",
"name": "QuickBooks Online account"
}
},
"typeVersion": 1
},
{
"id": "08437c34-4454-4690-a752-d011945caf5a",
"name": "Envoyer la facture",
"type": "n8n-nodes-base.quickbooks",
"position": [
2160,
0
],
"parameters": {
"email": "={{ $('Add item id').item.json.customer.email }}",
"resource": "invoice",
"invoiceId": "={{ $json.Id }}",
"operation": "send"
},
"credentials": {
"quickBooksOAuth2Api": {
"id": "E1S8XZZk9iMCPDSN",
"name": "QuickBooks Online account"
}
},
"typeVersion": 1
},
{
"id": "b0b10282-e6a3-459b-ae3d-23a4aeec885b",
"name": "Vérifier si le client existe",
"type": "n8n-nodes-base.quickbooks",
"position": [
112,
0
],
"parameters": {
"limit": 1,
"filters": {
"query": "=Where PrimaryEmailAddr = '{{ $json.customer.email }}'"
},
"operation": "getAll"
},
"credentials": {
"quickBooksOAuth2Api": {
"id": "E1S8XZZk9iMCPDSN",
"name": "QuickBooks Online account"
}
},
"typeVersion": 1
},
{
"id": "db4fa3c0-89fd-48b6-b2f4-c5e1e188e622",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
-544,
-112
],
"parameters": {
"color": 7,
"width": 256,
"height": 320,
"content": "## Receive Submission\nReceives the product/service form submission from Jotform"
},
"typeVersion": 1
},
{
"id": "6b756b11-0a93-4df7-b8fb-82c65057c6c6",
"name": "Note adhésive1",
"type": "n8n-nodes-base.stickyNote",
"position": [
64,
-112
],
"parameters": {
"color": 7,
"width": 400,
"height": 320,
"content": "## Check If Customer exists \nChecks if the customer exists in QBO or not"
},
"typeVersion": 1
},
{
"id": "c7e5987a-8bf2-4651-becb-70bf5b039b14",
"name": "Note adhésive2",
"type": "n8n-nodes-base.stickyNote",
"position": [
512,
-336
],
"parameters": {
"color": 7,
"width": 304,
"height": 336,
"content": "## Customer Exists\nNow since the customer exists we will update the customer details like updating the billing details with the new one"
},
"typeVersion": 1
},
{
"id": "8f1d632d-cf26-4bb2-80e9-c019cde28bdb",
"name": "Créer le client",
"type": "n8n-nodes-base.quickbooks",
"position": [
608,
176
],
"parameters": {
"operation": "create",
"displayName": "=",
"additionalFields": {
"BillAddr": {
"details": {
"City": "={{ $('Format data').item.json.address.city }}",
"Line1": "={{ $('Format data').item.json.address.line1 }}",
"PostalCode": "={{ $('Format data').item.json.address.postalZipCode }}"
}
},
"GivenName": "={{ $('Format data').item.json.customer.name }}",
"PrimaryPhone": "={{ $('Format data').item.json.customer.phone }}",
"PrimaryEmailAddr": "={{ $('Format data').item.json.customer.email }}"
}
},
"credentials": {
"quickBooksOAuth2Api": {
"id": "E1S8XZZk9iMCPDSN",
"name": "QuickBooks Online account"
}
},
"typeVersion": 1
},
{
"id": "d3f307c0-6e27-4212-bd2c-ab585a6ac095",
"name": "Mettre à jour le client",
"type": "n8n-nodes-base.quickbooks",
"position": [
608,
-192
],
"parameters": {
"operation": "update",
"customerId": "={{ $json.Id }}",
"updateFields": {
"BillAddr": {
"details": {
"City": "={{ $('Format data').item.json.address.city }}",
"Line1": "={{ $('Format data').item.json.address.line1 }}",
"PostalCode": "={{ $('Format data').item.json.address.postalZipCode }}"
}
},
"GivenName": "={{ $('Format data').item.json.customer.name }}",
"PrimaryPhone": "={{ $('Format data').item.json.customer.phone }}"
}
},
"credentials": {
"quickBooksOAuth2Api": {
"id": "E1S8XZZk9iMCPDSN",
"name": "QuickBooks Online account"
}
},
"typeVersion": 1
},
{
"id": "74f2a7f2-35bf-43e0-979b-6032cca27c40",
"name": "Note adhésive3",
"type": "n8n-nodes-base.stickyNote",
"position": [
512,
48
],
"parameters": {
"color": 7,
"width": 304,
"height": 320,
"content": "## Customer Doesn't Exist\nNow since the customer doesn't exist we will create new customer"
},
"typeVersion": 1
},
{
"id": "b8ea9c7a-f469-4a6d-99c5-3b4b952368b6",
"name": "Note adhésive4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1168,
-112
],
"parameters": {
"color": 7,
"width": 256,
"height": 320,
"content": "## Get The Item\nGets the selected product/service from QBO"
},
"typeVersion": 1
},
{
"id": "b1744ed2-7b32-4858-ad4d-1156594d54cd",
"name": "Note adhésive5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1776,
-112
],
"parameters": {
"color": 7,
"width": 256,
"height": 320,
"content": "## Create The Invoice\nCreates a new invoice for that customer"
},
"typeVersion": 1
},
{
"id": "0cb2eea2-6239-47fb-9ec3-41ffd9bf3c41",
"name": "Note adhésive6",
"type": "n8n-nodes-base.stickyNote",
"position": [
2080,
-112
],
"parameters": {
"color": 7,
"width": 256,
"height": 320,
"content": "## Send The Invoice\nSends the newly created invoice for that customer(via email)"
},
"typeVersion": 1
},
{
"id": "b20793cf-e29a-4fe4-a7b9-72c8d8311820",
"name": "Note adhésive7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1328,
-416
],
"parameters": {
"width": 736,
"height": 880,
"content": "## Generate Invoices for Customers with Jotform and QuickBooks \nThis workflow automates the entire process of receiving a product/service order, checking or creating a customer in **QuickBooks Online (QBO)**, generating an invoice, and emailing it — all triggered by a form submission (via **Jotform**).\n\n## How It Works\n### 1- Receive Submission\n* Triggered when a user submits a form.\n* Collects data like customer details, selected product/service, etc.\n\n### 2- Check If Customer Exists\n* Searches QBO to determine if the customer already exists.\n* ✅ **If Customer Exists:** **Update** customer details (e.g., billing address).\n* ❌ **If Customer Doesn’t Exist:** **Create** a new customer in QBO.\n\n### 3- Get The Item\n* Retrieves the selected product or service from QBO.\n\n### 4- Create The Invoice\n* Generates a new invoice for the customer using the item selected.\n\n### 5. Send The Invoice\n* Automatically sends the invoice via email to the customer.\n\n## Who Can Benefit from This Workflow?\n* **Freelancers**\n* **Service Providers**\n* **Consultants & Coaches**\n* **Small Businesses**\n* **E-commerce or Custom Product Sellers**\n\n## Requirements\n- Jotform webhook setup, more info [here](https://www.jotform.com/help/245-how-to-setup-a-webhook-with-jotform/)\n- QuickBooks Online credentials, more info [here](https://developer.intuit.com/app/developer/qbo/docs/get-started/get-client-id-and-client-secret)"
},
"typeVersion": 1
},
{
"id": "c35659b4-98f2-4b24-882b-7820329962f3",
"name": "Note adhésive8",
"type": "n8n-nodes-base.stickyNote",
"position": [
-240,
-112
],
"parameters": {
"color": 7,
"width": 256,
"height": 320,
"content": "## Format Data\nFormats the data thus making it easier to be used in other nodes"
},
"typeVersion": 1
},
{
"id": "777c7f53-c2c7-486f-8b39-3a545dc15838",
"name": "Formater les données",
"type": "n8n-nodes-base.code",
"position": [
-160,
0
],
"parameters": {
"jsCode": "function extractAddressData(text) {\n const regex = /Street Address:\\s*([^<]+)<br>Street Address Line 2:\\s*([^<]+)<br>City:\\s*([^<]+)<br>State \\/ Province:\\s*([^<]+)<br>Postal \\/ Zip Code:\\s*([^<]+)<br>Country:\\s*([^<]+)<br>/;\n const matches = text.match(regex);\n \n if (matches) {\n return {\n line1: matches[1].trim(),\n line2: matches[2].trim(),\n city: matches[3].trim(),\n stateProvince: matches[4].trim(),\n postalZipCode: matches[5].trim(),\n country: matches[6].trim()\n };\n }\n \n return {\n line1: null,\n line2: null,\n city: null,\n stateProvince: null,\n postalZipCode: null,\n country: null\n }\n}\n\nreturn {\n address: extractAddressData($input.first().json.body.billingAddress),\n customer: {\n name: $input.first().json.body.name,\n email: $input.first().json.body.email,\n phone: $input.first().json.body.phone\n },\n item: {\n name: $input.first().json.body.itemName\n }\n}"
},
"typeVersion": 2
},
{
"id": "b7e7db5f-40e5-4d88-a7fe-508dbe49619f",
"name": "Note adhésive9",
"type": "n8n-nodes-base.stickyNote",
"position": [
864,
-112
],
"parameters": {
"color": 7,
"width": 256,
"height": 320,
"content": "## Add Customer Id\nAdds customer id to the data"
},
"typeVersion": 1
},
{
"id": "ab0a3406-5106-4c82-b4b9-3972a7ac630d",
"name": "Ajouter l'ID client",
"type": "n8n-nodes-base.code",
"position": [
944,
0
],
"parameters": {
"jsCode": "return {\n ...$('Format data').first().json,\n customer: {\n ...$('Format data').first().json.customer,\n id: $input.first().json.Id\n }\n}"
},
"typeVersion": 2
},
{
"id": "7167d106-716c-4d5c-bfdc-3d7905523644",
"name": "Note adhésive10",
"type": "n8n-nodes-base.stickyNote",
"position": [
1472,
-112
],
"parameters": {
"color": 7,
"width": 256,
"height": 320,
"content": "## Add Item Id\nAdds item (service/product) id to the data"
},
"typeVersion": 1
},
{
"id": "a7aff86c-425b-424c-ac2e-135176e43a40",
"name": "Ajouter l'ID article",
"type": "n8n-nodes-base.code",
"position": [
1552,
0
],
"parameters": {
"jsCode": "return {\n ...$('Add customer id').first().json,\n item: {\n ...$('Add customer id').first().json.item,\n id: $input.first().json.Id\n }\n}"
},
"typeVersion": 2
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "471906c5-a3fb-4975-8a45-800eab74c62f",
"connections": {
"6d770cb0-0b36-484c-9c58-46afe7a4bb8a": {
"main": [
[
{
"node": "d3f307c0-6e27-4212-bd2c-ab585a6ac095",
"type": "main",
"index": 0
}
],
[
{
"node": "8f1d632d-cf26-4bb2-80e9-c019cde28bdb",
"type": "main",
"index": 0
}
]
]
},
"a7aff86c-425b-424c-ac2e-135176e43a40": {
"main": [
[
{
"node": "b13d423b-9fe9-44d2-ac74-93b193a5de1b",
"type": "main",
"index": 0
}
]
]
},
"777c7f53-c2c7-486f-8b39-3a545dc15838": {
"main": [
[
{
"node": "b0b10282-e6a3-459b-ae3d-23a4aeec885b",
"type": "main",
"index": 0
}
]
]
},
"ab0a3406-5106-4c82-b4b9-3972a7ac630d": {
"main": [
[
{
"node": "4391d022-ce12-41ab-ab4b-c35143f6ac38",
"type": "main",
"index": 0
}
]
]
},
"4391d022-ce12-41ab-ab4b-c35143f6ac38": {
"main": [
[
{
"node": "a7aff86c-425b-424c-ac2e-135176e43a40",
"type": "main",
"index": 0
}
]
]
},
"b13d423b-9fe9-44d2-ac74-93b193a5de1b": {
"main": [
[
{
"node": "08437c34-4454-4690-a752-d011945caf5a",
"type": "main",
"index": 0
}
]
]
},
"8f1d632d-cf26-4bb2-80e9-c019cde28bdb": {
"main": [
[
{
"node": "ab0a3406-5106-4c82-b4b9-3972a7ac630d",
"type": "main",
"index": 0
}
]
]
},
"d3f307c0-6e27-4212-bd2c-ab585a6ac095": {
"main": [
[
{
"node": "ab0a3406-5106-4c82-b4b9-3972a7ac630d",
"type": "main",
"index": 0
}
]
]
},
"4f6366d5-b755-4bec-83eb-482efdba74a3": {
"main": [
[
{
"node": "777c7f53-c2c7-486f-8b39-3a545dc15838",
"type": "main",
"index": 0
}
]
]
},
"b0b10282-e6a3-459b-ae3d-23a4aeec885b": {
"main": [
[
{
"node": "6d770cb0-0b36-484c-9c58-46afe7a4bb8a",
"type": "main",
"index": 0
}
]
]
}
}
}Foire aux questions
Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Génération de factures et envoi de rappels aux clients avec Jotform, QuickBooks et Outlook
Automatiser la création de factures et les rappels intelligents avec Jotform, QuickBooks et Outlook AI
If
Set
Code
+
If
Set
Code
48 NœudsAppUnits AI
Génération de factures pour les clients et envoi de rappels
Génération automatique de factures et rappels de paiement avec QuickBooks, Jotform et GPT-4o
If
Set
Code
+
If
Set
Code
48 NœudsAppUnits AI
Générer et envoyer des rappels pour des factures clients avec Jotform et QuickBooks
Générer des factures et envoyer des résumés de rappels IA avec Jotform et QuickBooks
If
Set
Code
+
If
Set
Code
48 NœudsAppUnits AI
Génération de factures pour les clients en utilisant Jotform, Xero et Slack
Automatisation de la génération et de l'envoi de factures par e-mail avec Jotform, Xero et GPT-4o-mini
If
Code
Xero
+
If
Code
Xero
20 NœudsAppUnits AI
Création automatisée de factures et notifications d'équipe avec Jotform, Xero, Outlook et Telegram
Création automatique de factures et communication client avec Jotform, Xero, Outlook et Telegram
If
Code
Wait
+
If
Code
Wait
27 NœudsAppUnits AI
Générer et envoyer des rappels pour des factures clients avec Jotform et Xero
Générer des factures et envoyer des rappels pilotés par l'IA avec Jotform et Xero
If
Set
Code
+
If
Set
Code
39 NœudsAppUnits AI
Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds22
Catégorie-
Types de nœuds5
Description de la difficulté
Auteur
AppUnits AI
@appunitsaiLiens externes
Voir sur n8n.io →
Partager ce workflow