---
title: WooCommerce Invoicing Solutions — Plugin vs. Custom Build
type: article
created: '2026-01-16'
updated: '2026-01-16'
source_docs:
- raw/2026-01-16-weekly-call-w-karly-115014639.md
tags:
- woocommerce
- quickbooks
- invoicing
- php-plugin
- b2b
- offline-payments
layer: 2
client_source: null
industry_context: null
transferable: true
---

# WooCommerce Invoicing Solutions — Plugin vs. Custom Build

When a WooCommerce B2B site needs to generate and track invoices for offline payment methods (check, bank transfer, COD), there are two practical paths: a third-party QuickBooks integration plugin or a custom-built PHP solution. Each has distinct trade-offs in cost, control, and long-term flexibility.

## The Problem

WooCommerce treats offline payment orders as fulfilled from the platform's perspective once the order is placed — but the business still needs to:

1. Generate a formal invoice and deliver it to the customer
2. Track whether that invoice has been paid
3. Sync the transaction into their accounting system (typically QuickBooks)

Without a solution, staff must manually cross-reference WooCommerce orders with their accounting system, which breaks down at scale.

## Option 1 — QuickBooks Integration Plugin

**Cost:** ~$100/year (recurring)

A pre-built WooCommerce–QuickBooks integration plugin (several exist in the WooCommerce marketplace) can automatically send invoices for unpaid orders. Key features typically include:

- Automatic invoice generation triggered on order placement
- Email delivery of the invoice to the customer
- Syncing order data into QuickBooks Online

**Pros:**
- Fast to deploy — minimal configuration required
- No custom development needed
- Maintained by the plugin vendor

**Cons:**
- Annual recurring cost
- Limited control over invoice logic, formatting, and edge cases
- Dependent on the vendor's continued support and compatibility with WooCommerce updates
- Harder to adapt if business rules change

## Option 2 — Custom PHP Plugin

**Cost:** ~$300 one-time build

A custom plugin connects WooCommerce to QuickBooks Online via the QuickBooks API. The general architecture:

1. Open the WooCommerce REST API on the site
2. Register a QuickBooks Online Developer App to obtain API credentials
3. Write a plugin (~300–400 lines of PHP) that listens for the `woocommerce_order_status_completed` hook and pushes order data to QuickBooks
4. QuickBooks creates the invoice; optionally, the invoice is pulled back and emailed from WooCommerce

**Pros:**
- One-time cost — no recurring fees
- Full control over invoice logic, field mapping, and triggers
- Easily extended to handle edge cases (e.g., per-kitchen invoicing, custom PO fields, per-customer rules)
- Can be adapted without waiting on a vendor

**Cons:**
- Requires initial development time (~2–3 hours to build and configure API access)
- Client must provide QuickBooks API access
- Ongoing maintenance responsibility falls on the development team

## Recommendation Framework

| Situation | Recommended Option |
|---|---|
| Single site, simple invoicing needs, low budget | Plugin ($100/yr) |
| Multiple sites or complex business rules | Custom build ($300 one-time) |
| Client has edge cases (per-location invoicing, PO tracking, etc.) | Custom build — extensible to handle multiple edge cases |
| Client wants full ownership and no vendor dependency | Custom build |

For clients with growing B2B complexity — such as per-customer invoice rules, purchase order fields, or multi-location billing — the custom build pays for itself quickly and avoids the compounding cost and rigidity of a third-party plugin.

## Implementation Notes

- The custom plugin approach pairs well with other WooCommerce customizations (e.g., the [[wiki/knowledge/woocommerce/auto-complete-offline-orders-plugin|auto-complete offline orders plugin]]) since all logic lives in version-controlled, site-specific code
- QuickBooks API access must be granted by the client — walk them through creating a QuickBooks Online Developer App or adding your app to their account
- The PO field discussed in [[wiki/knowledge/woocommerce/b2b-checkout-field-customizations|B2B checkout field customizations]] can be mapped through to the QuickBooks invoice for full traceability

## Client Example

This comparison was first developed for [[wiki/clients/doodla-farms/_index|Doodla Farms]] during B2B site buildout. Their offline payment workflow (check payments, pay-on-delivery) required invoice generation that WooCommerce alone couldn't provide. Both options were presented to the client for a decision.

*Source: [[raw/2026-01-16-weekly-call-w-karly-115014639.md]]*