Back to Nodes

InvoicingBuilder

Last updated Nov 5, 2026

n8n community node for InvoicingBuilder to create invoices, manage clients, generate financial reports, and analyse billing trends.

445 Weekly Downloads
767 Monthly Downloads

Included Nodes

InvoicingBuilder

Description

@invoicing-builder/n8n-nodes-invoicing-builder

![npm version](https://www.npmjs.com/package/@invoicing-builder/n8n-nodes-invoicing-builder)
![License: MIT](LICENSE)

An n8n community node for InvoicingBuilder. Create invoices from workflow data or Google Sheets, manage clients, update payment status, send payment reminders, download rendered invoices, and pull financial reports, all from your n8n workflows.

n8n is a fair-code licensed workflow automation platform.

> Before you automate: several operations are hard to undo (deleting records, emailing clients, changing payment status). Read Operations with side effects and test against non-production data first.

Table of contents

  • Installation
  • Quick start
  • Credentials
  • Compatibility
  • Operations
  • – Invoice
    – Client
    – Report

  • Operations with side effects
  • Limits
  • Using the node as an AI Agent tool
  • Example workflows
  • Troubleshooting
  • Resources
  • License
  • Installation

    Follow the n8n community nodes installation guide.

    Self-hosted n8n (UI): open Settings → Community Nodes → Install, enter @invoicing-builder/n8n-nodes-invoicing-builder, accept the risk notice, and install.

    Self-hosted n8n (manual): install into your n8n custom nodes directory, then restart n8n.

    npm install @invoicing-builder/n8n-nodes-invoicing-builder
    

    Docker and queue-mode setups differ. Make sure the package is installed where every n8n process that runs workflows can load it. See the manual installation guide.

    n8n Cloud: community nodes are available on Cloud only after n8n has verified them. If this node does not appear in the nodes panel, verified community nodes may be disabled by your instance owner, or this package may not be verified yet.

    Community nodes run with the same access as n8n itself. Install only packages whose source you trust.

    Quick start

    1. Create an InvoicingBuilder API credential (see Credentials).
    2. Add the InvoicingBuilder node to a workflow and select the credential.
    3. Run a read-only operation first, such as Invoice → Get an Invoice, and confirm the output.
    4. Only then enable operations that send email, change payment status, or delete data.

    Credentials

    Create an InvoicingBuilder API credential with:

    | Field | Required | Description |
    | ——- | ——– | ———————————————————————————————————————– |
    | API Key | Yes | Generate it under API Keys in your InvoicingBuilder account. Keys start with ib_. |

    Credential safety:

  • Keep the key in the n8n credential only. Never put it in node parameters, expressions, workflow JSON, screenshots, or logs.
  • If a key is exposed, revoke it in InvoicingBuilder and create a new one.
  • Use an account and key with only the access your workflows need.
  • Compatibility

    | Item | Value |
    | ——————- | —— |
    | Minimum n8n version | 1.86.4 |
    | Tested n8n versions | 1.86.4 |
    | Node.js | 24.x |

    Operations

    The InvoicingBuilder node has three resources.

    | Resource | Operations |
    | ———– | ———————————————————— |
    | Invoice | Create, Download, Get, Mark as Paid, Delete |
    | Client | Create, Update, Get, Get Many, Delete, Send Payment Reminder |
    | Report | Summary, Analyse Trends |

    Invoice

    #### Create

    Common parameters:

    | Parameter | Description |
    | ———– | ————————————————- |
    | Template | Template from your account. |
    | Data Source | Direct Input / Workflow Data or Google Sheet. |
    | Format | PDF (default) or PNG. |
    | Options | Send to Client (emails the rendered invoice to the client. See side effects). |

    Data Source: Direct Input / Workflow Data

    Build the invoice from data in your workflow.

    | Parameter | Description |
    | —————– | ——————————————————————– |
    | Client | Select a client from your client list. |
    | Line Items | See below. |
    | Additional Fields | Optional fields including Invoice Number, PO Number, Invoice Date, Due Date, and more (see below). |

    Line item fields:

    | Field | Description |
    | ———— | ———————————————– |
    | Description | Required. |
    | Quantity | Default 1. |
    | Rate / Price | Price per unit. |
    | Tax (%) | Optional percentage, for example 10 or 10%. |

    If you add no line items, incoming items that contain a lineItems or items array are mapped automatically.

    Additional fields: Invoice Number, PO Number, Invoice Date, Due Date, Amount Paid, Notes, Terms & Conditions, Payment Terms (for example Net 30), Logo (URL or Base64), Signature (URL or Base64), and Custom Fields (JSON) for template-specific values.

    Data Source: Google Sheet

    Reads rows from a worksheet, groups rows into invoices, and renders them.

    | Parameter | Description |
    | —————— | ———————————————- |
    | Google Spreadsheet | Google Spreadsheet URL or Spreadsheet ID. |
    | Worksheet | Worksheet name. Defaults to Sheet1. |

    > Note – Google Sheet Permissions:
    > To allow the node to read rows directly without requiring separate Google OAuth credentials, the spreadsheet must be shared via a public link:
    >
    > 1. Open the spreadsheet in Google Sheets and click Share (top-right corner).
    > 2. Under General access, change the setting to Anyone with the link and set the role to Viewer.
    > 3. Click Copy link and paste it into the Google Spreadsheet field.
    >
    > Security consideration: Anyone with the link will be able to read the spreadsheet contents. Please ensure this complies with your organization’s data privacy policies.

    How rows are mapped:

  • Grouping: rows are grouped into invoices using an identifier column such as Invoice Number, Order ID, or Customer Name. Consecutive rows with the same identifier become line items of one invoice and inherit its header values.
  • Detected columns: Invoice Number, Date, Due Date, PO Number, Payment Terms, Ship To, Bill To, Notes, Terms, Description, Quantity, Rate, Tax, Amount.
  • > A sample sheet is in

    See Limits for the two-invoice cap per execution.

    #### Download

    Downloads a saved invoice as a binary file.

    | Parameter | Description |
    | ————— | —————————————- |
    | Invoice | Select an invoice or pass an invoice ID. |
    | Download Format | PDF (default) or PNG. |

    Output: binary property data plus success, invoiceId, format, and fileName.

    #### Get

    Returns an invoice’s data, line items, totals (subtotal, taxes, balance due), and payment status (isPaid).

    | Parameter | Description |
    | ——— | —————————————- |
    | Invoice | Select an invoice or pass an invoice ID. |

    #### Mark as Paid

    Sets an invoice’s payment status.

    | Parameter | Description |
    | ——— | —————————————- |
    | Invoice | Select an invoice or pass an invoice ID. |
    | Status | Paid (default) or Unpaid. |

    Example output:

    {
        "success": true,
        "message": "Invoice marked as paid successfully.",
        "invoiceId": "inv_987654321",
        "isPaid": true,
        "balanceDue": "0.00"
    }
    

    #### Delete

    Deletes an invoice and its associated reminders from your InvoicingBuilder history.

    | Parameter | Description |
    | ——— | —————————————- |
    | Invoice | Select an invoice or pass an invoice ID. |

    Output: success, message, invoiceId.

    Client

    | Operation | Parameters | Notes |
    | ————————- | —————————————————————- | —————————————————————————– |
    | Create | Name; Additional Fields (Bill To, Email, Ship To) | |
    | Update | Client; fields to change (Name, Email, Bill To, Ship To) | Only the fields you set are sent. Other fields are left unchanged. |
    | Get | Client | |
    | Get Many | Return All, Limit (default 50) | |
    | Delete | Client | See side effects. |
    | Send Payment Reminder | Client, Invoice | The Invoice picker lists only the selected client’s invoices. Sends an email. |

    Report

    Reports group results by currency. Currencies are never summed together.

    #### Summary

    | Parameter | Description |
    | ——— | ————————————————————————————————————————– |
    | Filters | Optional filters: From / To (UTC dates YYYY-MM-DD, From <= To), and Status (All, Paid, Unpaid, Overdue). |
    | Options | Send to User (emails the report to the account owner). |

    Output: totals and zero-filled monthly breakdowns per currency. Summary returns aggregates, not a list of invoices or clients.

    #### Analyse Trends

    | Parameter | Description |
    | ——— | —————————————————————————————————————————————————– |
    | Period | Monthly (default), Quarterly, or Yearly. Required. |
    | Options | End Date (optional anchor date), Number of Periods (2 to 36; defaults: 12 monthly, 8 quarterly, 5 yearly), Send to User (emails account owner). |

    Output: per-period revenue and invoice count, with period-over-period absolute and percentage change, per currency.

    Operations with side effects

    | Operation | Effect | Recommendation |
    | —————————————- | ————————————————– | —————————————————————————————– |
    | Invoice → Delete | Permanently removes the invoice and its reminders. | Do not automate without a confirmation step. |
    | Client → Delete | Permanently removes the client record. | Same as above. |
    | Invoice → Mark as Paid | Changes payment status and balance due. | Verify the payment event before calling it (for example, validate the webhook signature). |
    | Client → Send Payment Reminder | Emails the client. | Do not blindly retry. A retry can send a duplicate email. |
    | Invoice → Create with Send to Client | Emails the invoice to the client. | Test with a client record that uses your own email address. |
    | Report with Send to User | Emails the account owner. | |

    If you enable n8n’s Retry On Fail for any of these, make sure a repeated call is safe. A failed HTTP response does not always mean the action did not happen.

    Limits

    The InvoicingBuilder API renders at most 2 invoices per request.

  • With 1 invoice, you get a single PDF or PNG.
  • With 2 invoices, you get one invoices.zip.
  • With more than 2, only the first 2 are processed and the rest are ignored. Check invoiceCount in the output rather than assuming every input was invoiced.
  • How to handle larger volumes:

  • Direct Input: use Loop Over Items (Split in Batches) with batch size 2.
  • Google Sheet source: the node reads the worksheet itself, so Loop Over Items cannot split its rows. For more than two invoices, read the sheet with n8n’s Google Sheets node, group rows into invoices, and use Direct Input mode with a loop.
  • Example workflows

    A. Order webhook to client invoice

    Receive an order, create an invoice from workflow data, and email it to the client.

    graph LR
        A[Webhook] --> B[InvoicingBuilder: Create Invoice]
        B --> C[Slack]
    

    1. Webhook receives { "orderId": "ORD-99", "clientId": "cl_123", "items": [...] }.
    2. InvoicingBuilder with Resource Invoice, Operation Create, Data Source Direct Input / Workflow Data:
    – Client (ID mode): {{ $json.body.clientId }}
    – Invoice Number: {{ $json.body.orderId }}
    – Send to Client: true
    3. Slack posts a confirmation.

    Run it once with Send to Client off and inspect the output before enabling email.

    B. Create invoices from a Google Sheet and email the PDF

    Handles up to two invoices per run. See Limits.

    graph LR
        A[Schedule Trigger] --> B[InvoicingBuilder: Create from Sheet]
        B --> C[Gmail: attach binary data]
    

    1. Schedule Trigger runs weekly or on demand.
    2. InvoicingBuilder with Resource Invoice, Operation Create, Data Source Google Sheet, your spreadsheet URL (shared as “Anyone with the link can view”), Worksheet Sheet1, Format PDF.
    3. Gmail (or any email node) sends the message with binary property data attached.

    C. Payment webhook to Mark as Paid

    graph LR
        A[Payment webhook] --> B[Filter: payment succeeded]
        B --> C[InvoicingBuilder: Mark as Paid]
        C --> D[Notify]
    

    1. Webhook receives the payment provider’s event. Your payment event must carry the InvoicingBuilder invoice ID, for example in metadata.invoiceId.
    2. If/Filter continues only for successful payments, for example Stripe payment_intent.succeeded.
    3. InvoicingBuilder with Resource Invoice, Operation Mark as Paid:
    – Invoice (ID mode): {{ $json.body.data.object.metadata.invoiceId }}
    – Status: Paid
    4. Notify your finance team.

    Verify the webhook signature before this step (for example, with Stripe’s signing secret). Otherwise anyone who finds the webhook URL can mark invoices as paid.

    D. Scheduled payment reminders

    The node has no operation that lists overdue invoices. Report → Summary with Status Overdue returns totals, not client or invoice IDs, so it cannot feed Send Payment Reminder directly. Take the overdue list from a system that already holds it.

    graph LR
        A[Schedule Trigger] --> B[Your overdue-invoice source]
        B --> C[InvoicingBuilder: Send Payment Reminder]
    

    1. Schedule Trigger runs daily.
    2. Your source: a database, spreadsheet, or CRM node that returns clientId and invoiceId for each overdue invoice.
    3. InvoicingBuilder with Resource Client, Operation Send Payment Reminder:
    – Client (ID mode): {{ $json.clientId }}
    – Invoice (ID mode): {{ $json.invoiceId }}

    Record which reminders you sent, so a rerun does not email the same client twice.

    Troubleshooting

    | Symptom | What to check |
    | —————————- | ——————————————————————————————————————————————————————— |
    | 401 Unauthorized | The API key is wrong, revoked, or not in the selected credential. |
    | 400 validation error | Required fields, date format (YYYY-MM-DD), line item values, IDs, and the message returned by the API. |
    | 404 Not Found | The client or invoice ID exists in the account tied to this API key. |
    | 429 rate limit | Lower request frequency or batch size. The node reads the server’s retryAfter value when provided. Be careful with automatic retries on operations that send email. |
    | Node missing after install | Check the install succeeded, check n8n logs, confirm the package is in the environment that runs n8n, and restart n8n. |
    | Fewer invoices than expected | The two-invoice cap. See Limits. |
    | Email not sent | Recipient address, the Send to Client / Send to User option, and your InvoicingBuilder email and template settings. | |

    With Continue On Fail enabled, a failed item returns an error object and the workflow continues. A successful execution does not prove every item succeeded, so inspect the output.

    Resources

  • InvoicingBuilder
  • n8n community nodes documentation
  • Report an issue

Version history

See CHANGELOG.md or the GitHub releases page.

License

MIT

From our network Other tools and sites we build