Sync Transactions
Sync Transactions
Provides a paginated feed of transactions, grouped into created
, updated
, and removed
lists.
Each call will also return a cursor.next
value. In subsequent calls, include that value to receive
only changes that have occurred since the previous call. Note that these lists are unordered,
so it is possible to get transactions with dates that precede those you've fetched in previous calls to this
endpoint. Older transactions can be added, for example, when historical data becomes accessible later.
Pending transactions will only be reported as created
. Pending transactions are completely
removed and replaced with each transaction refresh or update; no attempt is made to track their removal or
modification. Pending transactions will not be reported in the removed
list. If you store
pending transactions, you should remove and replace them entirely each time you fetch new transactions.
Large numbers of transactions will be paginated, and the has_more
field will be true. You should
continue calling this endpoint with each new cursor.next
value until has_more
is false.
Note that this endpoint does not trigger a fetch of transactions from the institution; it merely returns
transactions that have already been fetched, either because prefetch
was requested when the link was created,
or because of scheduled or on-demand updates.
MoneyKit checks for updated account data, including transactions, periodically throughout the day, but the update frequency can vary, depending on the downstream data provider, the institution, and whether one or both provide webhook-based updates. To force a check for updated transactions, you can use the /products endpoint.
Note also that the transactions.updates_available
webhook will alert you when new data is available.
URL
Request
Response
cursor
: string
A cursor value representing the last update requested. If included, the response will only return changes after this update. If omitted, a complete history of updates will be returned. This value must be stored by the client as we do not keep track of app cursors.
size
: integer
The number of items to return.
default: 50
id
: string
required
The unique ID for this link.
example: mk_eqkWN34UEoa2NxyALG8pcV
Responses
200
Successful Response
transactions
: object
Created, updated, and removed transactions. These lists are unordered.
accounts
: array
A list of accounts for which transactions are being returned.
cursor
: object
Pagination information
has_more
: boolean
This condition indicates the presence of transaction updates exceeding the requested count.
If true, additional updates MUST be retrieved by making an additional request with cursor set to cursor.next
.
link
: object
The link that these transactions belong to.
403
Forbidden by link owner. The user did not give permission to access this data when linking.
error_code
: string
link_error.forbidden_action
default: "link_error.forbidden_action"
Allowed values:
"link_error.forbidden_action"
error_message
: string
Error message
example: Accounts access not permitted
documentation_url
: string
404
Link not found.
error_code
: string
link_error.not_found
default: "link_error.not_found"
Allowed values:
"link_error.not_found"
error_message
: string
default: "Link not found."
documentation_url
: string
410
Link deleted.
error_code
: string
link_error.deleted
default: "link_error.deleted"
Allowed values:
"link_error.deleted"
error_message
: string
default: "This link was deleted at some earlier time."
documentation_url
: string
422
Link error.
error_code
: string
link_error.bad_state
default: "link_error.bad_state"
Allowed values:
"link_error.bad_state"
error_message
: string
documentation_url
: string
link_error_code
: string
429
Rate limit exceeded.
error_code
: string
api_error.rate_limit_exceeded
default: "api_error.rate_limit_exceeded"
Allowed values:
"api_error.rate_limit_exceeded"
error_message
: string
Error message
default: "Rate limit exceeded"
documentation_url
: string