Intuit QuickBooks for Business icon

QuickBooks Online data API: invoices, bank feeds and P&L

Intuit Inc · Business

Intuit QuickBooks for Business is Intuit Inc.'s Android client for QuickBooks Online, the cloud bookkeeping product the Mountain View company sells to small and mid-size businesses. From the home dashboard owners raise invoices and estimates, snap receipts for expenses, match bank and card feeds, take card or ACH payments, run payroll, and open profit-and-loss and cash-flow views without sitting at a desktop. The same company file is shared with bookkeepers and accountants who already work in QuickBooks Online on the web, so a shop owner on the road and a firm on the books stay on one ledger. Play-listed as Intuit QuickBooks for Business (the binary brands itself QuickBooks Online), it is the mobile front door for Intuit's US-centric SMB accounting franchise and also ships for QuickBooks Online companies in India, France and Mexico; it competes with Xero, FreshBooks, Sage and Zoho Books for phone-first bookkeeping.

Open-invoice Balance and DueDate ride on each sales document next to DocNumber, TotalAmt and the customer DisplayName, while the invoice list also returns openTotalAmount, overdueTotalCount and receivable status. Chart-of-accounts rows carry CurrentBalance, AccountType and linked bank-feed bankBalance, totalMoneyIn and totalMoneyOut; cash-flow windows add moneyIn, moneyOut and endingBalance, and P&L aggregates split income, expense and profit value.

Collections teams can age AR from those open and overdue totals, cash-ops dashboards can reconcile book balances against bank-feed figures, and FP&A tools can chart P&L and cash-flow spans without re-keying the company file. openData Studio turns that company-books surface into callable open data.

Screenshots

  • Intuit QuickBooks for Business screenshot 1
  • Intuit QuickBooks for Business screenshot 2
  • Intuit QuickBooks for Business screenshot 3
  • Intuit QuickBooks for Business screenshot 4
  • Intuit QuickBooks for Business screenshot 5
  • Intuit QuickBooks for Business screenshot 6
  • Intuit QuickBooks for Business screenshot 7
  • Intuit QuickBooks for Business screenshot 8

API surface

