Volume 01 · The Setup Manual

The guide.

Everything you fill in, every toggle that matters, and what happens after you press the button. Read top to bottom, or jump.

~ 7 min read12 sectionsStart at the beginning
01

Install AttiBooks in Attio

AttiBooks lives inside your Attio workspace as a native app. Open Attio, click your workspace name, then Settings → Apps → Browse, search for AttiBooks, and install it. You will need workspace admin permissions.

Soon shipping on the Attio Marketplace. Until then, click Get started from the homepage to install through our authorized listing.

02

Connect QuickBooks

Open AttiBooks in the left sidebar of Attio. The header shows a Connect QuickBooksbutton — clicking it triggers Intuit’s OAuth flow. Sign in to your QuickBooks Online account and authorize access. Attio handles token storage and refresh automatically; you never paste a key.

Once connected, open AttiBooks → Workspace settings → 1. QuickBooks Connection and press “Check Status”. You should see a green success toast with your QuickBooks Company ID. If it reads Not connected, repeat the OAuth flow from the app header.

Required: paste your Company ID

Scroll to 7. Advanced and paste your QBO Company IDinto the required field. Find it in QuickBooks under the gear icon → Additional info (a ~16-digit number). AttiBooks also tries to auto-capture it via OpenID userinfo, but the manual value is the source of truth.

Sandbox vs Production

In Section 1, set Environment to sandbox while testing — invoices land in your QBO sandbox company. Switch to production when you go live. Re-authorize after changing.

03

Choose an invoice mode

AttiBooks ships with two ways to create invoices. You can switch anytime from settings.

invoice_mode = “quick

Quick mode

One click. AttiBooks reads the record, builds the invoice, and submits it to QBO. Best for repeat work.

invoice_mode = “custom

Custom mode

A dialog opens so you can review and edit every line before submitting. Best for bespoke project work.

Set the invoice_mode field to quick or custom. Quick mode is best for repeatable services with consistent rates. Custom mode is best for project-based work where every invoice is bespoke.

04

Map your source fields

AttiBooks pulls invoice data from the Attio record you click on. Fill in 5. Source Fields (optional) in workspace settings — map each field below to an attribute slug on your Companies, Deals, or custom object. Leave blank to use the template defaults from Section 3.

FieldTypeWhat it does
source_customer_emailstring

Email QuickBooks sends to

Required if you want QBO to deliver the invoice automatically.

source_service_descriptionstring

Line-item description

Falls back to the template default if empty.

source_ratestring

Unit price (per unit)

Number attribute. Reads as the line item rate.

source_quantitystring

Quantity / hours

Number attribute. Multiplied by rate to compute total.

source_currencystring

Three-letter currency code

USD, EUR, GBP. Must exist in your QBO chart of accounts.

source_due_daysstring

Net payment terms

Days from invoice date until due. e.g. 30.

Customer nameis read automatically from the record you act on — company name, person full name, deal name, or workspace record name. You don’t map it.

Attribute slugs, not display names. In Attio, edit the attribute and copy the value under API slug.

05

Set template defaults

When a source field is missing on a record, AttiBooks falls back to these defaults — so you never get a half-built invoice.

FieldTypeWhat it does
template_service_descriptionstring

Default line description

e.g. "Consulting services"

template_ratenumber

Default unit price

e.g. 150

template_quantitynumber

Default quantity

e.g. 1

template_currencystring

Default currency

e.g. USD

template_due_daysnumber

Default net terms

e.g. 30 (days)

06

Configure writeback fields

After QuickBooks accepts the invoice, AttiBooks writes data back to your Attio record so your CRM reflects reality. Create attributes on your source object and map each one here.

FieldTypeWhat it does
writeback_invoice_idstring

QBO invoice ID

Internal Intuit identifier — keep for support.

writeback_invoice_numberstring

Invoice number

The number your customer sees.

writeback_invoice_statusstatus / string

Open, Paid, Voided

Updates live via webhook.

writeback_invoice_urlurl

QBO deep link

Opens the invoice inside QuickBooks.

writeback_last_sync_attimestamp

Last successful sync

Helps debug stale data.

writeback_sync_errorstring

Last error message

Empty on success. Read this first when something breaks.

Errors land in Attio

If QuickBooks rejects an invoice, AttiBooks writes the error directly to the record — no console required, no email missed. Look at writeback_sync_error.

07

Enable the Invoice object

