QuickBooks Online 数据 API:发票、银行回单与损益
Intuit QuickBooks for Business 是 Intuit Inc. 为 QuickBooks Online 做的 Android 客户端。这家山景城公司把云端记账卖给中小企业:店主在首页开具发票和报价单、拍收据记费用、匹配银行与信用卡回单、收取卡或 ACH 款项、跑工资,并查看损益与现金流,不必坐在桌面端。同一套公司账本与已经在网页版 QuickBooks Online 上做账的会计师、记账员共享,出门在外的店主和事务所对着同一本账。Play 上架名为 Intuit QuickBooks for Business(安装包自称 QuickBooks Online),是 Intuit 以美国中小企业为主的记账产品的手机入口,也覆盖印度、法国、墨西哥等 QuickBooks Online 地区,对标 Xero、FreshBooks、Sage 与 Zoho Books 的手机记账。
未结发票上的 Balance 与 DueDate 紧挨 DocNumber、TotalAmt 和客户 DisplayName;发票列表还给出 openTotalAmount、overdueTotalCount 与应收 status。科目表行带 CurrentBalance、AccountType 以及银行回单里的 bankBalance、totalMoneyIn、totalMoneyOut;现金流窗口补上 moneyIn、moneyOut 与 endingBalance,损益合计则拆成收入、费用与利润的 value。
催收团队可以用未结与逾期合计做账龄,资金台账可以把账面余额对上银行回单,FP&A 工具也能直接画损益和现金流跨度,不必再手工倒账。openData Studio 把这套公司账本做成可调用的开放数据。
应用截图
API 端点一览
以下端点与请求/响应示例均依据应用界面推导重构,为示意说明,并非实际抓包。
查询公司实体(QBO v3)
GET
/v1/books/{companyId}/queryopenfinance对已登录公司运行 QuickBooks Online v3 查询语言,返回 Invoice、Customer、Account、Payment、Item、Vendor 等 QueryResponse 集合。
认证方式: Intuit 身份登录下发的 OAuth 2 Bearer(Authorization 请求头)。公司范围由 realmId 限定;来源应用头标明 Android 客户端。
- 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 } }登记客户收款
POST
/v1/books/{companyId}/customer-paymentsopenfinance把客户收款过账到未结发票,并可选择通过 Payments Hub 处理卡或 ACH。
认证方式: Intuit 身份登录下发的 OAuth 2 Bearer(Authorization 请求头)。公司范围由 realmId 限定;来源应用头标明 Android 客户端。
- 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" } }运行公司报表
GET
/v1/books/{companyId}/reports/{reportName}opendata按 reportEndPoint 执行 QuickBooks Online 命名报表(如 ProfitAndLoss),以行列网格返回给报表界面。
认证方式: Intuit 身份登录下发的 OAuth 2 Bearer(Authorization 请求头)。公司范围由 realmId 限定;来源应用头标明 Android 客户端。
- 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"}]}} ]} }下载交易 PDF
GET
/v1/books/{companyId}/txns/{txnKind}/{txnId}/fileopendata从分享/打印页拉取发票、报价单、销售收据等交易的可打印 PDF。
认证方式: Intuit 身份登录下发的 OAuth 2 Bearer(Authorization 请求头)。公司范围由 realmId 限定;来源应用头标明 Android 客户端。
- 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 }创建销售收据
POST
/v1/books/{companyId}/walk-in-salesopenfinance创建已全额收款的销售收据(柜台销售)并过入账面账户。
认证方式: Intuit 身份登录下发的 OAuth 2 Bearer(Authorization 请求头)。公司范围由 realmId 限定;来源应用头标明 Android 客户端。
- 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"} } }列出发票(GetInvoices)
GET
/v1/books/{companyId}/invoicesopenfinance分页拉取公司销售单据供发票列表使用,含应收余额、到期日与在线收款开关。
认证方式: Intuit 身份登录下发的 OAuth 2 Bearer(Authorization 请求头)。公司范围由 realmId 限定;来源应用头标明 Android 客户端。
- 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"} } }] } } } }发票未结/逾期合计
GET
/v1/books/{companyId}/invoices/rollupsopendata返回发票列表摘要条:未结、已付与逾期的笔数和金额。
认证方式: Intuit 身份登录下发的 OAuth 2 Bearer(Authorization 请求头)。公司范围由 realmId 限定;来源应用头标明 Android 客户端。
- 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" } }] } } } }创建发票(createSales_Sale)
POST
/v1/books/{companyId}/invoicesopenfinance从手机新建发票表单创建销售发票,返回行项目与未结应收。
认证方式: Intuit 身份登录下发的 OAuth 2 Bearer(Authorization 请求头)。公司范围由 realmId 限定;来源应用头标明 Android 客户端。
- 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"}}}]} } } } } }列出客户
GET
/v1/books/{companyId}/parties/customersopendata搜索客户目录,返回未结应收余额、邮箱、电话与账单地址,供客户界面使用。
认证方式: Intuit 身份登录下发的 OAuth 2 Bearer(Authorization 请求头)。公司范围由 realmId 限定;来源应用头标明 Android 客户端。
- 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"}} }] } } }列出供应商
GET
/v1/books/{companyId}/parties/vendorsopendata分页拉取账单与费用所用的供应商联系人,含支票打印名与启用中的供应商档案。
认证方式: Intuit 身份登录下发的 OAuth 2 Bearer(Authorization 请求头)。公司范围由 realmId 限定;来源应用头标明 Android 客户端。
- 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}} } }] } } } }损益合计
GET
/v1/books/{companyId}/pnlopendata返回期间损益合计及与上期对比——利润表首页卡片上的数字。
认证方式: Intuit 身份登录下发的 OAuth 2 Bearer(Authorization 请求头)。公司范围由 realmId 限定;来源应用头标明 Android 客户端。
- 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}}}} } } }现金流摘要
GET
/v1/books/{companyId}/cash-planopenfinance返回现金流小组件与 12 个月预测所用的资金流入、流出与期末现金余额。
认证方式: Intuit 身份登录下发的 OAuth 2 Bearer(Authorization 请求头)。公司范围由 realmId 限定;来源应用头标明 Android 客户端。
- 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"} ] } } }银行回单账户余额
GET
/v1/books/{companyId}/bank-linksopenbanking读取科目表中的银行/信用卡科目,以及网上银行(OLB)回单余额与资金进出,供银行首页使用。
认证方式: Intuit 身份登录下发的 OAuth 2 Bearer(Authorization 请求头)。公司范围由 realmId 限定;来源应用头标明 Android 客户端。
- 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} }]} } }]} }] } } } }按类别的费用合计
GET
/v1/books/{companyId}/costs/by-categoryopendata按类别拆分费用并与上期对比,供费用分析卡片使用。
认证方式: Intuit 身份登录下发的 OAuth 2 Bearer(Authorization 请求头)。公司范围由 realmId 限定;来源应用头标明 Android 客户端。
- 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"}} } } ] } }
数据类别
- 发票
- 客户
- 供应商
- 收款
- 科目表
- 银行回单
- 现金流
- 损益
- 费用
- 销售收据
数据使用场景与案例
应收催收看板
催收机器人分页拉取 GetInvoices 中 Open 单据,读取 receivable.balance 与 dueDate,并对照 InvoiceTotals 的 overdueTotalAmount 做账龄,店主无需导出表格即可看到谁逾期。
银行回单对账
夜间任务把 olbAccounts.bankBalance、totalMoneyIn/totalMoneyOut 与银行科目账面 CurrentBalance 对比,并在店主打开银行首页前标出 transactionCount 异常。
客户授信核验
B2B 授信界面在放账前查询 DisplayName、companyName 与 Customer.balance.totalAmount(以及 PrimaryEmailAddr),字段与发票表单上的客户卡片一致。
现金与账面对照
FP&A 工具把 GetCashflowSummary 的 moneyIn、moneyOut、endingBalance 与 ProfitAndLoss 的收入/费用/利润 value 画在同一公司账套上。
常见问题
QuickBooks 安卓端除了 PDF,能读出发票余额吗?
可以。GetInvoices 返回每张销售单据的 referenceNumber、amount、receivable.balance 与 dueDate;InvoiceTotals 补充 openTotalAmount 与 overdueTotalCount;v3 query 则给出发票列表所用的 Balance、DocNumber、DueDate。
能读到已连接银行账户的余额吗?
accountsSummary 的 GraphQL 文档在每个银行/信用卡账面科目下嵌套 olbAccounts,含 bankBalance、totalMoneyIn、totalMoneyOut 与 transactionCount,正是银行首页刷新回单后展示的数字。
应用如何鉴权公司级调用?
Intuit 身份登录后,客户端携带 OAuth 2 Bearer(AuthInterceptor 写入 Authorization),用 realmId 限定公司,并在 QBO v3 REST 与 v4 GraphQL 上发送 X-Intuit-Originating-App: QBO_ANDROID。
这是 Intuit 对外的开发者 API 吗?
路径与 QuickBooks Online 的公司 v3 REST、v4 GraphQL 一致,但它们是安卓客户端登录后的第一方调用,而不是另行开通的开发者应用。令牌应视为已登录用户的公司会话。
相关主题
- QuickBooks Online API
- QuickBooks 发票 Balance
- QuickBooks 客户 DisplayName
- QuickBooks 银行回单 bankBalance
- QuickBooks 损益
- QuickBooks 现金流 moneyIn
- Intuit QBO GraphQL
- QuickBooks v3 query
需要集成这个 App 的数据 API?
我们可为任意指定 App 交付定制集成——源码交付 USD 500 起,或托管 API 按调用计费。告诉我们您需要的数据即可。
- 每个项目均签 NDA 与 SOW
- 3–7 天交付
- 验收通过后才付款
- 仅在授权范围内作业