The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.

  • Query company entities (QBO v3)

    GET /v1/books/{companyId}/query openfinance

    Runs QuickBooks Online's v3 query language against the signed-in company (Invoice, Customer, Account, Payment, Item, Vendor and other QueryResponse collections).

    Auth: OAuth 2 Bearer from Intuit identity sign-in (Authorization header). Company scoped by realmId; originating-app header identifies the Android client.

    • Id
    • SyncToken
    • DocNumber
    • TxnDate
    • DueDate
    • TotalAmt
    • Balance
    • CustomerRef
    • BillEmail
    • AllowOnlineACHPayment
    • AllowOnlineCreditCardPayment
    • status
    GET /v1/books/934145123456/query?query=SELECT%20*%20FROM%20Invoice%20WHERE%20Balance%20%3E%20%270%27%20STARTPOSITION%201%20MAXRESULTS%2020 HTTP/1.1
    Authorization: Bearer <intuit_access_token>
    Accept: application/json
    {
      "QueryResponse": {
        "Invoice": [
          {
            "Id": "142",
            "SyncToken": "3",
            "DocNumber": "1042",
            "TxnDate": "2026-09-12",
            "DueDate": "2026-10-12",
            "TotalAmt": "1850.00",
            "Balance": "1850.00",
            "CustomerRef": {"value": "88", "name": "Harbor Mill Coffee"},
            "BillEmail": {"Address": "[email protected]"},
            "AllowOnlineACHPayment": true,
            "AllowOnlineCreditCardPayment": true,
            "status": "Open"
          }
        ],
        "maxResults": 20,
        "startPosition": 1
      }
    }
  • Record customer payment

    POST /v1/books/{companyId}/customer-payments openfinance

    Posts a customer payment against open invoices and optionally processes card/ACH through Payments Hub.

    Auth: OAuth 2 Bearer from Intuit identity sign-in (Authorization header). Company scoped by realmId; originating-app header identifies the Android client.

    • Id
    • CustomerRef
    • TotalAmt
    • UnappliedAmt
    • TxnDate
    • PaymentRefNum
    • DepositToAccountRef
    • ProcessPayment
    • LinkedTxn
    • status
    • TxnSource
    POST /v1/books/934145123456/customer-payments HTTP/1.1
    Authorization: Bearer <intuit_access_token>
    Content-Type: application/json
    
    {
      "CustomerRef": {"value": "88", "name": "Harbor Mill Coffee"},
      "TotalAmt": "1850.00",
      "TxnDate": "2026-10-01",
      "PaymentRefNum": "ACH-88421",
      "DepositToAccountRef": {"value": "35"},
      "ProcessPayment": true,
      "Line": [{"Amount": "1850.00", "LinkedTxn": [{"TxnId": "142", "TxnType": "Invoice"}]}]
    }
    {
      "Payment": {
        "Id": "901",
        "SyncToken": "0",
        "CustomerRef": {"value": "88", "name": "Harbor Mill Coffee"},
        "TotalAmt": "1850.00",
        "UnappliedAmt": "0",
        "TxnDate": "2026-10-01",
        "PaymentRefNum": "ACH-88421",
        "DepositToAccountRef": {"value": "35"},
        "status": "Completed",
        "TxnSource": "QBOMobile"
      }
    }
  • Run company report

    GET /v1/books/{companyId}/reports/{reportName} opendata

    Executes a named QuickBooks Online report (ProfitAndLoss and other reportEndPoint values) as column/row grids for the reports screen.

    Auth: OAuth 2 Bearer from Intuit identity sign-in (Authorization header). Company scoped by realmId; originating-app header identifies the Android client.

    • ReportName
    • StartPeriod
    • EndPeriod
    • Currency
    • ColTitle
    • ColType
    • group
    • ColData
    • value
    GET /v1/books/934145123456/reports/ProfitAndLoss?start_date=2026-09-01&end_date=2026-09-30&accounting_method=Accrual HTTP/1.1
    Authorization: Bearer <intuit_access_token>
    Accept: application/json
    {
      "Header": {"ReportName": "ProfitAndLoss", "StartPeriod": "2026-09-01", "EndPeriod": "2026-09-30", "Currency": "USD"},
      "Columns": {"Column": [{"ColTitle": "", "ColType": "Account"}, {"ColTitle": "Total", "ColType": "Money"}]},
      "Rows": {"Row": [
        {"group": "Income", "Summary": {"ColData": [{"value": "Income"}, {"value": "48210.00"}]}},
        {"group": "Expenses", "Summary": {"ColData": [{"value": "Expenses"}, {"value": "27140.00"}]}},
        {"group": "NetIncome", "Summary": {"ColData": [{"value": "Net Income"}, {"value": "21070.00"}]}}
      ]}
    }
  • Download transaction PDF

    GET /v1/books/{companyId}/txns/{txnKind}/{txnId}/file opendata

    Fetches the printable PDF for an invoice, estimate, sales receipt or other transaction type from the share/print sheet.

    Auth: OAuth 2 Bearer from Intuit identity sign-in (Authorization header). Company scoped by realmId; originating-app header identifies the Android client.

    • contentType
    • transactionType
    • transactionId
    • DocNumber
    • fileName
    • byteSize
    GET /v1/books/934145123456/txns/invoice/142/file HTTP/1.1
    Authorization: Bearer <intuit_access_token>
    Accept: application/pdf
    {
      "contentType": "application/pdf",
      "transactionType": "invoice",
      "transactionId": "142",
      "DocNumber": "1042",
      "fileName": "Invoice_1042.pdf",
      "byteSize": 86421
    }
  • Create sales receipt

    POST /v1/books/{companyId}/walk-in-sales openfinance

    Creates a paid-in-full sales receipt (counter sale) and deposits it to a book account.

    Auth: OAuth 2 Bearer from Intuit identity sign-in (Authorization header). Company scoped by realmId; originating-app header identifies the Android client.

    • Id
    • SyncToken
    • DocNumber
    • TxnDate
    • TotalAmt
    • Balance
    • CustomerRef
    • DepositToAccountRef
    • Line
    POST /v1/books/934145123456/walk-in-sales HTTP/1.1
    Authorization: Bearer <intuit_access_token>
    Content-Type: application/json
    
    {
      "DocNumber": "SR-221",
      "TxnDate": "2026-10-02",
      "CustomerRef": {"value": "88"},
      "TotalAmt": "64.50",
      "DepositToAccountRef": {"value": "35", "name": "Checking"},
      "Line": [{"Amount": "64.50", "Description": "Drip bar — 2 drinks", "DetailType": "SalesItemLineDetail"}]
    }
    {
      "SalesReceipt": {
        "Id": "310",
        "SyncToken": "0",
        "DocNumber": "SR-221",
        "TxnDate": "2026-10-02",
        "TotalAmt": "64.50",
        "Balance": "0",
        "CustomerRef": {"value": "88", "name": "Harbor Mill Coffee"},
        "DepositToAccountRef": {"value": "35", "name": "Checking"}
      }
    }
  • List invoices (GetInvoices)

    GET /v1/books/{companyId}/invoices openfinance

    Pages the company's sales documents for the invoice list, with receivable balance, due date and online-payment flags.

    Auth: OAuth 2 Bearer from Intuit identity sign-in (Authorization header). Company scoped by realmId; originating-app header identifies the Android client.

    • id
    • type
    • referenceNumber
    • status
    • amount
    • txnDate
    • balance
    • dueDate
    • displayName
    • enableCCPayment
    • enableBankPayment
    • totalTaxAmount
    • shareLink
    • endCursor
    GET /v1/books/934145123456/invoices?status=Open&first=20&orderBy=txnDate%20DESC HTTP/1.1
    Authorization: Bearer <intuit_access_token>
    Accept: application/json
    {
      "data": {
        "company": {
          "sales": {
            "pageInfo": {"hasNextPage": true, "endCursor": "Y3Vyc29yOjIw"},
            "edges": [{
              "node": {
                "id": "142",
                "type": "Invoice",
                "referenceNumber": "1042",
                "status": "Open",
                "amount": "1850.00",
                "txnDate": "2026-09-12",
                "receivable": {"balance": "1850.00", "dueDate": "2026-10-12", "onlinePaymentInfo": {"enableCCPayment": true, "enableBankPayment": true}},
                "contact": {"id": "88", "displayName": "Harbor Mill Coffee"},
                "tax": {"totalTaxAmount": "148.00"},
                "delivery": {"status": "EmailSent"}
              }
            }]
          }
        }
      }
    }
  • Invoice open/overdue totals

    GET /v1/books/{companyId}/invoices/rollups opendata

    Returns the invoice-list summary chips: open, paid and overdue counts and amounts.

    Auth: OAuth 2 Bearer from Intuit identity sign-in (Authorization header). Company scoped by realmId; originating-app header identifies the Android client.

    • openTotalCount
    • openTotalAmount
    • overallCount
    • overallAmount
    • paidTotalCount
    • paidTotalAmount
    • overdueTotalCount
    • overdueTotalAmount
    GET /v1/books/934145123456/invoices/rollups?asOfDate=2026-10-05 HTTP/1.1
    Authorization: Bearer <intuit_access_token>
    Accept: application/json
    {
      "data": {
        "company": {
          "saleSummary_getStats": {
            "edges": [{
              "node": {
                "openTotalCount": 14,
                "openTotalAmount": "12840.00",
                "overallCount": 86,
                "overallAmount": "94120.00",
                "paidTotalCount": 72,
                "paidTotalAmount": "81280.00",
                "overdueTotalCount": 3,
                "overdueTotalAmount": "2100.00"
              }
            }]
          }
        }
      }
    }
  • Create invoice (createSales_Sale)

    POST /v1/books/{companyId}/invoices openfinance

    Creates a sales invoice from the mobile new-invoice form, returning line items and the open receivable.

    Auth: OAuth 2 Bearer from Intuit identity sign-in (Authorization header). Company scoped by realmId; originating-app header identifies the Android client.

    • id
    • type
    • referenceNumber
    • status
    • amount
    • txnDate
    • balance
    • dueDate
    • description
    • quantity
    • rate
    • item
    POST /v1/books/934145123456/invoices HTTP/1.1
    Authorization: Bearer <intuit_access_token>
    Content-Type: application/json
    
    {
      "contactId": "88",
      "txnDate": "2026-10-05",
      "dueDate": "2026-11-04",
      "lines": [{"itemId": "12", "description": "Catering — 40 covers", "quantity": 1, "rate": "1850.00", "amount": "1850.00"}]
    }
    {
      "data": {
        "createSales_Sale": {
          "salesSaleEdge": {
            "node": {
              "id": "155",
              "type": "Invoice",
              "referenceNumber": "1043",
              "status": "Open",
              "amount": "1850.00",
              "txnDate": "2026-10-05",
              "receivable": {"balance": "1850.00", "dueDate": "2026-11-04"},
              "lines": {"edges": [{"node": {"id": "1", "description": "Catering — 40 covers", "quantity": 1, "rate": "1850.00", "amount": "1850.00", "item": {"id": "12", "name": "Catering"}}}]}
            }
          }
        }
      }
    }
  • List customers

    GET /v1/books/{companyId}/parties/customers opendata

    Searches the customer directory with outstanding AR balance, emails, phones and billing address for the customers screen.

    Auth: OAuth 2 Bearer from Intuit identity sign-in (Authorization header). Company scoped by realmId; originating-app header identifies the Android client.

    • id
    • displayName
    • firstName
    • lastName
    • companyName
    • active
    • totalAmount
    • address
    • number
    • city
    • state
    • postalCode
    • totalCount
    GET /v1/books/934145123456/parties/customers?search=Harbor&offset=0&limit=25 HTTP/1.1
    Authorization: Bearer <intuit_access_token>
    Accept: application/json
    {
      "data": {
        "contacts": {
          "totalCount": 1,
          "data": [{
            "id": "88",
            "displayName": "Harbor Mill Coffee",
            "firstName": "Maya",
            "lastName": "Chen",
            "companyName": "Harbor Mill Coffee LLC",
            "active": true,
            "balance": {"totalAmount": "1850.00"},
            "emailDirectory": {"primary": {"address": "[email protected]"}},
            "phoneDirectory": {"primary": {"number": "+1-415-555-0142"}},
            "addressDirectory": {"billing": {"city": "San Francisco", "state": "CA", "postalCode": "94107", "country": "US"}}
          }]
        }
      }
    }
  • List vendors

    GET /v1/books/{companyId}/parties/vendors opendata

    Pages vendor contacts for bills and expenses, including print-on-check name and active vendor profile.

    Auth: OAuth 2 Bearer from Intuit identity sign-in (Authorization header). Company scoped by realmId; originating-app header identifies the Android client.

    • id
    • displayName
    • companyName
    • givenName
    • familyName
    • printOnCheckName
    • emailAddress
    • number
    • active
    • realmId
    • localId
    GET /v1/books/934145123456/parties/vendors?active=true&first=25 HTTP/1.1
    Authorization: Bearer <intuit_access_token>
    Accept: application/json
    {
      "data": {
        "company": {
          "contacts": {
            "pageInfo": {"hasNextPage": false, "endCursor": null},
            "edges": [{
              "node": {
                "id": "44",
                "displayName": "Pacific Roasters",
                "companyName": "Pacific Roasters Inc",
                "person": {"givenName": "Luis", "familyName": "Ortega", "printOnCheckName": "Pacific Roasters Inc"},
                "contactMethods": {"emails": [{"emailAddress": "[email protected]", "primary": true}], "telephones": [{"number": "+1-510-555-0199"}]},
                "profiles": {"vendor": {"active": true}}
              }
            }]
          }
        }
      }
    }
  • Profit and loss totals

    GET /v1/books/{companyId}/pnl opendata

    Returns period P&L aggregates with prior-period compare — the numbers on the profit-and-loss home card.

    Auth: OAuth 2 Bearer from Intuit identity sign-in (Authorization header). Company scoped by realmId; originating-app header identifies the Android client.

    • income
    • expense
    • profit
    • value
    • count
    • diff
    • diffPercentage
    • percentCount
    • uncategorized
    GET /v1/books/934145123456/pnl?startDate=2026-09-01&endDate=2026-09-30&accountingMethod=ACCRUAL&calendar=MONTH HTTP/1.1
    Authorization: Bearer <intuit_access_token>
    Accept: application/json
    {
      "data": {
        "profitability": {
          "income": {"aggregate": {"total": {"value": "48210.00"}, "count": {"value": 86}}},
          "expense": {"aggregate": {"total": {"value": "27140.00"}, "count": {"value": 54}}},
          "profit": {"aggregate": {"total": {"value": "21070.00", "compareTo": {"value": "19840.00", "diff": "1230.00", "diffPercentage": "6.2"}}, "percentCount": {"value": "43.7"}}},
          "uncategorized": {"all": {"aggregate": {"count": {"value": 2}}}}
        }
      }
    }
  • Cash-flow summary

    GET /v1/books/{companyId}/cash-plan openfinance

    Returns money-in / money-out and ending cash balances for the cash-flow widget and 12-month forecast.

    Auth: OAuth 2 Bearer from Intuit identity sign-in (Authorization header). Company scoped by realmId; originating-app header identifies the Android client.

    • summaryStartDate
    • summaryEndDate
    • summarySpan
    • source
    • moneyIn
    • moneyOut
    • endingBalance
    • summaryType
    • startDate
    • endDate
    GET /v1/books/934145123456/cash-plan?summaryStartDate=2026-10-01&summaryEndDate=2026-10-31&summarySpan=MONTH HTTP/1.1
    Authorization: Bearer <intuit_access_token>
    Accept: application/json
    {
      "data": {
        "getCashflowSummary": {
          "summaryStartDate": "2026-10-01",
          "summaryEndDate": "2026-10-31",
          "summarySpan": "MONTH",
          "source": "BOOKS_AND_BANK",
          "summaryData": [
            {"startDate": "2026-10-01", "endDate": "2026-10-07", "moneyIn": "6240.00", "moneyOut": "4180.00", "endingBalance": "15210.00", "summaryType": "WEEK"},
            {"startDate": "2026-10-08", "endDate": "2026-10-14", "moneyIn": "5100.00", "moneyOut": "3900.00", "endingBalance": "16410.00", "summaryType": "WEEK"}
          ]
        }
      }
    }
  • Bank-feed account balances

    GET /v1/books/{companyId}/bank-links openbanking

    Reads chart-of-accounts bank/credit-card rows plus online-banking (OLB) feed balances and money-in/out for the banking home.

    Auth: OAuth 2 Bearer from Intuit identity sign-in (Authorization header). Company scoped by realmId; originating-app header identifies the Android client.

    • id
    • accountType
    • accountSubType
    • fullName
    • code
    • bankBalance
    • totalMoneyIn
    • totalMoneyOut
    • transactionCount
    • startDate
    • endDate
    GET /v1/books/934145123456/bank-links?startDate=2026-10-01&endDate=2026-10-31 HTTP/1.1
    Authorization: Bearer <intuit_access_token>
    Accept: application/json
    {
      "data": {
        "company": {
          "accountsSummary": {
            "accountGroups": [{
              "financialPeriod": {"startDate": "2026-10-01", "endDate": "2026-10-31"},
              "accounts": {"edges": [{
                "node": {
                  "id": "35",
                  "accountType": "Bank",
                  "accountSubType": "Checking",
                  "fullName": "Checking",
                  "currencyInfo": {"code": "USD"},
                  "olbAccounts": {"edges": [{
                    "node": {"id": "olb-35", "bankBalance": "16410.55", "totalMoneyIn": "11340.00", "totalMoneyOut": "8080.00", "transactionCount": 47}
                  }]}
                }
              }]}
            }]
          }
        }
      }
    }
  • Expense totals by category

    GET /v1/books/{companyId}/costs/by-category opendata

    Breaks expenses by category with prior-period compare for the expenses analytics card.

    Auth: OAuth 2 Bearer from Intuit identity sign-in (Authorization header). Company scoped by realmId; originating-app header identifies the Android client.

    • category
    • id
    • name
    • categorized
    • count
    • total
    • value
    • diffPercentage
    GET /v1/books/934145123456/costs/by-category?startDate=2026-09-01&endDate=2026-09-30&compareTo=PREVIOUS_PERIOD&includeUncategorized=true HTTP/1.1
    Authorization: Bearer <intuit_access_token>
    Accept: application/json
    {
      "data": {
        "expenses": [
          {
            "category": {"id": "61", "name": "Meals and Entertainment"},
            "categorized": true,
            "aggregate": {
              "count": {"value": 18, "compareTo": {"value": 14, "diffPercentage": "28.6"}},
              "total": {"value": "2140.00", "compareTo": {"value": "1680.00", "diffPercentage": "27.4"}}
            }
          }
        ]
      }
    }

