Demo Instance — Books3000 by John Burks  |  GitHub

HIWC Books

2025: $35,939 net ← $70,144 income − $34,205 expenses

Getting Started

What is HIWC Books?

HIWC Books is your all-in-one business tracker. It pulls data from your sales channels (Etsy, Shopify), imports expenses from bank statements, CSVs, and receipts, and generates the reports you need at tax time.

All your data stays on your machine — nothing is sent to the cloud unless you use the optional AI features (receipt scanning, chat).

Connecting your sales channels

Go to Settings (gear icon) to connect:

  • Shopify — connects automatically using API credentials. Orders are pulled via the Shopify API.
  • Etsy — uses OAuth. Click "Connect Etsy", authorize in your browser, paste the code back. Tokens auto-refresh.

First month workflow

Here's the recommended order for your first month:

1 Go to Close Month and select your month

2 Upload your Etsy statement CSV (free download from Etsy)

3 Click "Pull Shopify Orders" to import from the API

4 Upload any other source files (Pirate Ship, Amazon, PayPal, etc.)

5 Add recurring expenses (rent, subscriptions, etc.)

6 Review the month on the Orders page — check for missing data

Orders

Auto-pull orders

On your first visit each day, the app automatically pulls new orders from Shopify and Etsy. You'll hear a cha-ching sound and see a notification for each new order.

You can also click Pull Orders on the month page to manually refresh.

Month view

The month page shows three tabs: Orders, Expenses, and Retail.

  • Click any order row to open the edit modal with full details
  • Channel badges (Etsy, Shopify, Square, etc.) are color-coded and clickable for filtering
  • Orders include shipping info, personalization, gift details, and production status

Editing orders

Click any order row to open the edit modal. You can change any field. The net amount is auto-calculated from the gross using the channel's fee rates (e.g., Etsy takes ~9.7%, Shopify ~3.2%).

Required fields (gross, channel, date) are highlighted in red if missing when you try to save.

Payment channels

Each order has a payment channel: Etsy, Shopify, Square, PayPal, Venmo, Cash, Cash App, or Gift. These determine how fees are calculated and how orders are grouped in reports.

Expenses

Where expenses come from

Expenses are imported from multiple sources — each row tracks where it came from:

  • Etsy statements — fees (transaction, processing, listing) and ad spend
  • Amazon Business CSV — supplies and materials
  • Pirate Ship XLSX — shipping labels
  • PayPal CSV — business purchases
  • Chase bank statements — PDF upload with auto-classification
  • Receipt scanning — AI-powered or manual entry
  • Recurring expenses — rent, subscriptions, etc. entered on Close Month

IRS categories

Every expense is assigned an IRS Schedule C category (Advertising, Supplies, Rent, Insurance, etc.). These categories drive the year-end tax reports.

Use Bulk Categorize (linked from Close Year) to categorize uncategorized expenses in batch.

Receipts

Three ways to add data

  • Scan Receipt ~$0.01/scan — Upload a photo of a receipt. AI extracts the vendor, date, items, amounts, and category. Review and save as an expense.
  • Scan Order ~$0.01/scan — Screenshot an Etsy or Shopify order confirmation. AI extracts order details, colors, player count, personalization text.
  • Manual Entry Free — Skip the screenshot and fill in the order form directly.

Etsy order PDFs

Free Upload Etsy order PDF receipts (the ones you can download from Etsy). These are parsed with pdfplumber — no AI, no cost. Extracts 25+ fields per order including shipping address, personalization, and gift details.

How AI scanning works

When you upload a photo, it's sent to your configured LLM provider (OpenRouter or local Ollama). The AI analyzes the image and extracts structured data. You review and edit before saving — the AI's response is a starting point, not the final word.

Cost is approximately $0.01 per scan using Claude Sonnet on OpenRouter. Using local Ollama is free but less accurate.

Products

The Products page is your master product catalog — the single source of truth for everything you sell. Products live here first, then get pushed to Shopify and Etsy.

1 Sync: Pull listings from your channels

Start by pulling your existing listings into the master catalog.

  • Sync Shopify — Pulls all Shopify products. If a product already exists here (from a previous sync), it updates it. If it's new, it creates a master product.
  • Sync Etsy — Same thing for Etsy's active listings. Matches to existing master products by title similarity. Unmatched Etsy listings become new draft products for you to review.

After syncing, many products will be linked to both channels. The stats row shows how many are linked to each.

2 Audit: Find differences between master and channels

