Skip to main content

ACF Connector Specification — QuickBooks Online

1. Purpose​

This specification defines how the ZAYAZ Accounting Connectivity Framework (ACF) integrates with Intuit QuickBooks Online (QBO).

QuickBooks Online is treated as a cloud accounting source platform.

The preferred ZAYAZ integration uses:

  • the QuickBooks Online Accounting API for authoritative accounting records;
  • OAuth 2.0 authorization for customer access;
  • realmId for source-company identity;
  • CloudEvents webhooks for near-real-time change detection;
  • Change Data Capture (CDC) for incremental consistency and recovery;
  • periodic source reconciliation;
  • SyncToken and source metadata for revision awareness;
  • Attachable objects for accounting evidence; and
  • TrustGate for end-to-end provenance.

QuickBooks Desktop is intentionally outside this primary connector specification.

Its qbXML and QuickBooks Web Connector architecture should be treated as a separate compatibility profile if ZAYAZ later chooses to support it.


2. Why QuickBooks matters to ACF​

QuickBooks Online represents a very different end of the accounting market from SAP.

A QuickBooks company may have:

  • a relatively simple chart of accounts;
  • vendors;
  • customers;
  • bills;
  • purchases;
  • invoices;
  • items;
  • classes;
  • departments;
  • attachments; and
  • financial reports.

It may not have:

  • plants;
  • WBS structures;
  • sophisticated warehouses;
  • production orders;
  • material documents; or
  • enterprise procurement hierarchies.

The ACF architecture must work equally well for both.

That makes QuickBooks an important validation of the abstraction.


3. Source identity​

QuickBooks Online identifies a connected accounting company using:

realmId

The source namespace is therefore:

Intuit application
↓
Environment
↓
realmId
↓
Entity type
↓
Entity ID

The realmId must be mapped to:

ZAYAZ organization
+
E-C-O Number

before accounting data enters governed processing.


4. realmId​

realmId is returned during the Intuit OAuth authorization flow.

It identifies the QuickBooks Online company to which the customer has granted access.

It is also used in API URLs.

For example:

/v3/company/{realmId}/...

The displayed company name must never replace realmId as the source identity.


5. Sandbox and production​

QuickBooks provides separate sandbox and production environments.

Their API hosts are different:

Sandbox
sandbox-quickbooks.api.intuit.com

Production
quickbooks.api.intuit.com

Credentials and authorizations are environment-specific.

A sandbox realm and production realm are separate source contexts.


6. OAuth 2.0​

QuickBooks Online uses OAuth 2.0 authorization.

The flow is:

ZAYAZ
↓
Intuit authorization
↓
customer authentication
↓
company authorization
↓
authorization code + realmId
↓
token exchange
↓
access token + refresh token

ZAYAZ never receives the customer's QuickBooks password.


7. Accounting scope​

The standard QuickBooks Online Accounting API authorization scope is:

com.intuit.quickbooks.accounting

The connector should request only scopes that are needed for the approved ZAYAZ integration.

Additional Intuit products or APIs should not automatically be included.


8. Access tokens​

QuickBooks access tokens are short-lived.

The documented access-token lifetime is approximately:

3600 seconds

or one hour.

API Hub must therefore refresh them as part of normal connector operation.

Token expiration is not an exceptional condition.


9. Refresh tokens​

Refresh tokens allow ZAYAZ to obtain new access tokens without repeatedly asking the customer to authorize the application.

ZAYAZ must always persist the latest refresh token returned by Intuit.

The token relationship is:

realmId
+
access token
+
refresh token

The tokens must not become detached from their associated realm.


10. Refresh-token rotation​

A refresh operation may return a new refresh token.

Therefore:

old refresh token
↓
refresh operation
↓
new access token
+
latest refresh token

must be persisted atomically.

Using stale token state can break a previously healthy customer connection.


11. Refresh-token lifetime​

QuickBooks historically used a rolling refresh-token model in which continued use within the relevant rolling period could maintain the connection.

Intuit has added an absolute maximum lifetime.

The ACF token model should therefore understand both:

rolling token-use requirement
+
absolute maximum token lifetime

rather than assuming a QuickBooks connection can remain authorized forever.


12. Five-year maximum authorization lifetime​

Intuit now applies a maximum five-year lifetime to refresh tokens.

For the standard QuickBooks Accounting API scope, the earliest affected tokens are expected to reach that maximum beginning in October 2028.

This makes reconnection a permanent operational requirement.


13. Reconnect workflow​

The connector must implement:

token expiry approaching
↓
customer notification
↓
ZAYAZ reconnect URL
↓
Intuit authorization
↓
new authorization
↓
same realm revalidated

The reconnection process must preserve historical connector identity and TrustGate lineage rather than create an unrelated new source.


14. No service-account assumption​

The standard QuickBooks Online Accounting API uses customer OAuth authorization.

ACF must not design QuickBooks as though it supports the Fortnox-style:

service account
+
client credentials

production model.

This distinction belongs in the connector capability profile.


15. Company capability profile​

Each connected realm produces:

ACF-QUICKBOOKS-CUSTOMER-PROFILE

