Details
Consumer API
>
API Reference
>
v0
>
Transactions
>
Details
%YAML 1.2
---
openapi: 3.0.0
info:
version: '0.0'
title: Transaction Details
servers:
- url: 'https://{API_ENVIRONMENT}/a/consumer/api/v0'
variables:
API_ENVIRONMENT:
default: digital.garden-fi.com
description: FI specific hostname
tags:
- name: Transactions list
description: Returns an account's transactions list.
- name: Download Options
description: Return download options for exporting transactions.
- name: Enrichment Categories
description: Return a list of available enrichment categories.
- name: EDI Transaction Data
description: Endpoints for EDI transaction data. Electronic Data Interchange(EDI) data are files that are available on specific transactions.
These files are downloaded and able to be uploaded into third party software.
paths:
"/users/{userId}/accounts/{accountId}/transactions":
get:
tags:
- Transactions list
description: Returns an account's transactions list. Pagination supported when the `offset` or `limit` parameters are provided. When just the `offset` and `limit` are provided the transactions are returned sorted by posted date and then sequence number.
security:
- OpenID_Connect:
- 'https://api.banno.com/consumer/auth/transactions.detail.readonly'
parameters:
- in: path
name: userId
required: true
description: ID of the desired user
schema:
type: string
- in: path
name: accountId
required: true
description: ID of the user's account
schema:
type: string
- in: query
name: offset
description: Index of the first transaction to be returned from a sequential list of transactions. This index is 0 based and inclusive of the index given.
required: false
schema:
type: integer
minimum: 0
- in: query
name: limit
description: Maximum number of elements to be returned. This value is limited to 500.
required: false
schema:
type: integer
- in: query
name: since
description: inclusive `ISO-8601 instant` (with date and time) to start at (posted date). Cannot be combined with `updatedSince`. Limited based on when the institution went live with Banno.
required: false
schema:
type: string
example: '2022-06-30T00:00:00Z'
- in: query
name: until
description: inclusive `ISO-8601 instant` (with date and time) to end at (posted date). Cannot be combined with `updatedSince`
required: false
schema:
type: string
example: '2022-06-30T00:00:00Z'
- in: query
name: updatedSince
description: transactions changed since the `ISO-8601 instant` (with date and time) is provided (inclusive, posted date). Cannot be combined with `since` and `until`. Limited based on when the institution went live with Banno.
required: false
schema:
type: string
example: '2022-06-30T00:00:00Z'
responses:
'200':
description: OK
content:
application/json:
schema:
"$ref": "#/components/schemas/paginatedTransactions"
'400':
description: Not found or ineligible
'404':
description: Not Found
"/users/{userId}/accounts/{accountId}/transactions/{transactionID}":
get:
tags:
- Transactions list
description: Returns a user's account's transaction in greater detail. Returns
the transactions in the same JSON format as the other transaction retrieval
endpoints.
security:
- OpenID_Connect:
- 'https://api.banno.com/consumer/auth/transactions.detail.readonly'
parameters:
- in: path
name: userId
required: true
description: ID of the desired user
schema:
type: string
- in: path
name: accountId
required: true
description: ID of the user's account
schema:
type: string
- in: path
name: transactionID
required: true
description: ID of a specific transaction
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
"$ref": "#/components/schemas/transaction"
'400':
description: Not found or ineligible
"/v0/users/{userId}/accounts/{accountId}/transactions/{transactionID}/update":
put:
tags:
- Transactions list
description: Updates a user's account's transaction and then returns the updated
transaction in greater detail. (can also accept a Multipart message for image(s) upload).
The key for the multipart isn't used, we only check that the image(s) uploaded are jpg or png format.
security:
- OpenID_Connect:
- 'https://api.banno.com/consumer/auth/transactions.images.readwrite'
requestBody:
content:
application/json:
schema:
"$ref": "#/components/schemas/UpdateTransaction"
description: The fields to be set on the transaction. The data supplied will overwrite existing tags, notes, memo, category, and images, with the exception that any new images will be added via the multipart request. If a tag, note, memo, category, or image is left out of the request, it will be removed.
required: true
parameters:
- in: path
name: userId
required: true
description: ID of the desired user
schema:
type: string
- in: path
name: accountId
required: true
description: ID of the user's account
schema:
type: string
- in: path
name: transactionID
required: true
description: ID of a specific transaction
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
"$ref": "#/components/schemas/transaction"
'400':
description: Malformed JSON was posted
'404':
description: Transaction not found
'503':
description: Something went wrong or timed out while processing
"/users/{userId}/transactions/{accountId}/download-options":
get:
tags:
- Download Options
description: Returns a user's account's transaction download options, e.g. last
download date, returning null if there is none.
security:
- OpenID_Connect:
- 'https://api.banno.com/consumer/auth/transactions.detail.readonly'
parameters:
- in: path
name: userId
required: true
description: ID of the desired user
schema:
type: string
format: uuid
- in: path
name: accountId
required: true
description: ID of the user's account
schema:
type: string
format: uuid
responses:
'200':
description: OK
content:
application/json:
schema:
"$ref": "#/components/schemas/download-options"
'404':
description: Not Found
"/users/{userId}/transactions/enrichments/categories":
get:
tags:
- Enrichment Categories
description: List of available enrichment categories
parameters:
- in: path
name: userId
required: true
description: ID of the desired user
schema:
type: string
format: uuid
responses:
'200':
description: OK
content:
application/json:
schema:
"$ref": "#/components/schemas/categories"
'403':
description: This institution does not have an enrichment provider configured
"/users/{userId}/accounts/{accountId}/transactions/{transactionID}/edi/available":
get:
tags:
- EDI Transaction Data
description: Returns a list of available EDI file download options. Only the available file download options will be returned.
security:
- OpenID_Connect:
- 'https://api.banno.com/consumer/auth/transactions.detail.readonly'
parameters:
- in: path
name: userId
required: true
description: ID of the desired user
schema:
type: string
format: uuid
- in: path
name: accountId
required: true
description: ID of the user's account
schema:
type: string
- in: path
name: transactionID
required: true
description: ID of a specific transaction
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
"$ref": "#/components/schemas/EdiDownloadOptions"
example:
edi_nacha_uri: '/users/{userId}/transactions/{transactionID}/edi/download/nacha'
edi_details_uri: '/users/{userId}/transactions/{transactionID}/edi/download/details'
'403':
description: User or Institution does not have the EDI ability enabled.
'404':
description: Not Found
"/users/{userId}/transactions/{transactionID}/edi/download/{fileType}":
get:
tags:
- EDI Transaction Data
description: Download the specified EDI file type for a specific transaction.
security:
- OpenID_Connect:
- 'https://api.banno.com/consumer/auth/transactions.detail.readonly'
parameters:
- in: path
name: userId
required: true
description: ID of the desired user
schema:
type: string
- in: path
name: transactionID
required: true
description: ID of a specific transaction
schema:
type: string
- in: path
name: fileType
required: true
description: File type to be downloaded.
schema:
type: string
enum:
- nacha
- details
- summary
responses:
'200':
description: A Details, NACHA or Summary .txt file
content:
application/txt:
schema:
type: string
format: binary
'403':
description: User or Institution does not have the EDI ability enabled.
'404':
description: Not Found
'503':
description: Something went wrong or timed out while processing
components:
securitySchemes:
OpenID_Connect:
type: openIdConnect
description: OpenID Connect - Discovery endpoint will be institution specific
openIdConnectUrl: >-
https://digital.garden-fi.com/a/consumer/api/v0/oidc/.well-known/openid-configuration
schemas:
paginatedTransactions:
type: object
required:
- transactions
properties:
inactivatedTransactionIds:
type: array
items:
type: string
transactions:
type: array
items:
"$ref": "#/components/schemas/transaction"
offset:
type: integer
limit:
type: integer
account:
"$ref": "#/components/schemas/account"
transaction:
type: object
properties:
tags:
type: array
items:
type: string
description: User-provided string "tagged" to the transaction.
example:
- tag_one
- tag_two
amount:
type: string
description: Transaction amount.
merchant:
type: object
properties:
name:
type: string
description: The merchant name.
id:
type: string
description: The merchant ID - deprecated.
parentMerchantId:
type: string
description: The merchant's parent ID - deprecated.
url:
type: string
description: The merchant's web URL.
phone:
type: string
description: The merchant's telephone number.
category:
type: string
description: The merchant economic sector.
location:
type: object
properties:
streetAddress:
type: string
description: The merchant's street address.
crossStreet:
type: string
description: The merchant's cross-street.
city:
type: string
description: The merchant's city.
state:
type: string
description: The merchant's state.
zip:
type: string
description: The merchant's postal code.
lat:
type: string
description: The merchant locations latitude.
long:
type: string
description: The merchant locations longitude.
memo:
type: string
description: The transaction memo.
example: "Groceries for dinner"
filteredMemo:
type: string
description: The transaction memo with some extraneous details removed.
displayName:
type: string
description: The name displayed for this transaction.
displayCity:
type: string
description: The city displayed for this transaction.
displayState:
type: string
description: The state displayed for this transaction.
type:
type: string
description: Refers to one of the transaction-types. See listing on this page.
example: POS
checkNumber:
type: string
description: The check number associated with this transaction.
currency:
type: string
description: The currency that the amount is displayed in.
accountId:
type: string
description: The account ID.
id:
type: string
description: The transaction ID.
datePosted:
type: string
description: The date that the transaction posted.
date:
type: string
description: Normalized by the client to only show the
date. Currently the same as `datePosted`.
pattern: ^\w+ \d{1,2}, \d{4}$
example: January 1, 1970
pendingStatus:
type: string
description: States whether the transaction has hard-posted or not.
example: Reconciled
billId:
type: string
description: Any Bill ID associated with this transaction.
paymentId:
type: string
description: Any payment ID associated with this transaction.
receiptImageIds:
type: array
items:
type: string
description: Any receipt image IDs associated with this transactions.
checkImageIds:
type: array
items:
type: string
description: Any check image IDs associated with this transactions.
userImageIds:
type: array
items:
type: string
description: Combination of receipt and check image ids.
providerImageIds:
type: array
deprecated: true
items:
type: string
description: This field is used for old clients and shouldn't be used anymore. Use the flag `hasProviderImages` instead.
example:
- checkImageId
- checkImageId2
hasProviderImages:
type: boolean
description: A boolean to tell whether or not the transaction has
provider images associated with it.
runningBalance:
type: string
description: The running account balance at the point in time of this transaction.
sequence:
type: integer
description: Transaction order position by date.
lastUpdated:
type: string
format: date-time
description: |
A timestamp indicating when this transaction was last updated.
The reasons for an update may include (but are not limited to):
- Changes of data within the financial core (e.g., running balance, check images, etc.)
- Changes by the user (e.g., adding tags, notes, images, etc.)
- Transaction enrichments.
notes:
type: string
description: All notes associated with the transaction.
subtype:
type: string
description: The transaction category that this transaction falls into, if any. See listing on this page.
example: EFT
enrichments:
type: object
properties:
cleanMemo:
type: string
description: Transaction description.
expenseCategory:
type: string
description: Expense category for the transaction. (Not closed, more possible values could be added in the future)
enum:
- clothing
- diningout
- education
- entertainment
- fees
- groceries
- health
- home
- income
- payment
- personal
- savings
- transfer
- transportation
- travel
- utilities
customExpenseCategory:
type: string
description: Free-form expense category for the transaction.
loanPaymentBreakdown:
type: array
items:
$ref: '#/components/schemas/LoanPaymentBreakdown'
EDIAddendaState:
type: string
description: State of the EDI data availability for the transaction.
enum:
- Incompatible
- Exists
- DoesntExist
- NotChecked
download-options:
type: object
properties:
lastDownloadDate:
type: string
format: date-time
description: "(nullable) date of last transactions download"
example: '2002-05-30T09:30:10.000Z'
lastStatementDate:
type: string
format: date-time
description: "(nullable) date of the last statement, stored on the core"
example: '2002-05-30T09:30:10.000Z'
sinceLastDownload:
type: string
format: date-time
description: "(nullable) inclusive start date for exporting transactions
since last download"
example: '2002-05-30T09:30:10.000Z'
sinceLastStatement:
type: string
format: date-time
description: "(nullable) inclusive start date for exporting transactions
since statement close date"
example: '2002-05-30T09:30:10.000Z'
fileTypes:
type: array
items:
type: object
properties:
index:
type: integer
description: 1-based position when displayed in a sequence
example: 3
ext:
type: string
enum:
- CSV
- OFX
- QBO
- QFX
- TXT
description: file types available to the user for download
example: OFX
label:
type: string
description: label to be used when displayed
example: Open Financial Exchange
EdiDownloadOptions:
type: object
properties:
edi_nacha_uri:
type: string
description: URI to download the EDI NACHA file.
example: '/users/{userId}/transactions/{transactionID}/edi/download/nacha'
edi_details_uri:
type: string
description: URI to download the EDI Details file.
example: '/users/{userId}/transactions/{transactionID}/edi/download/details'
edi_summary_uri:
type: string
description: URI to download the EDI Summary file.
example: '/users/{userId}/transactions/{transactionID}/edi/download/summary'
UpdateTransaction:
type: object
properties:
tags:
type: array
items:
type: string
description: Tags to attribute to the transaction; this will replace any existing tags. If undefined, no tag changes will be made.
notes:
type: string
description: A note to apply to the transaction; this will replace any existing note. If undefined, no changes will be made.
userImageIdsToKeep:
type: array
items:
type: string
description: Existing user-uploaded image IDs to attribute to the transaction. An empty list removes all receipt images. If undefined, no changes will be made. An image can be uploaded by sending multipart form data using the field name `userImages`.
memo:
type: string
description: A memo to apply to the transaction; this will replace any existing memo.
example: "Groceries for dinner"
category:
type: string
description: A category to assign to the transaction; this will replace any existing category.
example: "food_and_drink"
account:
type: object
properties:
accountType:
type: string
description: The values of accountType are described in account-types
enum:
- Deposit
- Line of Credit
- Debt
- Investment
- Bill Pay
- Other
- Unknown
accountSubType:
type: string
description: The values of accountSubType are described in account-types
LoanPaymentBreakdown:
type: object
properties:
description:
type: string
description: Payment description.
example: Principal
amount:
type: string
description: Payment amount.
example: '5.06'
categories:
type: array
items:
type: object
properties:
name:
type: string
description: |
Return a list of available enrichment categories. Possible values include:
- banking
- general
- transport
- food_and_drink
example: banking
Additional Information
Transactions for Deposit Accounts and Bills
A positive amount indicates a credit.
A negative amount indicates a debit.
Transactions for Debt and Line of Credit Accounts
For debt and line of credit accounts, the amount should be inverted.
This is due to the fact that a debit increases the balance on these type of accounts and a credit decreases the balance (i.e. this is the opposite of deposit accounts).
PendingStatus
InstitutionPending - Transaction is reported pending by the institution
BannoPending - Legacy status for user-created transaction. Should never appear again.
Reconciled - Transaction was once
InstitutionPending
orBannoPending
and is now confirmedNoReconciliation - Transaction was never pending.
Type
- POS
- CHECK
- ECHECK
- FEE
- INTEREST
- TAX
- TRANSFER
- ONLINE
- ATM
- UNKNOWN
Subtype
- PinDebit
- EFT
- Undefined
Have a Question?
Have a how-to question? Seeing a weird error? Get help on
StackOverflow.
Register for the Digital Toolkit Meetup
where we answer technical Q&A from the audience.
Last updated Thu Aug 25 2022