Skip to main content
GET
List transactions

Authorizations

Authorization
string
header
required

Use your app's API key as the username, and leave the password blank

Headers

Idempotency-Key
string

Makes a retry safe when you never got the answer to a call: a timeout, a dropped connection, a worker that crashed. Send a new key (a UUID, say) with each request you mean to make once, and the same key when you send that request again. A repeat with the key and the same method, path, query and body answers 201 with what the first call created, as it is now, marked Idempotent-Replayed: true, and queues nothing. The same key with a different request is a 422. A key belongs to your app (sandbox and production apps never share one), lasts as long as what it created, and is 1 to 255 printable ASCII characters.

Required string length: 1 - 255
Pattern: ^[\x20-\x7E]+$

Path Parameters

connection_id
string<uuid>
required

The connection (a customer's QuickBooks company file) this request is queued for.

Query Parameters

request_id
string

Your own label for the request, sent to QuickBooks as its qbXML requestID and echoed in the raw answer (response_xml); optional, since the answer's webhook already carries the request's id.

meta_data
enum<string>

Use the meta_data attribute to control whether query responses include counts. Options are NoMetaData (default), MetaDataOnly (count only), and MetaDataAndResponseData (count plus objects). Counts are approximate and may vary slightly if records are created or deleted during processing.

Available options:
MetaDataAndResponseData,
MetaDataOnly,
NoMetaData
iterator
boolean

Page through every match: QuBe Sync asks QuickBooks for each page in turn and sends each to your webhook_url as it arrives, all with the same id. On by default, with pages of 100 records; send iterator=true with max_returned for another size. Off when you send iterator=false (every match in one answer) or max_returned alone (at most that many, in one answer). It pages a filtered query only: with txn_id every match comes back in one answer, so leave iterator out.

currency_filter
ListID · object

Filters by the specified currency.

Choose at most one of: txn_id, or the set (currency_filter, max_returned, ref_number, ref_number_case_sensitive, ref_number_filter, ref_number_range_filter, transaction_account_filter, transaction_class_filter, transaction_date_range_filter, transaction_detail_level_filter, transaction_entity_filter, transaction_item_filter, transaction_modified_date_range_filter, transaction_paid_status_filter, transaction_posting_status_filter, transaction_type_filter). Members of a set combine with each other, not with the other choices.

include_ret_element
enum<string>[]
Available options:
AccountRef,
Amount,
AmountInHomeCurrency,
CurrencyRef,
EntityRef,
ExchangeRate,
Memo,
RefNumber,
TimeCreated,
TimeModified,
TxnDate,
TxnID,
TxnLineID,
TxnType
max_returned
integer

Limits the number of objects that a query returns. (To get a count of how many objects could possibly be returned, use the meta_data query attribute.) If you include a max_returned value, it must be at least 1.

The page size, with iterator=true. Sent without iterator, or with iterator=false, it's a cap instead: at most this many records come back, in one answer, and QuickBooks doesn't say whether more matched.

Choose at most one of: txn_id, or the set (currency_filter, max_returned, ref_number, ref_number_case_sensitive, ref_number_filter, ref_number_range_filter, transaction_account_filter, transaction_class_filter, transaction_date_range_filter, transaction_detail_level_filter, transaction_entity_filter, transaction_item_filter, transaction_modified_date_range_filter, transaction_paid_status_filter, transaction_posting_status_filter, transaction_type_filter). Members of a set combine with each other, not with the other choices.

Required range: x >= 1
ref_number
string[]

ref_number is a user-managed transaction reference (for example, a check number). It can be edited and is not guaranteed to be globally unique. Some transaction types auto-populate ref_number when omitted, based on QuickBooks preferences and numbering state.

Choose at most one of: txn_id, or the set (currency_filter, max_returned, ref_number, ref_number_case_sensitive, ref_number_filter, ref_number_range_filter, transaction_account_filter, transaction_class_filter, transaction_date_range_filter, transaction_detail_level_filter, transaction_entity_filter, transaction_item_filter, transaction_modified_date_range_filter, transaction_paid_status_filter, transaction_posting_status_filter, transaction_type_filter). Members of a set combine with each other, not with the other choices.

ref_number_case_sensitive
string[]

Choose at most one of: txn_id, or the set (currency_filter, max_returned, ref_number, ref_number_case_sensitive, ref_number_filter, ref_number_range_filter, transaction_account_filter, transaction_class_filter, transaction_date_range_filter, transaction_detail_level_filter, transaction_entity_filter, transaction_item_filter, transaction_modified_date_range_filter, transaction_paid_status_filter, transaction_posting_status_filter, transaction_type_filter). Members of a set combine with each other, not with the other choices.

ref_number_filter
object

Filters by ref_number range. Numeric-only bounds are compared numerically; otherwise comparison is lexicographic.

Choose at most one of: txn_id, or the set (currency_filter, max_returned, ref_number, ref_number_case_sensitive, ref_number_filter, ref_number_range_filter, transaction_account_filter, transaction_class_filter, transaction_date_range_filter, transaction_detail_level_filter, transaction_entity_filter, transaction_item_filter, transaction_modified_date_range_filter, transaction_paid_status_filter, transaction_posting_status_filter, transaction_type_filter). Members of a set combine with each other, not with the other choices.

ref_number_range_filter
object

Filters by ref_number range. Numeric-only bounds are compared numerically; otherwise comparison is lexicographic.

Choose at most one of: txn_id, or the set (currency_filter, max_returned, ref_number, ref_number_case_sensitive, ref_number_filter, ref_number_range_filter, transaction_account_filter, transaction_class_filter, transaction_date_range_filter, transaction_detail_level_filter, transaction_entity_filter, transaction_item_filter, transaction_modified_date_range_filter, transaction_paid_status_filter, transaction_posting_status_filter, transaction_type_filter). Members of a set combine with each other, not with the other choices.

transaction_account_filter
AccountTypeFilter · object

Filters the transactions based on the account_ref in the transaction or transaction line using an account type filter or a specific list_id, or a full_name, or a list_id_with_children, or a full_name_with_children. To filter on transaction lines, you must specify the transaction_detail_level_filter with a value of either “All” or “AllExceptSummary”.

Choose at most one of: txn_id, or the set (currency_filter, max_returned, ref_number, ref_number_case_sensitive, ref_number_filter, ref_number_range_filter, transaction_account_filter, transaction_class_filter, transaction_date_range_filter, transaction_detail_level_filter, transaction_entity_filter, transaction_item_filter, transaction_modified_date_range_filter, transaction_paid_status_filter, transaction_posting_status_filter, transaction_type_filter). Members of a set combine with each other, not with the other choices.

transaction_class_filter
ListID · object

Filters the transactions based on the ClassRef in the transaction or transaction line by using a specific list_id, or a full_name, or a list_id_with_children, or a full_name_with_children. To filter on transaction lines, you must specify the transaction_detail_level_filter with a value of either “All” or “AllExceptSummary”.

Choose at most one of: txn_id, or the set (currency_filter, max_returned, ref_number, ref_number_case_sensitive, ref_number_filter, ref_number_range_filter, transaction_account_filter, transaction_class_filter, transaction_date_range_filter, transaction_detail_level_filter, transaction_entity_filter, transaction_item_filter, transaction_modified_date_range_filter, transaction_paid_status_filter, transaction_posting_status_filter, transaction_type_filter). Members of a set combine with each other, not with the other choices.

transaction_date_range_filter
FromTxnDate + ToTxnDate · object

Filters the transactions based on the transaction’s date either by specifying a “from” and/or “to” date, or by using a date_macro.

Choose at most one of: txn_id, or the set (currency_filter, max_returned, ref_number, ref_number_case_sensitive, ref_number_filter, ref_number_range_filter, transaction_account_filter, transaction_class_filter, transaction_date_range_filter, transaction_detail_level_filter, transaction_entity_filter, transaction_item_filter, transaction_modified_date_range_filter, transaction_paid_status_filter, transaction_posting_status_filter, transaction_type_filter). Members of a set combine with each other, not with the other choices.

transaction_detail_level_filter
enum<string>

Allows you to specify the detail level of the query results. You can specify all, summary only (the default), or all except summary. Summary only refers to the transaction as a whole, whereas all except summary refers to the transaction lines.

Choose at most one of: txn_id, or the set (currency_filter, max_returned, ref_number, ref_number_case_sensitive, ref_number_filter, ref_number_range_filter, transaction_account_filter, transaction_class_filter, transaction_date_range_filter, transaction_detail_level_filter, transaction_entity_filter, transaction_item_filter, transaction_modified_date_range_filter, transaction_paid_status_filter, transaction_posting_status_filter, transaction_type_filter). Members of a set combine with each other, not with the other choices.

Available options:
All,
AllExceptSummary,
SummaryOnly
transaction_entity_filter
EntityTypeFilter · object

Filters the transactions based on the entity_ref used in the transaction or transaction line by specifying an entity type filter, a list_id, a full_name, a list_id_with_children, or a full_name_with_children. If you want to filter on transaction lines you must specify the transaction_detail_level_filter with a value of either “All” or “AllExceptSummary”.

Choose at most one of: txn_id, or the set (currency_filter, max_returned, ref_number, ref_number_case_sensitive, ref_number_filter, ref_number_range_filter, transaction_account_filter, transaction_class_filter, transaction_date_range_filter, transaction_detail_level_filter, transaction_entity_filter, transaction_item_filter, transaction_modified_date_range_filter, transaction_paid_status_filter, transaction_posting_status_filter, transaction_type_filter). Members of a set combine with each other, not with the other choices.

transaction_item_filter
ItemTypeFilter · object

Filters the transactions based on the ItemRef used in the transaction line using an item type filter, or a specific list_id, or a full_name, or a list_id_with_children, or a full_name_with_children. To filter on transaction lines, you must specify the transaction_detail_level_filter with a value of either “All” or “AllExceptSummary”.

Choose at most one of: txn_id, or the set (currency_filter, max_returned, ref_number, ref_number_case_sensitive, ref_number_filter, ref_number_range_filter, transaction_account_filter, transaction_class_filter, transaction_date_range_filter, transaction_detail_level_filter, transaction_entity_filter, transaction_item_filter, transaction_modified_date_range_filter, transaction_paid_status_filter, transaction_posting_status_filter, transaction_type_filter). Members of a set combine with each other, not with the other choices.

transaction_modified_date_range_filter
FromModifiedDate + ToModifiedDate · object

Filters the transactions based on the transaction’s modified datetime, either by specifying a “from” and/or “to” date or by using a date_macro.

Choose at most one of: txn_id, or the set (currency_filter, max_returned, ref_number, ref_number_case_sensitive, ref_number_filter, ref_number_range_filter, transaction_account_filter, transaction_class_filter, transaction_date_range_filter, transaction_detail_level_filter, transaction_entity_filter, transaction_item_filter, transaction_modified_date_range_filter, transaction_paid_status_filter, transaction_posting_status_filter, transaction_type_filter). Members of a set combine with each other, not with the other choices.

transaction_paid_status_filter
enum<string>

This filter allows you to search for “open” transactions, i.e. transactions with a remaining balance (for example, credits not fully applied or invoices not fully paid). Valid values are closed, open, or either, which is the default.

Choose at most one of: txn_id, or the set (currency_filter, max_returned, ref_number, ref_number_case_sensitive, ref_number_filter, ref_number_range_filter, transaction_account_filter, transaction_class_filter, transaction_date_range_filter, transaction_detail_level_filter, transaction_entity_filter, transaction_item_filter, transaction_modified_date_range_filter, transaction_paid_status_filter, transaction_posting_status_filter, transaction_type_filter). Members of a set combine with each other, not with the other choices.

Available options:
Closed,
Either,
Open
transaction_posting_status_filter
enum<string>

Allows you to filter transactions based on posting status. Valid values are posting, non-posting, or either. The default is “either.” (Posting status refers to whether QuickBooks records a transaction in one of your account registers.)

Choose at most one of: txn_id, or the set (currency_filter, max_returned, ref_number, ref_number_case_sensitive, ref_number_filter, ref_number_range_filter, transaction_account_filter, transaction_class_filter, transaction_date_range_filter, transaction_detail_level_filter, transaction_entity_filter, transaction_item_filter, transaction_modified_date_range_filter, transaction_paid_status_filter, transaction_posting_status_filter, transaction_type_filter). Members of a set combine with each other, not with the other choices.

Available options:
Either,
NonPosting,
Posting
transaction_type_filter
object

Filters the transactions based on the transaction’s type. You can specify one or more transaction types in the filter. Notice that TimeTracking transactions aren’t supported. If you set the transaction type filter to “All” (or if you don’t set it at all), the query will be searching only those transaction types that are permissible types for the user currently logged in.

Choose at most one of: txn_id, or the set (currency_filter, max_returned, ref_number, ref_number_case_sensitive, ref_number_filter, ref_number_range_filter, transaction_account_filter, transaction_class_filter, transaction_date_range_filter, transaction_detail_level_filter, transaction_entity_filter, transaction_item_filter, transaction_modified_date_range_filter, transaction_paid_status_filter, transaction_posting_status_filter, transaction_type_filter). Members of a set combine with each other, not with the other choices.

txn_id
string[]

txn_id is the unique QuickBooks identifier for a transaction. Use it to reference that transaction in later requests. txn_id values are transaction-specific and should not be reused across unrelated transaction types.

Choose at most one of: txn_id, or the set (currency_filter, max_returned, ref_number, ref_number_case_sensitive, ref_number_filter, ref_number_range_filter, transaction_account_filter, transaction_class_filter, transaction_date_range_filter, transaction_detail_level_filter, transaction_entity_filter, transaction_item_filter, transaction_modified_date_range_filter, transaction_paid_status_filter, transaction_posting_status_filter, transaction_type_filter). Members of a set combine with each other, not with the other choices.

webhook_url
string<uri>

Where QuBe Sync POSTs the answered request (this same document with response_json filled in), signed with X-QUBE-Signature. Send one with every request: it is how answers are delivered. Optional only so a script can queue and look up links.self by hand. It must be an absolute http or https URL. It may not contain a username or password, and in production it may not point at localhost or a private, loopback or link-local address. A qube listen URL must be one of this app's.

Maximum string length: 2048

Callbacks

POST
{$request.query.webhook_url}answered

Body

application/json

POSTed to webhook_url as JSON, signed with X-QUBE-Signature (t=<timestamp>,v1=<hex HMAC-SHA256 of "<timestamp>.<raw body>" with your app's webhook secret>).

app_id
string<uuid>
required

Your app's id.

app_name
string
required
error
object | null
required

Set when state is error, retryable, timed_out or discarded. error_type says where it failed: for a timed_out request it is timed_out, and for a discarded one discarded, unless the request was retryable when your app discarded it, which keeps the connection error that held it up. user_message is safe to show an end user; error_code is QuickBooks' own status code for a business error, hresult the Web Connector's for a connection/XML error; debug_message is for you.

id
string<uuid>
required

The request's id, as the 201 returned it. For an iterated query, every page carries the first page's id here.

page_request_id
string<uuid>
required

This page's own id. Equal to id except on later pages of an iterated query.

response_json
Success · object
required

QuBe Sync's summary of QuickBooks' answer. Only an Error severity from QuickBooks is status: "error" (and makes the request's state error), so a query that matched nothing is still success. A Warn severity is a success with warning beside it.

sandbox
boolean
required

Whether the app is a sandbox app.

state
enum<string>
required

response_received: QuickBooks accepted it; read response_json. error: it is over and QuBe Sync won't try again -- see error, and response_json.error for a QuickBooks business error; with error_type outcome_unknown a write may still have been applied, so look before sending it again. retryable: QuickBooks could not be reached and QuBe Sync keeps trying; show the customer error.user_message so they can fix it. timed_out: no answer came back -- the customer's computer lost its connection, or QuickBooks or the Web Connector was closed, mid-request. QuickBooks may still have applied it, so look before sending it again. discarded: your app discarded it before the Web Connector picked it up, so QuickBooks never got it. Both carry an error.

Available options:
response_received,
error,
retryable,
timed_out,
discarded
timestamp
integer
required

Unix seconds; the same t the signature covers.

iteration_state
enum<string>

continue: more pages will follow, each its own webhook. done: this was the last page. max_sandbox_iterations_reached: a sandbox app's page limit stopped the iteration.

Available options:
not_applicable,
continue,
done,
max_sandbox_iterations_reached

Present only with response_xml_omitted.

page
integer | null

The page number, when iterated.

response_xml
string | null

QuickBooks' raw qbXML answer. response_json is the same, summarized. One answer can be at most 4 MB as the Web Connector sends it, about 3 MB of qbXML; QuickBooks' answer over that isn't kept: this is null and error.error_type is response_too_large. A webhook whose body would be over 1 MB is sent without it: null, with response_xml_omitted true; fetch it from links.self.

response_xml_omitted
boolean

Present, and true, only when response_xml was left out to keep the body under 1 MB. response_json is still here; GET links.self for response_xml.

Response

2XX

Received. Anything else is retried with backoff for about 8 hours.

Response

Queued for the connection's Web Connector. Pass webhook_url and QuBe Sync POSTs the answer to it once QuickBooks has answered (see the answered callback: its own payload, not this document). links.self returns this document on demand, with response_json filled in.

data
object
required