The profile records:

  • realm ID;
  • environment;
  • company information;
  • country/locale;
  • home currency;
  • multicurrency configuration;
  • tax configuration;
  • available features;
  • purchase-order capability;
  • inventory capability;
  • classes;
  • departments;
  • available API entities;
  • webhook coverage;
  • CDC coverage;
  • API minor version; and
  • canonical mappings.

16. API capability is not product capability​

The QuickBooks API documentation may expose an entity such as:

PurchaseOrder

while the connected QuickBooks company does not have the required feature.

Therefore:

API entity exists

does not equal:

customer capability exists

ACF must resolve both.


17. Plan- and configuration-dependent capabilities​

Capabilities such as:

  • purchase orders;
  • inventory;
  • classes;
  • departments/locations;
  • multicurrency; and
  • selected other accounting features

can depend on QuickBooks product edition or customer configuration.

These must be part of connector discovery.


18. Accounting API​

The QuickBooks Online Accounting API is the authoritative source interface.

The API family is versioned under:

v3

and business entities are normally addressed under:

/v3/company/{realmId}/...

19. Minor versions​

QuickBooks also evolves its Accounting API through:

minorversion

The connector must therefore distinguish:

ACF connector version

from:

QuickBooks API generation

and:

QuickBooks minor version

All three are separate governance concepts.


20. API contract tracking​

The customer profile should record the minor version used in production.

A provider API update can then trigger:

minor-version change
↓
mapping review
↓
compatibility validation
↓
production acceptance

rather than silently changing source behavior.


21. Source object identity​

Most QuickBooks entities expose:

Id

as their source identity.

This value must be retained.

For example:

realmId
+
Vendor
+
Id

forms a source object identity.


22. SyncToken​

QuickBooks objects also expose:

SyncToken

to support concurrency control and updates.

For ACF it is additionally useful as source-revision information.

Thus:

Id

answers:

Which source object is this?

while:

SyncToken

helps answer:

Which revision/state of that source object did ZAYAZ process?


23. Source metadata​

QuickBooks entities can also expose metadata such as:

MetaData.CreateTime
MetaData.LastUpdatedTime

where applicable.

ACF should preserve these independently from:

ZAYAZ retrieval time

because source mutation time and ingestion time are different facts.


24. Source revision model​

QuickBooks therefore gives us a useful three-part source model:

SOURCE IDENTITY
Id

SOURCE REVISION
SyncToken

SOURCE MODIFICATION
MetaData.LastUpdatedTime

This should become a reusable ACF source-version pattern.


25. Query API​

QuickBooks provides a query interface for retrieving entity populations.

The query language resembles SQL, but it is not general-purpose SQL.

ACF must respect its limitations.


26. Query-language limitations​

QuickBooks query behavior has important restrictions.

For example, it does not provide generic support for:

  • arbitrary joins;
  • GROUP BY;
  • normal projections; or
  • arbitrary OR behavior comparable with SQL.

This means API Hub cannot push all canonical joining into QuickBooks.

Some joins must occur in the governed ACF canonical layer.


27. Query pagination​

A QuickBooks query can use:

STARTPOSITION
MAXRESULTS

The default result population is smaller than the maximum.

The connector must explicitly paginate.

No collection response may be assumed complete simply because the API request succeeded.


28. Maximum query result page​

QuickBooks queries can return up to approximately:

1000 entities

per response.

Larger populations must be retrieved in chunks.

This makes source pagination a mandatory connector function.


29. Stable retrieval​

The connector should avoid relying on source ordering assumptions.

For incremental processing, use:

  • CDC;
  • source modification metadata where appropriate;
  • transaction dates where appropriate; and
  • deterministic local identity processing.

The entity Id should not be treated as a universal chronological ordering key.


30. Change Data Capture​

QuickBooks provides a dedicated Change Data Capture operation.

CDC returns objects that have changed since a supplied timestamp.

The conceptual request is:

realm
+
entity list
+
changedSince

and the response contains matching changed source objects.


31. CDC is different from a webhook​

A webhook says:

Something changed.

CDC says:

Give me source objects that changed since this point in time.

These are separate synchronization capabilities.


32. CDC lookback​

QuickBooks CDC supports a maximum lookback of:

30 days

This creates a bounded recovery window.

ZAYAZ must track its CDC watermark.


33. Daily CDC​

A strong production pattern is:

Webhooks
↓
near-real-time freshness

CDC
↓
daily consistency

Periodic reconciliation
↓
completeness assurance

Intuit itself recommends using CDC to recover from missed webhook activity.


34. CDC recovery risk​

If the last reliable synchronization is more than 30 days old:

CDC alone

is no longer sufficient for complete recovery.

The connector must perform:

authoritative entity queries
or
full reconciliation

depending on the affected source domains.


35. CloudEvents webhooks​

QuickBooks has moved its webhook infrastructure to the CloudEvents 1.0 format.

New ZAYAZ development should implement this format directly.

Legacy webhook payload compatibility should not define the production connector.


36. CloudEvent structure​

A QuickBooks event can include fields such as:

specversion
id
source
type
time
intuitentityid
intuitaccountid

