A complete Salesforce integration with QuickBooks Online using OAuth 2.0 authentication and Flow-compatible invocable actions.
sf package install --package 04tfo000001FYIXAA4 --target-org YOUR_ORG_ALIAS --wait 10- OAuth 2.0 Authentication: Secure token-based authentication with automatic refresh
- Customer Sync: Create and sync customers between Salesforce Accounts and QuickBooks
- Estimates: Create estimates with single or multiple line items
- Invoices: Generate invoices from Opportunities
- Payments: Track and record payments
- Flow Actions: All functionality available as invocable actions for use in Flows
- Webhook Support: Real-time sync via QuickBooks webhooks
- Logging: Comprehensive integration logging for troubleshooting
| Object | Description |
|---|---|
QuickBooks_Auth__c |
Stores OAuth tokens and credentials |
QuickBooks_OAuth__c |
OAuth state management |
QuickBooks_Config__mdt |
Custom metadata for configuration |
Estimate__c |
QuickBooks estimates |
Invoice__c |
QuickBooks invoices |
Payment__c |
QuickBooks payments |
Integration_Log__c |
Integration audit logs |
Account
QuickBooks_Customer_Id__c- QuickBooks Customer IDQuickBooks_Sync_Status__c- Sync statusQuickBooks_Last_Sync__c- Last sync timestamp
Opportunity
QuickBooks_Estimate_Id__c/QuickBooks_Estimate_Number__c- Estimate referencesQuickBooks_Invoice_Id__c/QuickBooks_Invoice_Number__c- Invoice referencesQuickBooks_Sync_Status__c/QuickBooks_Last_Sync__c- Sync tracking
Product2
QuickBooks_Item_Id__c- QuickBooks Item/Product IDQuickBooks_Sync_Status__c- Sync status
| Action | Description |
|---|---|
QuickBooksCustomerInvocable |
Create/sync customers |
QuickBooksEstimateInvocable |
Create single-line estimates |
QuickBooksEstimateMultiLineInvocable |
Create multi-line estimates |
QuickBooksEstimateSendInvocable |
Email estimates to customers |
QuickBooksInvoiceInvocable |
Create invoices |
QuickBooksSyncQueueable |
Async sync operations |
QuickBooksAttachmentInvocable |
Attach files to QuickBooks entities |
- Go to QuickBooks Developer Portal
- Create an app and get your Client ID and Client Secret
- Set the OAuth redirect URI to your Salesforce site URL +
/services/apexrest/quickbooks/oauth/callback
- Install the package using the links above
- Assign the
QuickBooks_Integration_Accesspermission set to integration users - Create a Custom Metadata record for
QuickBooks_Config__mdtwith your credentials - Configure Remote Site Settings (included in package):
- IntuitOAuth
- QuickBooksProductionAPI
- QuickBooksSandboxAPI
Navigate to the QuickBooksAuthStart Visualforce page to initiate the OAuth flow.
Use the QuickBooksCustomerInvocable action in your Flow:
- Input: Account record
- Output: QuickBooks Customer ID
Use the QuickBooksEstimateMultiLineInvocable action:
- Input: Account ID, Line Items JSON, Customer Email
- Output: Estimate ID, Estimate Number
[
{
"itemId": "123",
"quantity": 1,
"amount": 1500.00,
"description": "Product Description"
},
{
"itemId": "456",
"quantity": 2,
"amount": 500.00,
"description": "Another Product"
}
]┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Salesforce │────▶│ QuickBooks API │────▶│ QuickBooks │
│ (Flows/Apex) │◀────│ Service Layer │◀────│ Online │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│ │
▼ ▼
┌─────────────────┐ ┌──────────────────┐
│ Custom Objects │ │ OAuth 2.0 │
│ (Estimates, │ │ Token Mgmt │
│ Invoices, etc) │ └──────────────────┘
└─────────────────┘
- All OAuth tokens are stored encrypted in Salesforce
- Automatic token refresh before expiration
- Field-level security via Permission Sets
- No hardcoded credentials - all configuration via Custom Metadata
Contributions are welcome! Please read our contributing guidelines and submit pull requests.
This project is licensed under the MIT License - see the LICENSE file for details.
- Create an issue on GitHub for bugs or feature requests
- Check the Integration_Log__c object for troubleshooting
Package Version: 0.1.0.1
Subscriber Package Version ID: 04tfo000001FYIXAA4