This guide explains how the integration between Monday.com and QuickBooks Online (QBO) automatically syncs customer contact information and generates invoices. You'll learn how email updates cascade across your boards, how invoice due dates are calculated, and what happens when an order is ready for billing.
How the Email Sync Works
When a customer's email address needs to be updated, the system triggers a sequential process to ensure all related records stay in sync.
flowchart TD
A["Email Update Triggered"] --> B["Update QuickBooks Customer"]
B --> C["Update Monday.com Contacts"]
C --> D["Find Matching Order"]
D --> E["Link Contact to Order"]
E --> F["Mark Update as Done"]- 1
Update QuickBooks
The system first updates the customer's profile in QuickBooks Online, setting the new address as their
primary_email_addr. - 2
Update Monday.com Contacts
Next, the integration locates the customer in your Contacts board and updates their email address column to match QuickBooks.
- 3
Link to Active Orders
The system searches the Orders board for the corresponding Order Number. Once found, it links the updated Contact record directly to the Order using a board relation column.
- 4
Complete the Request
Finally, the status in the Contact Updater board is automatically changed to Done, signaling that the sync was successful.
Because the system links the Contact directly to the Order board, your team will always see the most up-to-date email address when viewing an active order.
Automated Invoice Generation
When an order moves to the Order Ready or Invoice Now deal stage, the system automatically prepares a QuickBooks invoice.
Due Date Calculation Logic
The due date on the generated invoice depends on the client's payment terms. The system calculates this automatically based on your local time zone (EDT/EST).
| Client Type | Due Date Logic | Example (If generated on April 3rd) |
|---|---|---|
| Standard | Tomorrow (1 day after generation) | April 4th |
| Pay By Check | 1st day of the following month | May 1st |
The system automatically handles year-end rollovers. If a "Pay By Check" invoice is generated in December, the due date will correctly set to January 1st of the new year.
Date Calculation Script
If you need to understand the exact logic used to determine the delivery and due dates, here is the underlying Python script used by the integration:
from datetime import datetime, timedelta
# Adjust UTC to local time (-4 hours for EDT)
now_utc = datetime.now()
local_now = now_utc + timedelta(hours=-4)
client_type = input_data.get('client_type', '').strip()
# Calculate Due Date
if client_type == "Pay By Check":
if local_now.month == 12:
# December rollover to January
due_date_obj = datetime(local_now.year + 1, 1, 1)
else:
# Move to the first day of the next month
due_date_obj = datetime(local_now.year, local_now.month + 1, 1)
else:
# Standard logic: Tomorrow based on local time
due_date_obj = local_now + timedelta(days=1)
# Calculate Date Delivered (Current local date)
date_delivered = local_now.strftime("%Y-%m-%d")
return {
"Due Date": due_date_obj.strftime("%Y-%m-%d"),
"date_delivered": date_delivered
}Frequently Asked Questions
What happens if a QuickBooks ID is missing?
The invoice generation process includes a branching safety check. If the system cannot find a valid QuickBooks ID (QB ID) attached to the Monday.com order, the automation routes to a "Not Found" path and stops. This prevents duplicate or orphaned invoices from being created.
Which deal stages trigger an invoice?
The integration listens for changes to the Deal Stage column on the Orders board. It will only proceed with creating an invoice if the stage is exactly Order Ready or Invoice Now.
Always ensure that new clients are properly synced and have a valid QuickBooks ID in Monday.com before moving their deal stage to Order Ready. Missing IDs will cause the invoice automation to silently halt.