The event type can encode entity and operation semantics, for example:

qbo.customer.created.v1

37. intuitaccountid​

In the CloudEvents format:

intuitaccountid

identifies the QuickBooks company.

This corresponds to the realm/company context required by ACF.

The event must therefore resolve:

intuitaccountid
↓
ACF-QUICKBOOKS-CUSTOMER-PROFILE
↓
ZAYAZ organization
↓
E-C-O Number

before processing.


38. intuitentityid​

The CloudEvent also provides:

intuitentityid

for the changed business object.

The event can therefore trigger:

realm
+
entity type
+
entity ID
↓
Accounting API reread

39. Webhook signature validation​

QuickBooks webhook requests must be authenticated.

ZAYAZ should validate:

intuit-signature

using the configured webhook verifier token and the unmodified raw request payload.

The signature validation occurs before semantic processing.


40. Durable event processing​

The correct processing pattern is:

CloudEvent
↓
signature validation
↓
realm resolution
↓
durable queue
↓
idempotency check
↓
authoritative API reread
↓
canonical processing

Complex processing should not occur in the HTTP receiver.


41. Webhooks do not establish completeness​

Webhook delivery must never become the only source synchronization mechanism.

The full production architecture uses:

webhooks
+
CDC
+
reconciliation

This is now a recurring ACF pattern across several providers.


42. Event lineage​

TrustGate should preserve:

CloudEvent ID
+
event type
+
event time
+
realm
+
entity ID

followed by:

authoritative source reread

This explains both:

Why did ZAYAZ refresh this object?

and:

What actual source state did ZAYAZ process?


43. Batch API​

QuickBooks provides a batch operation endpoint.

A batch can combine multiple operations into one HTTP request.

This can reduce network overhead.


44. Batch isolation​

Each operation inside a batch must remain independently identifiable.

Conceptually:

Batch
├── operation A
├── operation B
├── operation C
└── operation D

ACF must not collapse them into one opaque source event.


45. Rate limiting​

QuickBooks applies API limits per realmId.

The current recommended production limits include controls around:

  • concurrent requests;
  • requests per minute;
  • batch requests; and
  • payloads per batch.

API Hub should maintain independent rate budgets for each realm.


46. Realm-scoped throttling​

The architecture becomes:

Realm A
↓
API budget A

Realm B
↓
API budget B

Realm C
↓
API budget C

A heavy synchronization for one QuickBooks company should not unnecessarily block another company's processing.


47. Adaptive throttling​

API Hub should treat:

HTTP 429

as a normal operational capacity signal.

The response is:

reduce request rate
+
backoff
+
jitter
+
retry safely

not:

mark accounting data invalid

48. Accounts​

QuickBooks Account objects provide the chart of accounts.

They can carry information such as:

  • account name;
  • account type;
  • account subtype;
  • active state; and
  • source identity.

This provides the first ESG classification layer.


49. Account classification​

A QuickBooks account such as:

Utilities
Travel
Fuel
Office Supplies
Professional Services

is useful.

But account names are customer-defined.

Therefore:

account

is a source signal rather than an ESG taxonomy.


50. Vendors​

QuickBooks Vendor objects provide supplier identity.

They can support:

  • supplier spend;
  • supplier segmentation;
  • country enrichment;
  • Scope 3 screening;
  • supplier questionnaires;
  • CSDDD workflows;
  • supplier-specific evidence requests; and
  • factor resolution.

51. Vendor identity is not ESG evidence​

This distinction remains critical:

Vendor = Supplier A

does not establish:

Supplier A product footprint = X

The first is accounting identity.

The second requires sustainability evidence.


52. Bills​

Bills represent accounts-payable transactions associated with vendors.

They are particularly useful for ACF because they combine:

  • vendor;
  • financial amount;
  • date;
  • currency;
  • accounts; and
  • itemized lines where used.

This can provide a significant upgrade over account-only screening.


53. Bill lines​

QuickBooks expense transactions can contain different line semantics.

For example:

AccountBasedExpenseLineDetail

or:

ItemBasedExpenseLineDetail

This distinction should be preserved.


54. Account-based expense lines​

An account-based line may provide:

expense account
+
amount
+
description

This is useful for spend classification.

It normally remains DQ1 or DQ2.


55. Item-based expense lines​

An item-based line may provide:

ItemRef
Qty
UnitPrice
Amount

This is significantly more interesting for ESG.

But Qty remains only an activity candidate until its semantics are resolved.


56. Purchases​

The QuickBooks Purchase entity can represent expenses paid through mechanisms such as:

  • bank;
  • cash; or
  • credit card.

It can contain account-based or item-based expenditure lines.

This makes Purchase important for companies that do not enter every expense first as a Bill.


57. Purchases versus Bills​

The connector should not assume:

all procurement = Bill

A QuickBooks company may use:

Bills
Purchases
Credit card expenses
Checks

depending on accounting workflow.

ACF should normalize their economic meaning without losing the source transaction type.


58. Purchase orders​

QuickBooks exposes PurchaseOrder through the Accounting API.

Purchase-order lines can include:

Vendor
Item
Qty
UnitPrice
Amount

This can provide useful procurement context.


59. Purchase-order capability is conditional​

The presence of a PurchaseOrder API entity does not mean every QuickBooks customer has purchase orders enabled.

QuickBooks currently associates purchase-order functionality with particular subscription levels/features.

Therefore capability must be discovered per realm.


60. Items​

QuickBooks Items represent products and services a company buys or sells.

Relevant item types include concepts such as:

Inventory
NonInventory
Service

This distinction is highly useful for ACF.


61. Inventory Items​

An inventory item may contain:

  • income account;
  • expense account;
  • asset account;
  • quantity on hand;
  • inventory start date; and
  • tracking configuration.

This gives ACF more operational information than pure G/L accounts.


62. Services​

A service item may represent:

  • consulting;
  • installation;
  • professional services;
  • maintenance; or
  • another non-physical commercial activity.

A quantity of:

1 service item

must not be converted into physical environmental activity.


63. Non-inventory items​

Non-inventory items can still represent physical goods.

The fact that QuickBooks does not track them as inventory does not mean the underlying business object is non-physical.

Semantic mapping is required.


64. Quantity semantics​

Suppose a Bill line says:

Item: Diesel
Qty: 1,500

ZAYAZ cannot yet calculate fuel emissions.

It still needs to establish:

1,500 litres?
1,500 gallons?
1,500 units?

The source quantity is only part of the activity.


65. Semantic Activity Resolution​

QuickBooks reinforces the common ACF resolver:

SOURCE ENTITY
↓
LINE TYPE
↓
ITEM
↓
QUANTITY
↓
UNIT SEMANTICS
↓
ACTIVITY TYPE
↓
METHOD COMPATIBILITY
↓
FACTOR ELIGIBILITY

Only after this resolution may quantity become DQ3 activity data.


66. Example — useful item quantity​

Suppose QuickBooks contains:

Vendor: Fuel Supplier
Item: Diesel Fuel
Qty: 1,500
Description: litres

and the semantic mapping is validated.

ACF may resolve:

1,500 litres diesel
↓
fuel combustion method
↓
appropriate factor
↓
MICE
↓
tCO2e

That can supersede a spend estimate.


67. Example — unsafe interpretation​

Suppose QuickBooks instead contains:

Item: Fuel
Qty: 1
Amount: EUR 2,500

The connector must not infer:

1 litre

or:

2,500 litres

The physical quantity remains unresolved.


68. Classes​

QuickBooks Classes allow businesses to segment transactions or transaction lines.

Examples might include:

  • operating division;
  • service line;
  • project type;
  • geography; or
  • another internal business segment.

Their meaning is customer-defined.


69. Class mapping​

A mapping might be:

QuickBooks Class
"Northern Region"
↓
ZAYAZ semantic map
↓
Operating region

But ACF must not automatically interpret it as:

physical facility

or:

legal entity

without validation.


70. Departments​

QuickBooks Department entities can also represent organizational or location-style segmentation.

Potential ESG uses include:

  • business-unit allocation;
  • location allocation;
  • department footprinting; and
  • internal reporting.

Again, the customer-specific meaning must be established.


71. QuickBooks dimensions versus ACF dimensions​

QuickBooks Classes and Departments should map into a generic canonical dimensional model:

source dimension
↓
source value
↓
semantic mapping
↓
canonical ZAYAZ dimension

This pattern should be shared with:

  • SAP cost centers/plants;
  • Business Central dimensions;
  • e-conomic dimensions;
  • NetSuite departments/classes/locations; and
  • other ACF connectors.

72. Currency​

QuickBooks supports accounting currency information and, where configured, multicurrency.

ACF preserves:

source amount
transaction currency
exchange rate
home currency

where available.

Any ZAYAZ factor-currency conversion is a separate transformation.


73. Currency normalization​

For example:

QBO source:
NOK 100,000

ZAYAZ method:
EUR-normalized spend

Conversion:
NOK → EUR
using governed FX source

Factor:
kgCO2e / EUR

The original NOK amount remains immutable source evidence.


74. Tax​

QuickBooks tax behavior can vary by country and company configuration.

ACF must therefore avoid designing one universal tax interpretation for every realm.

Tax metadata can support:

  • net/gross normalization;
  • source validation;
  • transaction interpretation; and
  • reconciliation.

Tax is not an emissions methodology.


75. International differences​

QuickBooks Online is used in multiple markets.

Provider behavior and business fields may differ by:

  • country;
  • tax regime;
  • product availability;
  • company configuration; and
  • API capability.

The customer connector profile must therefore preserve country or locale context.


76. Attachables​

QuickBooks provides an Attachable entity.

An attachment can contain:

  • a file;
  • a note; or
  • file metadata.

Attachments can be linked to supported QuickBooks entities through an AttachableRef.


77. Attachments as evidence​

This allows:

ESG result
↓
MICE execution
↓
classified QuickBooks transaction
↓
Bill / Purchase / other source object
↓
AttachableRef
↓
invoice / receipt / document

This can become a strong auditor-readable evidence chain.


78. Attachments as enrichment​