Data categories

  • invoices
  • customers
  • vendors
  • payments
  • chart of accounts
  • bank feeds
  • cash flow
  • profit and loss
  • expenses
  • sales receipts

Where teams use this data

  • AR collections dashboard

    A collections bot pages GetInvoices for Open documents, reads receivable.balance and dueDate, and ages them against InvoiceTotals overdueTotalAmount so a shop owner sees who is late without exporting a spreadsheet.

  • Bank-feed reconciliation

    Nightly jobs compare olbAccounts.bankBalance and totalMoneyIn/totalMoneyOut with book CurrentBalance on Bank accounts, then flag unmatched transactionCount spikes before the owner opens the banking home.

  • Customer credit check

    A B2B underwriting screen looks up DisplayName, companyName and Customer.balance.totalAmount (plus PrimaryEmailAddr) before extending terms, using the same customer card the invoice form already loads.

  • Cash-ops vs books

    FP&A tools chart GetCashflowSummary moneyIn, moneyOut and endingBalance next to ProfitAndLoss income/expense/profit.value so cash and accrual views stay on one company file.

Frequently asked questions

Does the QuickBooks Android app expose invoice balances, not just a PDF?

Yes. The sales-document list returns referenceNumber, amount, receivable.balance and dueDate per invoice, the invoice rollup adds openTotalAmount and overdueTotalCount, and the company query returns the same Balance, DocNumber and DueDate fields used on the invoice list.