Click Audit All to compare every linked product against what's actually live on Shopify and Etsy.

  • Etsy audit is fast — pulls all listings in one shot and compares locally. Checks title, price, status, tags, and description.
  • Shopify audit is slower — has to check each product individually (API rate limits). Checks title, price, and status.
  • Mismatches show up in a yellow panel with the exact differences and which channel they're on.
  • The Etsy tag indicator (e.g. "8/13 tags used") shows if you have empty tag slots — Etsy allows 13 and each one is free SEO.

3 Resolve: Fix mismatches

For each mismatch you have two choices:

  • Use Master — Pushes your master catalog values to the channel. For Etsy, this always pushes as a draft so you can review it on Etsy before making it live.
  • Use Shopify / Use Etsy — Pulls the channel's values into your master catalog (overwrites your local data).

Bulk buttons at the top let you push all mismatches at once: Push All → Shopify or Push All → Etsy (Draft).

4 Edit: Product detail page

Click any product row to open its full detail page where you can:

  • Edit title, description, price, tags, COGS, and more
  • Upload product images (drag and drop)
  • Use AI tools to generate descriptions, optimize titles, and suggest SEO tags
  • See profit estimates per channel (Etsy vs Shopify fees side by side)
  • Update Shopify — pushes changes live immediately
  • Push Draft → Etsy — pushes changes as a draft (you activate on Etsy when ready)
  • Push product photos to Google Ads as image assets with one click

Typical workflow

1 Sync Shopify + Sync Etsy to pull in current listings

2 Audit All to see what's different

3 Click into mismatched products, fix titles/tags/prices in the master

4 Use AI to fill in missing descriptions and optimize tags to 13/13

5 Push changes back: live to Shopify, draft to Etsy

6 Go to Etsy, review drafts, activate the good ones

Things to know

  • Etsy pushes are always drafts. Nothing goes live on Etsy without you manually activating it there. This is a safety rail.
  • Low-confidence matches — When syncing Etsy, titles that are similar but not exact get matched at <80% confidence. These still link but a review panel pops up so you can check them.
  • New products from Etsy sync are created as drafts. Unmatched Etsy listings (no Shopify equivalent) become new master products in draft status.
  • Etsy allows max 13 tags, each up to 20 characters. The tag indicator on the detail page shows your usage. Fill all 13 — it's free SEO.
  • Etsy only allows 2 variation options per listing (vs Shopify unlimited). Keep this in mind for variant-heavy products.

Sale Manager

Click Sales on the Products page to define store-wide sales (percent or fixed discount). Sales can be pushed to Shopify — this sets compare_at_price on all variants so customers see the crossed-out original price.

Etsy has no sale API — you need to set sales manually in the Etsy seller dashboard.

Reports

Monthly P&L

A 12-month grid showing revenue, COGS, expenses by IRS category, and net profit. The YTD column rolls everything up. Click the CSV download button to export for your accountant.

Channel Profitability

Compares your sales channels side by side — revenue, fees, margin percentage, and average order value. Helps you see which channels are actually making money after fees.

Subscription Tracker

Auto-detects recurring expenses (Shopify subscription, Etsy Plus, etc.) and shows monthly and annual totals. Active vs ended subscriptions are tracked separately. False positives (like repeat Amazon purchases) are filtered out.

Quarterly SE Tax Estimates

Calculates estimated self-employment tax (15.3% on 92.35% of net profit) with IRS due dates. Helps you know how much to set aside each quarter.

Year-over-Year Comparison

Shows annual totals from 2018 to present — gross, expenses, net, and growth percentage. Useful for seeing business trajectory and preparing for tax conversations.

Close Month

Close Month is your end-of-month workflow. It's a checklist of everything you need to import and verify before the month is "done."

The checklist

  • Etsy statement CSV — download from Etsy, upload here. Imports orders, fees, and ad spend.
  • Shopify orders — pull from API or upload CSV.
  • Shopify billing CSV — monthly subscription and app charges.
  • Pirate Ship XLSX — shipping label transactions.
  • Amazon CSV — business purchases from Amazon.
  • PayPal CSV — business-only PayPal transactions.
  • Painted Tree CSV — booth retail sales (Consignor Access export).
  • Pike Pass PDF — toll expense, auto-extracted from statement PDF.
  • Recurring expenses — rent, insurance, subscriptions. Enter amounts manually.
  • Cathedral invoicing — consulting income (if applicable).
  • Mileage — business miles for the month.
  • OK sales tax — amount filed with Oklahoma (Etsy and Painted Tree are excluded as marketplace facilitators).

Duplicate detection

All import slots check for existing data before replacing. If data already exists for that month, you'll get a confirmation dialog showing what will be replaced. This prevents accidental double-imports.

Bank Statements

How it works

Upload a Chase bank statement PDF (checking or credit card). The parser uses regex to extract every transaction — Free no AI needed.

