Archivado de recibos de pago con Stripe, Google Drive y Google Sheets

Avanzado

Este es unContent Creation, Multimodal AIflujo de automatización del dominio deautomatización que contiene 21 nodos.Utiliza principalmente nodos como If, Gmail, SplitOut, GoogleDrive, HttpRequest. Automatizar el procesamiento de recibos de pago: envío de correos, archivo y seguimiento con Stripe y Google Workspace

Requisitos previos
  • Cuenta de Google y credenciales de API de Gmail
  • Credenciales de API de Google Drive
  • Pueden requerirse credenciales de autenticación para la API de destino
  • Credenciales de API de Google Sheets
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "id": "gr2rafzxOw1ks4Bd",
  "meta": {
    "instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
    "templateCredsSetupCompleted": true
  },
  "name": "Archive Payment Receipts with Stripe, Google Drive, and Google Sheets",
  "tags": [],
  "nodes": [
    {
      "id": "cdfad755-0724-4156-b4ec-04a671a85013",
      "name": "Al hacer clic en 'Ejecutar flujo de trabajo'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -1104,
        -32
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "a511f05a-495d-4066-af54-9b977ca59aec",
      "name": "Obtener Facturas",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -848,
        -32
      ],
      "parameters": {
        "url": "https://api.stripe.com/v1/invoices?limit=5",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Bearer ${{credential.stripe.secret.key}}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "c24bc890-1e3e-4334-88a2-69fcd2c0be5e",
      "name": "Nota Adhesiva",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -928,
        128
      ],
      "parameters": {
        "height": 272,
        "content": "Fetch Invoices\n\nDescription: Makes an authenticated request to the Stripe API and retrieves the 5 most recent invoices. This serves as the raw dataset that contains invoice details such as customer information, amounts, statuses, and hosted invoice URLs.\nAction: Fetches invoice data from Stripe."
      },
      "typeVersion": 1
    },
    {
      "id": "1d8ec260-aa38-4dfa-8f73-98ea5e5e671c",
      "name": "Nota Adhesiva1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        656,
        -544
      ],
      "parameters": {
        "height": 288,
        "content": "Send Receipt Email – \n\nDescription: Sends an email to the customer using the invoice details (customer name, invoice number, amount, etc.). The previously downloaded invoice PDF is attached automatically. This ensures the customer receives a formal receipt directly in their inbox.\nAction: Sends a payment receipt email with the PDF attached."
      },
      "typeVersion": 1
    },
    {
      "id": "94dac976-2243-463c-8ac0-5bf2b3061a95",
      "name": "Nota Adhesiva2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        384,
        80
      ],
      "parameters": {
        "height": 240,
        "content": "Download File \n\nDescription: Uses the invoice’s hosted PDF link (invoice_pdf) to fetch the actual receipt document. It retrieves the PDF from Stripe as binary data, making it usable as an email attachment or for archiving.\nAction: Downloads the invoice PDF from Stripe."
      },
      "typeVersion": 1
    },
    {
      "id": "afba0c2a-08e2-4d19-ab7f-29e79b70c29a",
      "name": "Nota Adhesiva3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        48,
        -352
      ],
      "parameters": {
        "height": 256,
        "content": "IF (Already Receipted?) \n\nDescription: Looks into the invoice metadata field receipt_sent. If the receipt has already been generated and sent, the workflow will skip. Otherwise, it continues to generate and send the receipt email.\nAction: Filters out invoices that already have a receipt sent."
      },
      "typeVersion": 1
    },
    {
      "id": "64a4d0dc-6d8f-4728-adaf-ce509afce060",
      "name": "Nota Adhesiva4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -192,
        96
      ],
      "parameters": {
        "height": 224,
        "content": "IF (Paid?)\n\nDescription: Evaluates whether the invoice is marked as status = paid. Only paid invoices should move forward to receipt generation. Unpaid or draft invoices are skipped here.\nAction: Routes invoices based on payment status."
      },
      "typeVersion": 1
    },
    {
      "id": "d776ef15-e417-4449-a2a5-e1c53319f87e",
      "name": "Nota Adhesiva5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -400,
        -368
      ],
      "parameters": {
        "height": 288,
        "content": "Expand List\n\nDescription: Since Stripe returns a bundled list of invoices, this node breaks them into individual records. That way, each invoice can be independently evaluated (paid/unpaid, receipted/unreceipted) and processed correctly in subsequent steps.\nAction: Splits Stripe’s invoice list into single invoice items."
      },
      "typeVersion": 1
    },
    {
      "id": "8c3f5034-5e26-429d-9d30-4f56dd99db5d",
      "name": "Nota Adhesiva6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        992,
        288
      ],
      "parameters": {
        "height": 288,
        "content": "Append to Ledger \n\nDescription: Adds a new row in the “Payment Receipts” Google Sheet ledger with key invoice details such as date, invoice number, file name, Drive link, file ID, and file size. This acts as your permanent record of receipts for accounting and tracking purposes.\nAction: Updates the Google Sheet with invoice + Drive file metadata."
      },
      "typeVersion": 1
    },
    {
      "id": "aacfb7d2-7acb-4b1a-a7c7-39069a01055f",
      "name": "Nota Adhesiva7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        704,
        272
      ],
      "parameters": {
        "height": 208,
        "content": "Upload Invoice PDF \n\nDescription: Uploads the invoice PDF into a specific Google Drive folder. The file is named according to the invoice number, making it easy to search and retrieve later.\nAction: Stores the invoice PDF in Google Drive."
      },
      "typeVersion": 1
    },
    {
      "id": "b107aa2b-90b9-48fe-98dc-d828012444e7",
      "name": "Expandir Lista",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        -336,
        -48
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "=data"
      },
      "typeVersion": 1
    },
    {
      "id": "a83ac85d-4737-44bc-877e-6844389a9689",
      "name": "SI (¿Pagado?)",
      "type": "n8n-nodes-base.if",
      "position": [
        -128,
        -48
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "3e81fec9-095e-4ada-b6d0-1e7db2d0b446",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "paid"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "d7fec273-c100-43bf-9ddc-311f31b34493",
      "name": "SI (¿Recibo ya generado?)",
      "type": "n8n-nodes-base.if",
      "position": [
        128,
        -64
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "b8f92661-228b-457c-b6ae-263ba3b034da",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.metadata.receipt_sent }}",
              "rightValue": "false"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "c2dbb175-469f-4c19-8466-08afba27115d",
      "name": "Descargar Archivo",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        464,
        -80
      ],
      "parameters": {
        "url": "={{$json[\"invoice_pdf\"]}}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file"
            }
          }
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "49c0e75c-8b77-4d43-bc71-60b6bd02519a",
      "name": "Enviar Correo de Recibo",
      "type": "n8n-nodes-base.gmail",
      "position": [
        736,
        -240
      ],
      "webhookId": "0c82c299-6938-42ed-bda6-5007d79af34f",
      "parameters": {
        "sendTo": "={{$json.customer_email}}",
        "message": "=Hi {{$json.customer_name}},  \n\nThanks for your payment.  \nAttached is your receipt for invoice {{$json.number}} (Total: {{$json.currency}} {{$json.total}}).  \n\nRegards,  \nYour Company\n",
        "options": {
          "attachmentsUi": {
            "attachmentsBinary": [
              {}
            ]
          }
        },
        "subject": "=Payment Receipt - Invoice {{$json.number}}",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "RchiXdmY8WaQhOSJ",
          "name": "Gmail account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "b4401084-8c70-47f3-8804-637c9bef9834",
      "name": "Subir PDF de Factura",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        768,
        112
      ],
      "parameters": {
        "name": "={{$json[\"number\"]}}.pdf",
        "driveId": {
          "__rl": true,
          "mode": "url",
          "value": "{{YOUR_GOOGLE_DRIVE_URL}}"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "url",
          "value": "{{YOUR_URL}}"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "E7nEqUL27GUx1xHa",
          "name": "Techdome Account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "1efedacb-1e07-4e23-ab7c-19e0e21b6b08",
      "name": "Añadir al Registro",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1040,
        112
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "url",
          "value": "{{YOUR_URL}}"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "{{YOUR_SPREADSHEET_URL}}"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "kpPEOLCGn963qpoh",
          "name": "automations@techdome.ai"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "f535062a-1ced-46d3-8b4e-73aaeb6c6e3b",
      "name": "Registro de Errores",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -384,
        272
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "url",
          "value": "{{YOUR_URL}}"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "{{YOUR_SPREADSHEET_URL}}"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "kpPEOLCGn963qpoh",
          "name": "automations@techdome.ai"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "6f14b401-170b-4fb8-ae5d-aa079f7549cb",
      "name": "Nota Adhesiva8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -464,
        432
      ],
      "parameters": {
        "height": 320,
        "content": "Action: Logs workflow errors and failures to a dedicated error tracking spreadsheet for monitoring and debugging purposes. \n\nDescription: This Google Sheets append node serves as the error logging destination for your workflow's error handling system. When API calls fail, data validation errors occur, or other workflow issues arise, this node captures the error details and appends them as new rows to your \"error log sheet\"."
      },
      "typeVersion": 1
    },
    {
      "id": "4cd976cd-8739-47ad-bddd-25d0973c3cd8",
      "name": "Verificar Respuesta de API",
      "type": "n8n-nodes-base.if",
      "position": [
        -608,
        -32
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "e2130860-3ee5-490c-9eb0-6a6e02e9f41e",
              "operator": {
                "type": "array",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.data }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "89781301-0ca4-4dc7-924f-0ea978d6bc83",
      "name": "Nota Adhesiva9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -688,
        -400
      ],
      "parameters": {
        "height": 336,
        "content": "Action: Validates that the Stripe API returned a proper data array before attempting to process invoices. \n\nDescription: This conditional node acts as a data quality gate that prevents the workflow from breaking when the Stripe API returns unexpected or empty responses. It specifically checks for the existence of the data array in the API response, which is the standard structure that Stripe uses to return collections of objects like invoices, payments, or disputes."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "d54ecc14-b03b-46b3-88c8-1b25d10351db",
  "connections": {
    "a83ac85d-4737-44bc-877e-6844389a9689": {
      "main": [
        [
          {
            "node": "d7fec273-c100-43bf-9ddc-311f31b34493",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b107aa2b-90b9-48fe-98dc-d828012444e7": {
      "main": [
        [
          {
            "node": "a83ac85d-4737-44bc-877e-6844389a9689",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c2dbb175-469f-4c19-8466-08afba27115d": {
      "main": [
        [
          {
            "node": "49c0e75c-8b77-4d43-bc71-60b6bd02519a",
            "type": "main",
            "index": 0
          },
          {
            "node": "b4401084-8c70-47f3-8804-637c9bef9834",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a511f05a-495d-4066-af54-9b977ca59aec": {
      "main": [
        [
          {
            "node": "4cd976cd-8739-47ad-bddd-25d0973c3cd8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4cd976cd-8739-47ad-bddd-25d0973c3cd8": {
      "main": [
        [
          {
            "node": "b107aa2b-90b9-48fe-98dc-d828012444e7",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "f535062a-1ced-46d3-8b4e-73aaeb6c6e3b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "49c0e75c-8b77-4d43-bc71-60b6bd02519a": {
      "main": [
        []
      ]
    },
    "b4401084-8c70-47f3-8804-637c9bef9834": {
      "main": [
        [
          {
            "node": "1efedacb-1e07-4e23-ab7c-19e0e21b6b08",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d7fec273-c100-43bf-9ddc-311f31b34493": {
      "main": [
        [
          {
            "node": "c2dbb175-469f-4c19-8466-08afba27115d",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "cdfad755-0724-4156-b4ec-04a671a85013": {
      "main": [
        [
          {
            "node": "a511f05a-495d-4066-af54-9b977ca59aec",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Avanzado - Creación de contenido, IA Multimodal

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Información del flujo de trabajo
Nivel de dificultad
Avanzado
Número de nodos21
Categoría2
Tipos de nodos8
Descripción de la dificultad

Adecuado para usuarios avanzados, flujos de trabajo complejos con 16+ nodos

Autor
Rahul Joshi

Rahul Joshi

@rahul08

Rahul Joshi is a seasoned technology leader specializing in the n8n automation tool and AI-driven workflow automation. With deep expertise in building open-source workflow automation and self-hosted automation platforms, he helps organizations eliminate manual processes through intelligent n8n ai agent automation solutions.

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34