# J2 Bookkeeping — Integration Setup Guide

**Prepared by:** Riv (Integrations Specialist)
**Date:** 2026-03-27
**Status:** Ready for owner review

---

## Overview

This guide walks through connecting four integrations so Larry and the team can pull data and take actions across J2 Bookkeeping's tool stack. Each section covers what the owner needs to do, what gets configured on our end, costs, and what becomes possible once it's live.

**Current state:** Only Mem.ai is connected (via MCP).

**Target state:**
```
Mem.ai ──────────── MCP (done)
Google Sheets ────── MCP ─── unlocks Coefficient + Booker
Zapier ──────────── MCP ─── unlocks Client Hub + 8,000 apps
QuickBooks Online ── MCP ─── unlocks Accruer + Wrangler + direct QBO
WellyBox ────────── Webhook → Zapier ─── receipts auto-flow in
```

---

## Integration #1: Google Sheets MCP (Foundation)

### Why first
Google Sheets is the central data hub. Coefficient populates sheets with data from 60+ sources. FinOptimal Booker reads from sheets to create QBO journal entries. Once we can read/write Sheets, we indirectly access both.

### MCP Server
**[mcp-google-sheets by xing5](https://github.com/xing5/mcp-google-sheets)** — open source, well-maintained, supports full CRUD on spreadsheets and Google Drive.

### What the owner needs to do (~20 minutes)

**Step 1: Create a Google Cloud Project**
1. Go to [console.cloud.google.com](https://console.cloud.google.com)
2. Click "Select a Project" → "New Project"
3. Name it something like `j2-bookkeeping-mcp`
4. Click Create

**Step 2: Enable APIs**
1. In the project, go to "APIs & Services" → "Library"
2. Search and enable:
   - **Google Sheets API**
   - **Google Drive API**

**Step 3: Create a Service Account**
1. Go to "APIs & Services" → "Credentials"
2. Click "Create Credentials" → "Service Account"
3. Name: `j2-sheets-mcp`
4. Role: "Editor" (can be scoped down later)
5. Click "Done"
6. Click into the service account → "Keys" tab → "Add Key" → "Create New Key" → JSON
7. Save the downloaded JSON file securely (e.g., `D:/PKA/.credentials/google-service-account.json`)

**Step 4: Share Google Drive folder with the service account**
1. Copy the service account email (looks like `j2-sheets-mcp@j2-bookkeeping-mcp.iam.gserviceaccount.com`)
2. In Google Drive, right-click the folder containing your bookkeeping sheets → Share → paste the service account email → Editor access

### What we configure

Run this in the terminal:

```bash
claude mcp add --transport stdio google-sheets -- cmd /c npx -y mcp-google-sheets@latest
```

Or add to `D:/PKA/.mcp.json`:

```json
{
  "mcpServers": {
    "google-sheets": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "mcp-google-sheets@latest"],
      "env": {
        "SERVICE_ACCOUNT_PATH": "D:/PKA/.credentials/google-service-account.json"
      }
    }
  }
}
```

### Cost
- **Free.** Google Cloud service accounts and Sheets API have generous free tiers (500 requests per 100 seconds per project).

### What we can do once live
- Read any shared Google Sheet (Coefficient outputs, Booker inputs, financial reports)
- Write/update data in sheets (prepare Booker inputs, update tracking sheets)
- Create new spreadsheets and tabs
- Search across Google Drive for specific files
- Indirectly feed data into FinOptimal Booker by writing to its input sheet

### Security notes
- The service account JSON file must NEVER be committed to git
- Add `.credentials/` to `.gitignore`
- The service account only has access to explicitly shared folders/files
- Can scope down to Viewer if we only need read access initially

---

## Integration #2: Zapier MCP (Automation Hub)

### Why second
Zapier is the only platform with a native Client Hub connector. It also opens up 8,000+ app integrations and serves as the webhook receiver for WellyBox.

### MCP Server
**[Zapier MCP](https://mcp.zapier.com)** — cloud-hosted by Zapier, no local server needed.

### What the owner needs to do (~10 minutes)

**Step 1: Ensure you have a Zapier account**
- Free plan: 100 tasks/month (each MCP call = 2 tasks, so ~50 MCP calls/month)
- Professional plan ($19.99/mo billed yearly): 750 tasks/month (~375 MCP calls)
- Team plan ($69/mo billed yearly): 2,000 tasks/month (~1,000 MCP calls)

**Recommendation:** Start with Free to test, upgrade to Professional once we're using it regularly.

**Step 2: Set up Zapier MCP**
1. Go to [mcp.zapier.com](https://mcp.zapier.com)
2. Log in with your Zapier account
3. Click "Get started"
4. Click "+ New MCP Server" in the sidebar
5. Select **Claude** as your MCP client
6. Click "+ Add tool" and add these apps:
   - **Client Hub** (triggers: new client; actions: create/update records)
   - **Google Sheets** (backup path for Sheets access)
   - **Gmail** or email if you want Larry to send notifications
   - Any other apps you want accessible
7. Zapier will generate a URL that looks like:
   `https://actions.zapier.com/mcp/<your-unique-id>/sse`

**Step 3: Copy the connection details**
Zapier will show you a JSON config snippet or a URL — share it with me.

### What we configure

Run in terminal:

```bash
claude mcp add --transport sse zapier-mcp https://actions.zapier.com/mcp/YOUR-UNIQUE-ID/sse
```

Or add to `D:/PKA/.mcp.json`:

```json
{
  "mcpServers": {
    "zapier-mcp": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "mcp-remote", "https://actions.zapier.com/mcp/YOUR-UNIQUE-ID/sse"]
    }
  }
}
```

### Cost
- Zapier Free: $0/mo (100 tasks, ~50 MCP calls)
- Zapier Professional: $19.99/mo (750 tasks, ~375 MCP calls)
- Each MCP tool call = 2 tasks from your Zapier quota
- Overage: 1.25x base task cost

### What we can do once live
- **Client Hub:** Look up clients, create new clients, update client records
- **Cross-app actions:** Send emails, update CRMs, post to Slack, create calendar events
- **Webhook receiver:** Accept incoming webhooks from WellyBox (see Integration #4)
- Any of the 8,000+ apps in Zapier's library as needed

### Security notes
- The MCP URL contains your unique ID — treat it like a password
- Zapier handles OAuth for connected apps
- Review connected apps periodically in Zapier settings
- Each tool you add to the MCP server is explicitly chosen — Zapier won't expose apps you didn't add

---

## Integration #3: QuickBooks Online MCP (Accounting Core)

### Why third
QBO is the accounting system of record. FinOptimal Accruer and Wrangler operate within QBO. Direct access lets us query financials, check journal entries, look up customers/vendors, and verify that automated entries landed correctly.

### MCP Server — Two Options

**Option A: Composio (Recommended — managed, easier setup)**
- [Composio QuickBooks MCP](https://composio.dev/toolkits/quickbooks/framework/claude-code)
- Handles OAuth automatically
- Free tier: 20,000 tool calls/month
- Supports: Create/read accounts, customers, employees, vendors, balance reports

**Option B: Zapier MCP (use existing connection)**
- Add QuickBooks as a tool in your existing Zapier MCP server
- Simpler (no new service), but uses Zapier tasks (2 per call)
- More limited action set than Composio

**Recommendation:** Start with **Option B** (Zapier) since you'll already have Zapier MCP set up. Move to Composio if we need deeper QBO access (direct journal entry queries, financial reports, etc.).

### What the owner needs to do

**For Option B (Zapier — quick start):**
1. Go back to [mcp.zapier.com](https://mcp.zapier.com)
2. Open your Claude MCP server
3. Click "+ Add tool"
4. Search for **QuickBooks Online**
5. Connect your QBO account (Zapier walks you through OAuth)
6. Select the actions you want available:
   - Search/find customers
   - Search/find invoices
   - Create journal entry
   - Get company info
   - Search transactions
7. Save — it's immediately available through your existing Zapier MCP connection

**For Option A (Composio — deeper access):**
1. Create a free account at [composio.dev](https://composio.dev)
2. Go to your dashboard → find QuickBooks integration
3. Click "Connect" → authorize your QBO account via OAuth
4. Copy your Composio API key and MCP URL

### What we configure (Composio path)

```bash
claude mcp add --transport http composio-quickbooks "YOUR_COMPOSIO_MCP_URL" --headers "X-API-Key:YOUR_COMPOSIO_API_KEY"
```

### Cost
- **Zapier path:** No additional cost (uses existing Zapier tasks)
- **Composio path:** Free tier = 20,000 calls/month; Growth = $29/mo if needed

### What we can do once live
- Query customer and vendor lists
- Look up specific invoices and transactions
- Check account balances and financial summaries
- Create journal entries (with validation)
- Verify FinOptimal Accruer entries landed correctly
- Pull data for Wrangler-style reporting

### Security notes
- QBO OAuth tokens are managed by Zapier or Composio — not stored locally
- Start with read-only actions; add write actions (create journal entry) only when needed
- QBO has its own audit trail — all API actions are logged
- Use QBO sandbox for testing before production

### Important: Intuit + Anthropic Partnership
Intuit and Anthropic announced a partnership bringing QBO intelligence directly into Claude products via MCP — expected to roll out spring 2026. This may provide an even better native integration path soon. I'll monitor this.

---

## Integration #4: WellyBox Webhook (Receipt Pipeline)

### Why last
WellyBox is outbound-only (it pushes to us, we can't pull from it). We need Zapier MCP in place first to receive the webhook.

### Architecture
```
WellyBox (receipt status changes)
    ↓ webhook POST (JSON)
Zapier (Catch Hook trigger)
    ↓ Zap actions
Google Sheet (receipt log) ← we can read this via Sheets MCP
    ↓ optional
Mem.ai note (via Mem MCP) or QBO entry
```

### What the owner needs to do (~15 minutes)

**Step 1: Create the Zapier receiver**
1. Go to [zapier.com](https://zapier.com) → Create new Zap
2. **Trigger:** "Webhooks by Zapier" → "Catch Hook"
3. Zapier generates a unique webhook URL (e.g., `https://hooks.zapier.com/hooks/catch/xxxxx/yyyyy/`)
4. Copy this URL

**Step 2: Configure WellyBox**
1. Go to [app.wellybox.com/ng2ux/webhooks](https://app.wellybox.com/ng2ux/webhooks)
2. Click "Connect New Webhook"
3. **Name:** `J2-Zapier-Pipeline`
4. **URL:** Paste the Zapier webhook URL from Step 1
5. Save

**Step 3: Test it**
1. In WellyBox, change a document's status manually
2. Go back to Zapier — it should show the received payload
3. Verify you see: vendor name, amount, tax, currency, dates, UUID

**Step 4: Build the Zap actions**
I recommend this flow:
1. **Catch Hook** (trigger — receives WellyBox data)
2. **Formatter** (clean up date formats, parse amounts)
3. **Google Sheets** → "Create Spreadsheet Row" in a dedicated "Receipt Log" sheet
4. *(Optional)* **Slack/Email** notification for high-value receipts

### What we configure
Nothing on our end — this runs entirely in Zapier. Once receipts land in the Google Sheet, we read them via the Google Sheets MCP (Integration #1).

### Cost
- Each webhook → Zap run = 1 Zapier task (or more if multi-step)
- No additional WellyBox cost — webhooks are included
- Fits within existing Zapier plan

### What we can do once live
- Every receipt/invoice captured by WellyBox automatically appears in a Google Sheet
- Larry can ask: "What receipts came in this week?" and Riv reads the sheet
- Receipt data (vendor, amount, date) is available for matching against QBO entries
- Optional: auto-create draft journal entries or Mem.ai notes from receipt data

### Security notes
- The Zapier webhook URL is essentially a public endpoint — anyone with it can POST to it
- WellyBox doesn't support webhook signing, so we can't verify the sender
- Mitigate by: keeping the URL private, adding a Zapier Filter step to validate expected payload structure
- Financial data in transit is HTTPS-encrypted

---

## Setup Priority & Timeline

| # | Integration | Owner Time | Complexity | Unlocks |
|---|---|---|---|---|
| 1 | Google Sheets MCP | ~20 min | Low | Coefficient data, Booker inputs, Sheet read/write |
| 2 | Zapier MCP | ~10 min | Low | Client Hub, 8,000 apps, webhook receiving |
| 3 | QBO via Zapier MCP | ~5 min | Very Low | Account/customer/transaction queries |
| 4 | WellyBox Webhook | ~15 min | Low | Automated receipt pipeline |

**Total estimated owner time: ~50 minutes for the full stack.**

---

## Monthly Cost Summary

| Service | Plan | Cost | What it covers |
|---|---|---|---|
| Google Sheets MCP | Free tier | $0 | 500 req/100 sec (more than enough) |
| Zapier | Professional | $19.99/mo | 750 tasks (~375 MCP calls + Zap runs) |
| Composio (if needed later) | Free tier | $0 | 20,000 calls/mo for deeper QBO access |
| WellyBox | Existing plan | $0 | Webhooks included |
| **Total** | | **~$20/mo** | |

*Start with Zapier Free ($0) to test. Upgrade to Professional only when you exceed 100 tasks/month.*

---

## What Larry Can Do After Setup

Once all four integrations are live, the owner can say things like:

- "Larry, what receipts came in this week?" → Riv reads the receipt log sheet
- "Larry, look up client ABC in Client Hub" → Riv queries via Zapier MCP
- "Larry, what's the current balance for customer XYZ?" → Riv queries QBO
- "Larry, add a new client to Client Hub" → Riv creates via Zapier MCP
- "Larry, check if Booker processed today's journal entries" → Riv reads the Booker input/output sheet
- "Larry, pull the latest P&L data from the Coefficient sheet" → Riv reads via Sheets MCP
- "Larry, save these meeting notes to Mem" → Already works via Mem.ai MCP

---

## Next Steps

1. Owner reviews this guide and confirms they want to proceed
2. We start with Integration #1 (Google Sheets) — I'll walk through it step by step
3. Once Sheets is confirmed working, we move to Zapier MCP
4. Then QBO and WellyBox in quick succession

Ready when you are.
