Contents

This post explains how to use Modern Treasury’s Continuous Accounting product with QuickBooks. We will cover some QuickBooks basics, product decisions we made while building our integration, and how to setup QuickBooks with Modern Treasury.


QuickBooks Basics

QuickBooks is one of the most widely adopted accounting systems, used by millions of small to mid-sized businesses. The system keeps track of all company transactions—bill payments to vendors, transfers between bank accounts, payments from customers, and more. Ultimately, these transactions make their way into the company’s general ledger, which is a record of all its financial transactions. 

QuickBooks has out-of-the-box integrations with many of the software and finance tools that their clients use. These integrations generally use their API, which grants direct access to client accounts for both reading and recording data.

The most glaring absence from the QuickBooks API is a way to import bank account transactions and balances. Instead, bank data can only be automatically imported from banks using a proprietary file format called QFX. The alternative is to upload files manually in the application. This limitation has important implications for how we built our product.


Product Goals

Modern Treasury has a unique vantage point into a company’s payments since we are connected directly to their bank account. With our QuickBooks integration, our aim is to bring richer data about a company’s transactions to their general ledger. This helps them close their books faster with more clarity into how the business is performing.

When we began building against QuickBooks, we set some goals to help guide our approach:

  • Our customers can use our integration without significantly changing their existing accounting processes. 
  • Our customers’ books should be more comprehensive than if they were done by hand.
  • Our customers should have complete visibility and control over how their data is being used and synced. There should be no surprises.


How our Integration Works

Modern Treasury uses the QuickBooks API. Our customers grant us access through Oauth2, a secure standard for granting access to third parties. Modern Treasury maintains the connection so our customers don’t have to reconnect over time.

Once a QuickBooks connection is established, our customers can map their existing QuickBooks data to their Modern Treasury account. This is a fairly straightforward exercise for their bank accounts, customers, and vendors, since the names of these records are generally the same in each system. When they are different, we have tools to help resolve the differences.

Searching QuickBooks for a vendor match.


As payments happen throughout the month, they get automatically set up to be synced to QuickBooks. Our customers can perform the syncs on their preferred cadence, whether it’s by the minute, day, or month. Once the data from Modern Treasury is in QuickBooks, our customers can close out their books using QuickBooks reconciliation tools.

Mapping Modern Treasury bank accounts to QuickBooks.


Goal #1: Overlaying with Existing Processes

One of our early decisions was to play nicely with the bank reconciliation features in QuickBooks. Many QuickBooks customers already import their bank transactions. Modern Treasury pushes enriched data into QuickBooks that can be cleanly reconciled against those bank transactions. 

This requires us to maintain records of the data from QuickBooks, such as the chart of accounts, classes, customers, and vendors. This data is associated with entities in Modern Treasury:

Mapping data between Modern Treasury and QuickBooks.


When it is time to close the books, our clients can simply click “Match” on every item in their bank feed, since the data has already been sent from Modern Treasury.

Matching an expense created by Modern Treasury.

When there is a high volume of payments, there may be multiple similar transactions. In those cases, our customers can refer to Modern Treasury, where all the payments are already reconciled to the corresponding bank transactions. 


Goal #2: Better Books

Our platform contains a lot of context and data about individual payments. Whether it’s thousands of line items, internal memos, or the exact time a payment was created, we will sync these pieces of data to QuickBooks. This empowers teams to bring more clarity to their finances and avoid questions down the line.

With our API, engineering teams can automate the data entry around applying accounting categories. For example, let’s say a lender wants to collect a monthly payment from a borrower. The payment would include both principal and interest, which are recorded in different ways in their general ledger. The following API call for that loan payment would record line items in both their interest payable and notes payable accounts:


curl --request POST \
  --url https://app.moderntreasury.com/api/payment_orders \
  --data '{
    "type": "ach",
    "amount": 20000,
    "direction": "debit",
    "originating_account_id": "c5f4009c-bdd6-4cc1-84b2-17974ac9e77a",
    "receiving_account_id": "fecf6eb7-1474-4b92-9722-0afa5cd0228d",
    "description": "Payment for loan",
    "line_items": [
        {
            "amount": 18000,
            "description": "Principal Payment",
            # ID for Notes Payable Account
            "accounting_category_id": "93a456a1-1603-4dbc-b668-46c758b1e05a"
        },
        {
            "amount": 2000,
            "description": "Interest Payment",
            # ID for Interest Payable Account
            "accounting_category_id": "c37606eb-5dea-4a54-b280-2ff5fa497cda"
        }
    ]
  }'


If you don’t want to apply categories on each line item, a single category can be applied to the payment as a whole. Or, if the category is only different for a single line item, that can be specified and take precedence over the payment’s category.

With our dashboard, finance teams can enter the same data with the knowledge that it will be preserved and sent to QuickBooks as well. To make it easier to apply categories consistently, default categories can be set on each counterparty. Those categories would then be automatically applied to future payments to that counterparty.

Reimbursing an employee for expenses incurred on the job. Notice the Accounting Category can be set in the lower right.


Goal #3: No Surprises

For our customers, it’s important to know what Modern Treasury is syncing to QuickBooks. We built our product in a way that keeps our customers in control.

For example, we decided to not have our syncs be automatic. Instead, our customers have a queue of payment orders and counterparties that are waiting to be synced. They can click into any one of them to get more details or to change something last minute, like its accounting category. When they are ready, they can sync every item individually or in bulk.

Additionally, we chose to not be too clever in how we matched data between Modern Treasury and QuickBooks. Instead, we let our customers handle those mappings themselves to ensure everything is done correctly. 

In some cases we can be confident in automatic processes. For example, QuickBooks has a restriction that no two vendors, customers, or employees have the same name. So we built a system that matches Modern Treasury counterparties to QuickBooks records. For one of our clients, it matched 530 of their 580 vendors correctly. And for the ones that didn’t resolve to a match, they used our app to map them to existing vendors in QuickBooks in under 10 minutes. This enabled them to avoid duplicating vendors that would later have to be merged.


Summary

Modern Treasury now integrates with QuickBooks to help our clients close their books more accurately and efficiently. This functionality can be used both in the API and through our dashboard. Over time, we plan to add support for additional accounting systems. This will help to future proof our clients’ payment operations and accounting workflows.

If you’re interested in learning more about why we built this integration, how we thought about it, or using Modern Treasury, please reach out.

References

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.