A QuickBooks Bill may contain:

Vendor: Utility Company
Amount: EUR 4,500

while an attached PDF could contain:

Consumption: 12,350 kWh
Meter: ABC-123
Period: January

The accounting transaction can therefore serve as a locator for higher-quality environmental evidence.


79. Reports​

QuickBooks provides financial reports through its API.

These can be useful for:

  • profit-and-loss reconciliation;
  • balance-sheet reconciliation;
  • trial-balance checks;
  • management totals; and
  • reasonableness tests.

Reports should normally support reconciliation rather than replace transaction-level ESG lineage.


80. Financial reconciliation​

A useful pattern is:

transaction-level ACF ingestion
↓
canonical totals
↓
QuickBooks report
↓
reconciliation

A mismatch can trigger DaVE.


81. ESG processing model​

The source-to-result chain is:

QuickBooks
↓
realm registration
↓
source entity
↓
canonical mapping
↓
normalization
↓
classification
↓
activity resolution
↓
method selection
↓
factor resolution
↓
MICE
↓
TrustGate
↓
governed ESG result

82. Spend-based emissions​

QuickBooks is particularly strong for SMB spend screening.

A calculation can combine:

Account
+
Vendor
+
Bill
+
Bill line
+
Item
+
Class
+
Department
↓
classification
↓
spend category
↓
currency normalization
↓
factor
↓
tCO2e

83. Accounting hierarchy of evidence​

A useful QuickBooks evidence ladder is:

Account
↓
Purchase / Bill
↓
Vendor
↓
Itemized line
↓
Item
↓
Quantity
↓
Attachment
↓
External primary evidence

Each layer can strengthen interpretation.


84. Data-quality hierarchy​

ACF-DQ1 — Accounting-only estimate​

Typical source:

Account
Vendor
Amount

Suitable for:

  • screening;
  • materiality;
  • spend-based estimation.

ACF-DQ2 — Invoice/transaction-level data​

Typical source:

Bill
Purchase
Vendor
Itemized line
Item
Attachment

This usually improves classification.


ACF-DQ3 — Activity data​

A valid physical quantity and unit have been established.

The activity may originate from:

  • itemized transaction data;
  • attached invoice;
  • external operational data; or
  • other validated source evidence.

ACF-DQ4 — Supplier/item-specific data​

The environmental information relates to the actual:

  • supplier;
  • item;
  • product;
  • service; or
  • contractual relationship.

ACF-DQ5 — Verified primary data​

The primary evidence has undergone the required verification or assurance.


85. Progressive quality upgrade​

A QuickBooks calculation might evolve:

DQ1
EUR 20,000 fuel spend
↓
DQ2
Supplier bill + item
↓
DQ3
6,250 litres diesel
↓
DQ4
supplier-specific fuel data
↓
DQ5
verified primary evidence

Each prior result remains available in lineage.


86. Scope 1​

QuickBooks can identify candidate Scope 1 transactions such as:

  • fuel expenditure;
  • vehicle expenses;
  • heating fuel;
  • generator fuel; and
  • other combustion-related purchases.

But accounting transactions alone do not establish complete Scope 1 emissions.


87. Scope 2​

QuickBooks can identify:

  • electricity suppliers;
  • utility expenditure;
  • utility invoices;
  • relevant locations through mapped dimensions; and
  • attached invoices.

Actual kWh, tariff attributes and contractual instruments may require additional evidence.


88. Scope 3​

QuickBooks is well suited to initial Scope 3 screening.

Useful inputs include:

  • vendor;
  • account;
  • bill;
  • purchase;
  • item;
  • transaction amount;
  • class; and
  • department.

The method may later upgrade from spend-based to physical or supplier-specific data.


89. PEF/LCA limitations​

QuickBooks has items and quantities, but it is not generally a manufacturing ERP.

It therefore lacks the universal expectation of:

  • production orders;
  • bills of material;
  • goods movements;
  • detailed material consumption; and
  • plant-specific manufacturing activity.

PEF/LCA support is possible but should be classified as conditional.


90. SMB strength​

This limitation is also a strength of the connector architecture.

ACF must still produce trustworthy results when the source company only provides:

Vendor
Bill
Expense account
Item
Amount

The common ACF architecture cannot require SAP-level source richness.


91. Source authority progression​

For an SMB company, the authority path may therefore be:

Accounting amount
↓
Transaction
↓
Vendor
↓
Item
↓
Attachment
↓
External activity
↓
Supplier evidence

ZAYAZ progressively improves the result instead of rejecting the accounting system for being simple.


92. Historical source changes​

QuickBooks source entities can change after initial ingestion.

ACF can detect this through:

  • CloudEvents;
  • CDC;
  • SyncToken;
  • MetaData.LastUpdatedTime; and
  • reconciliation.

A material historical mutation triggers revalidation.


93. Historical mutation workflow​

QuickBooks change
↓
CloudEvent / CDC
↓
new source revision
↓
DaVE
↓
TrustGate lineage event
↓
affected ESG result
↓
revalidation
↓
recalculation if required

The prior ESG result remains immutable historical evidence.


94. Voids and deletions​

