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.
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.
Choose an invoice mode
AttiBooks ships with two ways to create invoices. You can switch anytime from settings.
Quick mode
One click. AttiBooks reads the record, builds the invoice, and submits it to QBO. Best for repeat work.
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.
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.
source_customer_emailstringEmail QuickBooks sends to
Required if you want QBO to deliver the invoice automatically.
source_service_descriptionstringLine-item description
Falls back to the template default if empty.
source_ratestringUnit price (per unit)
Number attribute. Reads as the line item rate.
source_quantitystringQuantity / hours
Number attribute. Multiplied by rate to compute total.
source_currencystringThree-letter currency code
USD, EUR, GBP. Must exist in your QBO chart of accounts.
source_due_daysstringNet 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.
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.
template_service_descriptionstringDefault line description
e.g. "Consulting services"
template_ratenumberDefault unit price
e.g. 150
template_quantitynumberDefault quantity
e.g. 1
template_currencystringDefault currency
e.g. USD
template_due_daysnumberDefault net terms
e.g. 30 (days)
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.
writeback_invoice_idstringQBO invoice ID
Internal Intuit identifier — keep for support.
writeback_invoice_numberstringInvoice number
The number your customer sees.
writeback_invoice_statusstatus / stringOpen, Paid, Voided
Updates live via webhook.
writeback_invoice_urlurlQBO deep link
Opens the invoice inside QuickBooks.
writeback_last_sync_attimestampLast successful sync
Helps debug stale data.
writeback_sync_errorstringLast 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.
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.
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.
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.
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:
Scheduled crondailyRuns on attibooks.com
Hits /api/cron/sync-invoices at 00:00 UTC every day. Zero config.
Settings buttonmanual6. Invoice Sync → Sync Now
Force a pull on demand from workspace settings. Useful while setting things up.
Record actionmanualSync 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.
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.”