Intuit Bank Feeds – Gotchas
Intuit Bank Feeds delivers bank-feed accounts and statements into QuickBooks Online through Apideck's FDX data provider, fdx-connect.
6 gotchas across 2 resources
These are connector-specific behaviors and limitations to be aware of when integrating.
Bank Feed Accounts3 gotchas
bankFeedAccountsAllfeed_status reads back as pending for every account in this release — it does not yet reflect
whether QuickBooks has picked the feed up.
bankFeedAccountsAddNo QuickBooks OAuth connection is required or used. intuit-bank-feeds is a separate connector
with its own connection lifecycle, so a bank-feeds-only integration never authenticates to
QuickBooks: connecting quickbooks does nothing for this connector, and this connector needs
nothing from it.
A connection only becomes callable once it reports ready, so a newly created one can briefly stay
in the added state. Re-check it and retry rather than reading added as a failure.
Field handling is stricter than the unified contract: null is rejected rather than ignored, so
omit an optional field instead of sending null for it. feed_status is not returned on this
create response — read the account back to see it.
bankFeedAccountsOnefeed_status reads back as pending for every account in this release — it does not yet reflect
whether QuickBooks has picked the feed up.
Bank Feed Statements3 gotchas
bankFeedStatementsAllList responses carry statement metadata only — transactions is never included, however many
statements the page holds. Fetch a single statement by id to read its transactions.
bankFeedStatementsAddA successful create does not mean QuickBooks has the statement. This connector is pull-based:
the statement is stored on the Apideck side and waits there for Intuit's scheduled pull. That is a
fundamental difference from xero, where a successful push means Xero already holds the data.
Because delivery happens later and out of band, status reads back as pending and does not
advance to success in this release; a status other than pending sent on write is rejected.
Statements are validated on the way in, and a violation is rejected — never silently dropped:
- At most 1000 entries in
transactions. - Every
source_transaction_idmust be unique, both within the statement and against transactions already submitted for the same bank feed. - Transactions must be in chronological order:
posted_datemust be non-decreasing across the array. - Posted transactions only — pending or authorization-hold transactions are not accepted.
descriptionis limited to 255 characters.- Every timestamp needs an explicit timezone offset:
start_date,end_dateand each transaction'sposted_datemust end inZor±hh:mm. A bare local datetime such as2026-01-15T12:00:00is rejected, even though the unifieddate-timeformat permits it. nullis rejected rather than ignored. Omit an optional field instead of sendingnullfor it.
A rejected statement comes back with every violation at once, each naming the rule it broke, so a single round trip shows all of them.
bankFeedStatementsOnetransactions is returned here, unlike the list operation, which carries statement metadata
only. Fetching a statement by id is the only way to read its transactions.
status reads back as pending. See the create operation for why it does not advance to
success in this release.