QuickBooks supports transaction lifecycle operations including deletion and, for some transaction types, voiding.

ACF must distinguish:

source transaction originally existed

from:

source transaction is no longer active/current

The former must not disappear from audit lineage.


95. SyncToken and audit challenge​

Suppose an auditor asks:

Why did this calculation change?

ZAYAZ should be able to answer:

QuickBooks Bill ID 245
SyncToken 2
↓
was previously
SyncToken 1
↓
source amount or classification changed
↓
calculation revalidated

This is more useful than merely saying:

QuickBooks was updated.


96. ZARA behavior​

ZARA should be able to explain:

  • which realm supplied the value;
  • which QuickBooks entity was used;
  • which source revision was processed;
  • whether the transaction was a Bill, Purchase or Journal Entry;
  • which vendor was involved;
  • which item was involved;
  • whether quantity qualified as physical activity;
  • whether an attachment supplied additional evidence;
  • whether the calculation came from DQ1, DQ2, DQ3, DQ4 or DQ5;
  • why an estimate was upgraded; and
  • why a calculation changed.

97. ZARA source distinction​

ZARA must distinguish:

QuickBooks-native source value

QuickBooks source revision metadata

ZAYAZ canonical mapping

ZAYAZ classification

ZAYAZ activity resolution

ZAYAZ calculation

external enrichment

These are not interchangeable evidence classes.


98. FOGE behavior​

FOGE can use validated QuickBooks data for reporting prepopulation.

For example:

Bill
↓
Vendor + item
↓
classification
↓
approved method
↓
MICE
↓
reporting requirement
↓
FOGE

If the reporting requirement needs evidence that QuickBooks does not provide, FOGE requests additional information.


99. COSE behavior​

COSE compares QuickBooks evidence with required calculation evidence.

Example:

Requirement:
diesel litres consumed

QuickBooks:
EUR 5,000 fuel purchase

Result:
physical activity missing

If an attached invoice provides:

1,420 litres

and the evidence is validated, the quality state may be upgraded.


100. DaVE behavior​

DaVE monitors:

  • OAuth health;
  • token rotation;
  • absolute token expiry;
  • customer reconnection;
  • API throttling;
  • CloudEvent signatures;
  • unknown event types;
  • CDC continuity;
  • CDC lookback risk;
  • source revision changes;
  • plan/feature changes;
  • entity mapping;
  • vendor resolution;
  • item semantics;
  • dimension semantics;
  • attachment relationships; and
  • reconciliation.

101. TrustGate behavior​

TrustGate preserves:

QuickBooks realm
↓
source entity
↓
source ID + revision
↓
CloudEvent / CDC reason
↓
canonical mapping
↓
classification
↓
activity resolution
↓
calculation
↓
reporting
↓
verification

102. MICE behavior​

MICE receives governed inputs including:

  • realm;
  • entity type;
  • entity ID;
  • source revision;
  • vendor;
  • item;
  • quantity;
  • activity unit;
  • amount;
  • currency;
  • class/department context;
  • classification;
  • method;
  • factor;
  • factor vintage;
  • reporting period; and
  • data-quality tier.

The source must be reproducible.


103. API Hub behavior​

API Hub owns QuickBooks-specific connectivity.

It manages:

  • OAuth;
  • refresh-token rotation;
  • reconnection;
  • realm routing;
  • rate budgets;
  • Accounting API calls;
  • queries;
  • pagination;
  • batches;
  • CloudEvents;
  • webhook signature verification;
  • CDC;
  • authoritative rereads; and
  • reconciliation.

Downstream systems should not implement Intuit-specific transport logic.


104. Accounting-partner model​

QuickBooks is particularly relevant to accounting-firm distribution.

An accounting partner may help many clients connect:

Accounting firm
│
├── QBO Realm A
├── QBO Realm B
├── QBO Realm C
└── QBO Realm D
│
▼
ACF
│
separate ZAYAZ contexts

Each QuickBooks company remains separately authorized and governed.


105. Realm isolation​

The accounting firm is not the source-company boundary.

Each realm maps separately:

Realm A → Organization A → E-C-O A
Realm B → Organization B → E-C-O B
Realm C → Organization C → E-C-O C

Cross-client source leakage must be technically impossible.


106. Continuous sustainability bookkeeping​

QuickBooks can support continuous ESG bookkeeping through:

QuickBooks transaction
↓
CloudEvent
↓
authoritative reread
↓
classification
↓
calculation / evidence gap
↓
daily CDC
↓
continuous ESG ledger

This is especially valuable for SMBs that otherwise perform ESG work only annually.


107. Data minimization​

The connector should retrieve only what is required for the governed sustainability purpose.

For example:

Vendor
Bill
Item
Amount
Currency
Class

does not justify retrieving unrelated:

customer contact information
employee personal data
all attachments
tax identifiers

unless they are specifically required.


                     INTUIT
