How to connect
1. From QuickBooksOnline Developer Console (https://developer.intuit.com/app/developer/appdetail/test/keys) we need Client ID and Client Secret
2. In QuickBooksOnline Developer Console (https://developer.intuit.com/app/developer/appdetail/test/keys) you need set up correct redirect url (https://digifabster.com/manage/complete_quickbooksonline_registration/ by default)
3. In QuickBooksOnline Developer Console (https://developer.intuit.com/app/developer/sandbox) on sandbox or production app page we need Company ID
4. We need environment (can be either sandbox or production)
Status Flow
Triggers
In this case a request will be sent to QuickBooksOnline when the DF Order gets one of the processing statuses.
By default they are:
– Manufacturing status: Placed
NOTE: The set of statuses can be configured.
Records mapping
Records mapping is the correspondence of data on our side (Digifabster) with QuickBooksOnline integration.
By default in QuickBooksOnline we create: Account, Customer, Invoice.
Account
By default we sent – Name, AccountType.
1. Name – DF Order company name
(Name is derived from the DF Order address or from the first and last names, depending on whether the billing or delivery addresses exists)
2. AccountType – hardcoded “Income” type by default
3. AccountSubType – hardcoded “OtherPrimaryIncome” type by default
NOTE: A set of fields can be configured.
Customer
By default we sent – DisplayName, GivenName, FamilyName, EmailAddr, CompanyName
DisplayName – DF Order buyer’s fullname
GivenName – DF Order first name
FamilyName – DF Order last name
EmailAddr – DF Order email
CompanyName – DF Order company name
NOTE: A set of fields can be configured.
Invoice
By default we sent – CustomerRef, ShipAddr, BillAddr, Line, TxnTaxDetail, TotalAmt.
CustomerRef – QuickBooksOnline Customer ID which was created in a previous step
ShipAddr – DF Order delivery address
BillAddr – DF Order billing address
Line – DF Order purchases (DetailType, Amount, Description, Qty, UnitPrice)
4.1 DetailType – hardcoded “SalesItemLineDetail”
4.2 Amount – DF Order unit price * DF Order amount
example: “10.00”
4.3 Description – string with next data
Order #<df_order_id>, Model <df_model_title>, Material <df_material_title>: <df_material_description>, Notes: <df_order_notes>
4.4 Qty – DF Purchase amount
example: “10”
4.5 UnitPrice – DF Purchase unit price
example “1000.01”
5. TxnTaxDetail – dict with key “TotalTax” and value DF Order tax value
example: {“TotalTax”: “10”}
6. TotalAmt – DF Order total price
example: “1000.1”
NOTE: A set of fields can be configured
We sent the DF Order startup cost and DF Order delivery price to QuickBooksOnline as one of the line items.
Create or Update logic
After first creating an entity (Contact, Sales Order, Invoice) we store contact_id, sales_order_id, invoice_id in DF, which are used to update already existing entities in QuickBooksOnline.
We send an entity update request to QuickBooksOnline every time we change an order in DF, as long as its status matches the trigger conditions (see Status Flow)
Updating occurs with the same set of fields that are relevant for each entity (Account, Customer, Invoice).
Webhooks
We don’t provide webhooks for QuickBooksOnline integration at this time and only work one way (DF -> QuickBooksOnline)