Can I read connected bank balances from the company file?

Linked bank rows nest online-banking accounts with bankBalance, totalMoneyIn, totalMoneyOut and transactionCount on each Bank or credit-card book account, which is what the banking home uses after a feed refresh.

How does the app authenticate company calls?

After Intuit identity sign-in the client attaches an OAuth 2 Bearer token in the Authorization header, scopes the company by realmId, and sends an originating-app header that identifies the Android client on REST and Graph-style company calls.

Is this the public Intuit Developer API?

The calls match what the first-party Android client makes after login for a signed-in QuickBooks Online company — not a separately provisioned developer app. Treat tokens as the signed-in user's company session.

Apps similar to Intuit QuickBooks for Business

  • Xero — Xero is cloud-based accounting software for small businesses, sold by subscription in over 180 countries, covering automatic bank feeds, invoicing, accounts payable, expense claims and reporting on a single ledger.
  • Zoho Books — Zoho Books is cloud accounting software for solopreneurs through small businesses, covering invoicing, inventory, expenses and banking, with a free plan for micro businesses and clients for web, iOS and Android.
  • FreshBooks — FreshBooks is cloud accounting software from Toronto-based 2ndSite that covers invoicing, expense and time tracking, accounts payable and reporting for small and medium-sized businesses and freelancers.
  • Wave — Wave is H&R Block-owned software that combines accounting, invoicing, payroll and payment processing for small businesses, with a free Starter plan and a paid Pro plan.
  • Sage Accounting — Sage Accounting is Sage Group's cloud bookkeeping product for small and medium-sized firms and the self-employed, covering accounting, payroll, payments and time tracking with mobile apps for bills and taking payments.
  • Sage 50 Accounting — Sage 50 is Sage Group's Windows accounting and payroll suite for small and medium enterprises, offered as cloud-connected desktop software in regional editions for the US, UK, Canada and several European markets.
  • TallyPrime — TallyPrime is Tally Solutions' accounting and ERP software for Indian small and medium businesses, covering finances, inventory and GST compliance.

Topics

  • QuickBooks Online API
  • QuickBooks invoice Balance DueDate
  • QuickBooks customer DisplayName
  • QuickBooks bank feed bankBalance
  • QuickBooks profit and loss
  • QuickBooks cash flow moneyIn
  • Intuit company books
  • QuickBooks company query

Need this app's data API integrated?

We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.

  • NDA + SOW on every engagement
  • Delivery in 3–7 days
  • Payment only after acceptance
  • Work scoped to authorized use

Get a quote