│
OAuth 2.0
│
▼
QUICKBOOKS ONLINE
│
┌────────────┼────────────┐
│ │ │
Accounting CloudEvents CDC
API │ │
│ │ │
└────────────┼────────────┘
▼
ZAYAZ API HUB
│
realm capability
profile
│
▼
TRUSTGATE
│
▼
ACF
┌────────────┼────────────┐
│ │ │
normalize validate classify
│ │ │
└────────────┼────────────┘
▼
CANONICAL DATA MODEL
│
┌────────────┼────────────┐
▼ ▼ ▼
MICE FOGE ZARA
│
▼
GOVERNED ESG DATA

Periodic reconciliation operates alongside CDC and webhook processing.


109. Quick-start implementation​

A controlled pilot should:

  1. create an Intuit Developer application;
  2. create or select a QuickBooks sandbox company;
  3. configure OAuth redirect URIs;
  4. authorize the accounting scope;
  5. capture the realmId;
  6. obtain OAuth tokens;
  7. register secure token storage;
  8. retrieve CompanyInfo;
  9. generate the customer connector profile;
  10. retrieve Accounts;
  11. retrieve Vendors;
  12. retrieve Bills and Purchases;
  13. retrieve Items;
  14. inspect Classes and Departments where configured;
  15. test query pagination;
  16. test source revision tracking;
  17. test CDC;
  18. configure CloudEvents webhooks;
  19. validate webhook signatures;
  20. test authoritative entity rereads;
  21. test Attachable evidence;
  22. perform initial ESG screening;
  23. run reconciliation; and
  24. validate TrustGate lineage.

110. Production implementation​

Production should add:

  • production Intuit credentials;
  • production OAuth redirect;
  • customer authorization;
  • realm mapping;
  • token rotation;
  • absolute token-expiry monitoring;
  • reconnect URL;
  • feature-capability profiling;
  • production CloudEvents;
  • HMAC signature validation;
  • durable event queue;
  • daily CDC;
  • CDC recovery monitoring;
  • API throttling;
  • reconciliation;
  • source revision monitoring;
  • attachment evidence;
  • TrustGate registration;
  • DaVE monitoring; and
  • governed recalculation.

111. Hybrid ESG implementation​

The strongest SMB sustainability result may combine:

QuickBooks
│
├── Vendor
├── Bill
├── Item
├── Amount
└── Qty
+
Attachment
+
Supplier portal
+
Meter data
+
Travel / logistics data
+
Approved factor
↓
Governed ESG result

QuickBooks remains the accounting backbone.

ZAYAZ orchestrates evidence quality.


112. Limitations​

112.1 QuickBooks Online is not a manufacturing ERP​

Detailed physical material flows may not exist.

112.2 API entity availability does not guarantee customer feature availability​

Plan and configuration must be discovered.

112.3 OAuth authorization requires lifecycle management​

Connections cannot be treated as permanently authorized.

112.4 Refresh tokens have an absolute maximum lifetime​

Customer reconnection must be supported.

112.5 Webhooks are not authoritative source state​

The source entity must be reread.

112.6 CDC has a finite recovery horizon​

Recovery beyond 30 days requires broader reconciliation.

112.7 Query language is intentionally limited​

ACF must perform some canonical joining itself.

112.8 Quantity does not automatically equal physical activity​

Item and unit semantics must be validated.

112.9 Items are not environmental declarations​

Supplier/product evidence remains distinct.

112.10 Attachments do not automatically prove environmental meaning​

They are evidence objects requiring interpretation.

112.11 QuickBooks data cannot satisfy every sustainability disclosure​

Policies, governance, workforce, due-diligence and narrative requirements require other sources.


113. Connector activation gate​

A production QuickBooks connector should not activate until:

Intuit application                    PASS
Production OAuth PASS
OAuth state validation PASS
realmId PASS
CompanyInfo PASS
ZAYAZ organization mapping PASS
E-C-O Number mapping PASS
Token storage PASS
Token rotation PASS
Reconnect workflow PASS
Customer capability profile PASS
Accounting API profile PASS
Minor-version registration PASS
Canonical mappings PASS
TrustGate registration PASS
Initial synchronization PASS
CDC PASS
Reconciliation PASS
Rate controls PASS
Monitoring PASS

For CloudEvents:

CloudEvents 1.0 consumer              PASS
Verifier token PASS
HMAC signature verification PASS
Realm resolution PASS
Durable queue PASS
Idempotency PASS
Authoritative reread PASS
CDC recovery PASS

must also pass.


114. Definition of done​