7-tier auto-classification

Each transaction is automatically classified through these tiers (in order):

  • 1 Already tracked — matches an existing expense (skipped to avoid duplicates)
  • 2 Skip — transfers, deposits, payments (not expenses)
  • 3 User vendor rules — rules you've created from previous reviews
  • 4 Built-in business patterns — known business vendors (Home Depot, Uline, etc.)
  • 5 Built-in personal patterns — known personal vendors (Netflix, restaurants, etc.)
  • 6 Card user hint — transactions on Amy's card default to personal
  • 7 Unknown — needs your manual classification

Review and import

After parsing, review each transaction. Use the Business / Personal / Skip buttons to classify. Set categories with the dropdown. When done, click Import — business transactions go to expenses, personal go to personal_expenses.

Your classification choices are saved as vendor rules so the same vendor is auto-classified next time.

Marketing

Data sources

  • Google Ads — pulled via API. Shows campaign-level spend, impressions, clicks, conversions, and ROAS.
  • Etsy Ads — extracted from Etsy statement CSVs. Monthly ad spend totals.
  • Google Analytics — GA4 data: sessions, users, pageviews, bounce rate, transactions, ecommerce revenue.

Click Refresh Data to pull the latest from all three APIs.

ROAS (Return on Ad Spend)

ROAS tells you how many dollars of revenue you get for each dollar spent on ads. A ROAS of 5.0 means $5 revenue per $1 ad spend. The marketing page shows ROAS by channel and over time.

Ad Strategy

The Ad Strategy section provides data-driven insights: channel comparison (Etsy vs Google), seasonal budget guides with green/amber/red tiers, and budget scenario modeling with diminishing returns analysis.

Google Ads image assets

View all your Google Ads image assets, see which campaigns they're linked to, upload new images, and push Shopify product photos directly to Google Ads with one click.

Invoices

Creating invoices

Click + New Invoice to create an invoice. Add line items with descriptions, quantities, and rates. Optional tax and discount fields. Invoice numbers auto-increment (HIWC-0001, HIWC-0002, etc.).

PDF generation

Click the PDF button on any invoice to generate a professional PDF with your HIWC logo and business details. Configure your business address and payment terms in the invoice settings.

Payment tracking

Mark invoices as Draft, Sent, Paid, or Overdue. Filter the invoice list by status to see what's outstanding.

Tax & Year-End

Close Year page

The Close Year page is your year-end tax checklist. It walks through everything needed to file Schedule C:

  • Schedule C summary — gross income, expenses by IRS category, net profit
  • 1099-K reconciliation — compare your records against 1099-K forms from Etsy, Shopify, PayPal
  • Mileage deduction — total business miles at the IRS standard rate
  • Sales tax report — Etsy-collected vs self-collected amounts

Tax Document Vault

12 document type slots for storing tax-related files: 1099-K forms (Etsy, Shopify, PayPal), 1099-NEC, W-2, insurance docs, business license, vehicle registration, mileage log, sales tax returns, estimated tax payments, and other. Upload, view, replace, or delete per slot.

CSV and PDF export

Download Schedule C data as CSV (for your accountant) or generate a PDF summary. Reports include all expense categories mapped to their Schedule C lines.

Settings

LLM Provider

Choose between OpenRouter (cloud, ~$0.01/scan, requires API key) and Ollama (local, free, requires Ollama running on your network). The connection test button verifies your setup. OpenRouter credits are displayed in the top bar.

Etsy connection

Connect your Etsy shop via OAuth 2.0. Click "Connect Etsy", authorize in your browser, paste the code back. Once connected, the app auto-refreshes tokens. You can disconnect anytime.

Default year

Sets which year loads by default when you open the app. You can always switch years using the year pills in the nav bar.

Chat

How it works

The floating chat bubble (bottom-right corner on every page) lets you ask questions about your data in plain English. It uses a two-step process:

1 Your question is sent to the LLM, which generates a SQL query against your database

2 The query runs (read-only — it can never modify your data), and the results are sent back to the LLM for a natural language summary

Example questions

  • "What was my best selling month?"
  • "How much did I spend on shipping this year?"
  • "What's my average order value on Etsy vs Shopify?"
  • "Which customer has placed the most orders?"
  • "How much have I spent on Etsy ads?"
  • "What are my top 5 expenses by category?"

Tips

  • Be specific — "how much did I make in December" works better than "how am I doing"
  • Reference channels by name — "Etsy orders" or "Shopify revenue"
  • The chat knows your database schema, so you can ask about any tracked data
  • Cost is the same as other AI features (~$0.01-0.02 per question on OpenRouter, free on Ollama)

Chat with Data

Ask questions about your business data in plain English.