Programa's QuickBooks integration keeps your accounting records aligned with your billing activity without manual data entry. This guide explains what syncs, how it works, and what stays in Programa only.
When do Invoices Sync?
Programa only syncs invoices to QuickBooks once they reach Issued or Sent status. Invoices in Draft status are not synced by default.
This is by design. QuickBooks Online does not have a concept of draft invoices — any invoice synced to QuickBooks is treated as a live document and posts directly to your ledger. Syncing drafts would create unintended accounting entries before an invoice is ready to be issued to a client.
Invoice status in Programa | Syncs to QuickBooks (default) |
Draft | No |
Issued | Yes |
Sent | Yes |
Want to sync draft invoices?
This can be enabled in your QuickBooks integration settings via Settings > Integrations > QuickBooks Settings > Sync draft invoices. Please read the warnings carefully before enabling this option, and consult your bookkeeper if you're unsure.
What Data Gets Synced
Invoices
When an invoice in Programa reaches Issued or Sent status, the following details are synced to QuickBooks:
Invoice number
Transaction date (when the invoice was created)
Due date (set in Programa)
Linked customer in QuickBooks
Tax settings (based on your project setup)
Project address- becomes the shipping address on the invoice in quickbooks
Tax details vary by region:
US: Total tax + a single tax code per project
Outside US: Total tax + detailed breakdown by rate
Line Items
Each item on the invoice includes:
Description (up to 100 characters)
Quantity and unit price (excluding tax)
Total amount (excluding tax)
Standard Programa category in QuickBooks (based on item type - see Products & Services below)
Tax code (e.g., 'TAX', 'NON', or country-specific codes)
Note: For tax-inclusive invoices, tax is removed before syncing to show the base amount.
Client Details
If the customer doesn't exist in QuickBooks, Programa creates them using information from your Address Book:
Company name (with "Customer - " prefix if the company is also a vendor)
Contact name, email, and phone number
Programa checks for existing customers by company name before creating new ones.
Products & Services
Rather than creating an individual named product in QuickBooks for each line item, Programa maps each item to one of four standard categories based on its type:
Programa Sales of Product Income — product line items from schedules
Programa Income from services — service and time entry line items (time entries are automatically categorised here)
Programa Generic Income — custom line items
Programa Discount Income — discounts applied to invoices
The income accounts configured in your QuickBooks settings are assigned to each category by default. To use a different account for a specific line item, you can override it directly on that line when creating your invoice in Programa.
What Doesn't Sync
Some information stays in Programa only:
Payments and payment terms (only due date syncs)
Notes, custom fields, or attachments
Project details beyond tax information
Programa-specific features like pinboards or tasks
Draft invoices (by default — invoices only sync once they reach Issued or Sent status. See [When Do Invoices Sync?] above.)
How the Sync Works
The integration operates automatically in the background:
Source: Stripe (Programa's billing system)
Trigger: Stripe sends a signal when an invoice's status changes to Issued or Sent (draft invoices do not trigger a sync by default)
Direction: One-way only (Programa → QuickBooks)
Actions: Creates, updates, and deletes invoices
Troubleshooting tip: If a customer reports sync issues, check the invoice's sync error messages in Programa for specific details.
Key Takeaways
The sync is one-way only from Programa to QuickBooks
Invoices (in Issued or Sent status), line items, customers, and products sync automatically
Payments, custom fields, and attachments don't sync
Syncing happens automatically via Stripe webhooks (background processing)
Need more help with the QuickBooks integration? Contact our support team via live chat for personalized assistance.