The QuickBooks Online connector is production-ready when ZAYAZ can demonstrate that it can:

  1. authorize through Intuit OAuth 2.0;
  2. validate OAuth state;
  3. receive and retain realmId;
  4. map the realm to the correct ZAYAZ organization and E-C-O Number;
  5. distinguish sandbox from production;
  6. securely store client credentials and tokens;
  7. refresh access tokens;
  8. persist the latest refresh token;
  9. monitor rolling token validity;
  10. monitor absolute refresh-token lifetime;
  11. support customer reconnection;
  12. retrieve CompanyInfo;
  13. generate the customer connector profile;
  14. distinguish API entity availability from QuickBooks feature capability;
  15. record the active API minor version;
  16. retrieve Accounts;
  17. retrieve Vendors;
  18. retrieve Bills;
  19. retrieve Purchases;
  20. retrieve PurchaseOrders where available;
  21. retrieve Items;
  22. retrieve JournalEntries;
  23. retrieve Classes where available;
  24. retrieve Departments where available;
  25. retrieve Attachables;
  26. preserve entity IDs;
  27. preserve SyncToken;
  28. preserve source modification metadata;
  29. paginate query results correctly;
  30. respect QuickBooks query-language limitations;
  31. operate within provider rate limits;
  32. batch requests safely where appropriate;
  33. consume CloudEvents 1.0;
  34. validate intuit-signature;
  35. resolve intuitaccountid;
  36. resolve intuitentityid;
  37. process events idempotently;
  38. reread authoritative source entities;
  39. execute CDC;
  40. maintain a CDC watermark;
  41. detect CDC recovery-window risk;
  42. recover from missed webhooks;
  43. reconcile source populations;
  44. detect historical accounting mutations;
  45. preserve voided/deleted source lineage;
  46. map source records into the ZAYAZ canonical model;
  47. normalize currency correctly;
  48. map supplier identities;
  49. map item semantics;
  50. map Classes and Departments;
  51. distinguish financial values from physical activity;
  52. reject unresolved quantity semantics;
  53. promote validated quantities to activity data;
  54. link Attachables through TrustGate;
  55. execute ESG screening without inventing missing activity;
  56. upgrade calculations when higher-quality evidence becomes available;
  57. preserve previous calculations and provenance;
  58. support ZARA, FOGE, MICE, COSE, DaVE and TrustGate;
  59. prevent cross-realm and cross-tenant data leakage; and
  60. reproduce any material ESG result from QuickBooks source to final output.

115. Source references​

This connector specification is based primarily on current Intuit documentation and developer materials covering:

  • QuickBooks Online Accounting API;
  • OAuth 2.0;
  • realmId;
  • OAuth token management;
  • refresh-token lifecycle changes;
  • reconnect workflows;
  • QuickBooks sandbox companies;
  • Accounting API v3;
  • minor versions;
  • query operations;
  • pagination;
  • batch operations;
  • API throttling;
  • Change Data Capture;
  • webhooks;
  • CloudEvents 1.0;
  • webhook signature validation;
  • Accounts;
  • Vendors;
  • Bills;
  • Purchases;
  • Purchase Orders;
  • Items;
  • Classes;
  • Departments;
  • Journal Entries;
  • Attachables; and
  • financial reporting APIs.

The current Intuit API contracts and the connected QuickBooks company's actual feature configuration remain authoritative for implementation.

The ACF customer connector profile must be reviewed or regenerated when material changes affect:

  • OAuth authorization;
  • refresh-token policy;
  • realm authorization;
  • company subscription;
  • company features;
  • country/locale configuration;
  • Accounting API minor versions;
  • source entities;
  • webhook payload contracts;
  • webhook entity coverage;
  • CDC coverage;
  • Items;
  • Classes;
  • Departments;
  • multicurrency;
  • tax configuration; or
  • canonical mappings.




Runtime Provider Extension​

The provider-specific runtime contract for this connector is maintained separately from the common ACF connector frontmatter.

It contains machine-actionable provider semantics that are intentionally not part of the common ACF schema, including authentication lifecycle, provider object revision semantics, change-capture constraints and provider-specific capability rules.

provider-extension.yamlGitHub ↗
schema_id: zayaz.acf.provider-extension.v1
extension_version: 1.0.0
connector_id: ACF-QUICKBOOKS
provider:
namespace: intuit.quickbooks
name: Intuit Inc.
product: QuickBooks Online
runtime:
source_contract:
primary_api: quickbooks_online_accounting_api
api_generation: v3
minor_version_supported: true
source_identity:
company_partition_field: realmId
eco_resolution_required: true
object_revision:
identity_field: Id
revision_field: SyncToken
modified_at_field: MetaData.LastUpdatedTime
change_capture:
webhook:
supported: true
payload_standard: cloudevents_1_0
authoritative_payload: false
authoritative_api_reread_required: true
cdc:
supported: true
maximum_lookback_days: 30
reconciliation:
required: true
capability_rules:
product_plan_and_feature_configuration_material: true
api_entity_presence_is_not_sufficient: true
source_semantics:
organizational_dimensions:
class:
candidate_id_class: EBU
automatic_resolution_allowed: false
department:
candidate_id_class: EBU
automatic_resolution_allowed: false
quantity:
source_field: Qty
activity_status: candidate
requires_unit_resolution: true
requires_business_semantic_resolution: true
evidence:
native_object: Attachable
supports_source_document_relationship: true
extensions:
oauth_lifecycle:
model: authorization_code
access_token_lifetime_seconds: 3600
refresh_rotation_required: true
refresh_rolling_use_window_days: 100
absolute_maximum_lifetime_years: 5
query_language:
sql_compatible: false
batching:
recommended_maximum_operations_per_batch: 10
governance:
status: active
last_verified: 2026-08-30
review_interval_days: 90
change_control_required: true
source_basis: connector_specification
GitHub RepoRequest for Change (RFC)