Pro plans can store every invoice as its own Attio record. In 7. Advanced, turn on “Store invoices as Attio records”, then press “Run Setup”. AttiBooks provisions an invoices object with all standard attributes (doc number, status, totals, customer, QBO IDs, sync metadata).

Optionally set invoice_object_slugto point at an existing custom object — useful if you already model invoices and want AttiBooks to write to your schema.

Enabling this object also unlocks two record actions on invoices: Edit Invoice in QuickBooks and Void in QuickBooks (see section 9).

Requires Attio Pro for custom objects. Free Attio workspaces can still use writeback — just on the source record.

08

Create your first invoice

Open any record on a target object. In the actions menu, choose Create QuickBooks invoice. In Quick mode, the invoice is sent to QBO immediately and a success toast confirms the invoice number. In Custom mode, a dialog appears so you can edit every field before submission.

Within seconds, your record refreshes with the QBO invoice number, status, and a clickable link straight to QuickBooks.

Average time from click to QBO confirmation: ~ 1.4 seconds.
09

Edit and void from Attio

Once the Invoice object is enabled, open any invoice record in Attio and you’ll see two extra actions:

Edit Invoice in QuickBooksopens a dialog for controlled fields — due date and memo always, line items only while the invoice is unpaid. Submitting pushes the change straight to QBO.

Void in QuickBooksasks for confirmation, then voids the invoice via the QBO API and re-syncs so the Attio record reflects the voided state. This is explicit on purpose — AttiBooks never auto-deletes anything in QuickBooks.

QBO is source of truth

Financial fields (totals, balance, dates) are read-only in Attio. All writes flow through QBO, then back to Attio via sync — no two writers, no conflicts.

10

Keep invoices in sync

AttiBooks pulls updates from QuickBooks using the Change Data CaptureAPI — only invoices modified since the last run. The first sync backfills recent invoices; every subsequent sync is incremental.

There are three ways to trigger a sync:

FieldTypeWhat it does
Scheduled crondaily

Runs on attibooks.com

Hits /api/cron/sync-invoices at 00:00 UTC every day. Zero config.

Settings buttonmanual

6. Invoice Sync → Sync Now

Force a pull on demand from workspace settings. Useful while setting things up.

Record actionmanual

Sync Invoices from QuickBooks

Available on any record. Same effect as the settings button.

Each sync updates the Invoice object with the latest status, balance, dates, and customer info from QBO. Writes to QBO (creation, edits, voids) happen immediately through the corresponding record actions.

Requires the Invoice object to be enabled (Section 7). Sync is a no-op otherwise — writeback on the source record still works independently.

11

Plans & limits

Free

€0/mo

  • 10 invoices per month
  • Quick mode
  • One-way QBO → Attio sync

Pro

€39/mo

  • Unlimited invoices
  • Custom mode + Invoice object
  • Full two-way sync

Hit the free limit and AttiBooks blocks new invoice creation until next month or until you upgrade. Existing invoices keep syncing — nothing is locked retroactively.

Section 12

Every feature, briefly.

A quick reference to everything AttiBooks does — pin this section.

  • 01

    One-click invoice creation

    From any Companies, Deals, or custom record.

  • 02

    Quick & Custom modes

    Speed when you want it, control when you need it.

  • 03

    CDC pull sync

    QBO Change Data Capture — only the invoices that actually moved.

  • 04

    Daily cron + manual sync

    Scheduled pull at 00:00 UTC, plus button and record action.

  • 05

    Edit & Void from Attio

    Controlled push-back to QBO on due date, memo, and line items.

  • 06

    Field mapping

    Map any Attio attribute to any QBO invoice field.

  • 07

    Template defaults

    Fallbacks for missing fields — invoices never break.

  • 08

    Multi-object support

    Companies, Deals, or any custom object you create.

  • 09

    Invoice object (Pro)

    Optional Attio object that stores every invoice.

  • 10

    Sandbox & production

    Switch QBO environments per workspace.

  • 11

    Auto-refreshed OAuth

    Attio handles token refresh — no key management.

  • 12

    Errors written to Attio

    writeback_sync_error surfaces failures in your CRM.

  • 13

    Usage metering

    Free 10/mo, then unlimited on Pro. Tracked in real time.

  • 14

    Stripe billing

    Self-serve upgrades & cancellations via customer portal.

“A good invoice is the one that gets paid —a great one is the one you barely had to make.”