Transactions
Symitar in Platform
>
Transactions
openapi: 3.0.1
info:
title: Symitar in Platform API - Transactions
version: v1
description: API to interact with Symitar in Platform
contact:
name: Picard
url: https://www.jackhenry.com/
email: DC-Picard-Product@jackhenry.com
servers:
- url: https://platform.banno.com
description: Production Endpoint
components:
securitySchemes:
OpenIDEnterprise:
type: openIdConnect
openIdConnectUrl: https://login.jackhenry.com/.well-known/openid-configuration
description: "Jack Henry Enterprise Authentication. \n\n ### Supported Flows\n \n #### 1. Authorization Code Flow\n * **Use Case:** Person-at-keyboard logins (FI or JH Employees).\n * **Security:** Supports/recommends PKCE (S256). Supports Pushed Authorization Requests (PAR), and DPoP token binding.\n * **Client Auth:** Supports/recommends `client_assertion` (Private Key JWT), also supports `client_secret`.\n \n #### 2. Client Credentials Flow\n * **Use Case:** System services and machine-to-machine integrations.\n * **Security:** Supports DPoP token binding.\n * **Client Auth:** **Requires** `client_assertion` (Private Key JWT).\n"
OpenIDConsumer:
type: openIdConnect
openIdConnectUrl: https://digital.garden-fi.com/.well-known/openid-configuration
description: "Jack Henry Consumer Authentication. \n\n> **WARNING: FI-SPECIFIC ROUTING**\n> The authorization server is currently pointing to our **Sandbox Environment** (`digital.garden-fi.com`) so you can test this documentation. In production code, this domain **must** be replaced with the specific Financial Institution's domain.\n> Example: Replace `{API-ENVIRONMENT}` in `https://{API-ENVIRONMENT}/.well-known/openid-configuration` with `digital.garden-fi.com` for the Garden financial institution.\n\n### Supported Flows\n\n#### 1. Authorization Code Flow\n* **Use Case:** Person-at-keyboard logins (customer or member of FI).\n* **Security:** Supports/recommends PKCE (S256). Supports Pushed Authorization Requests (PAR), and DPoP token binding.\n* **Client Auth:** Supports `client_secret`.\n"
tags:
- name: Transactions
description: Account transaction search operations
paths:
/a/api/picard/v1/{InstitutionUniversalId}/transactions-search:
post:
operationId: searchAccountTransactions
tags:
- Transactions
summary: Search Account Transactions
description: |
Search for transactions for a specific account and either a share or loan.
Sensitive identifiers (`accountNumber`, `shareId`, `loanId`) are
passed in the request body instead of the URL path.
Supply `accountNumber` and exactly one of `shareId` or `loanId`.
Supports pagination via `count` and `offset` in the request body.
The maximum value for `count` is 500; if a larger value is provided
the service falls back to the default of 10.
Optionally filter by transaction source with the `source` field
(1-2 alphanumeric characters, case-insensitive).
Comment-only records (`commentCode = 1` and `actionCode = C`) are
aggregated onto the nearest prior monetary transaction and exposed via
that transaction's `comments` array.
Transactions are enriched with receipt metadata when available. For
transactions that carry a confirmation number, the service first
checks its own local record of receipts created for that confirmation
number and effective date, then falls back to a single batched
receipts-service lookup for anything not found locally, and sets
`receiptId` on matching transactions.
The response also includes a derived `transactionType` for consumers:
`fee` when `subSource` is 1-50, otherwise `payment` for `actionCode=P`,
`addon` for `actionCode=A`, and `other` for everything else.
parameters:
- name: InstitutionUniversalId
in: path
description: A unique identifier to establish the identity of an Institution/Environment/Brand combination
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
description: Request body for searching transactions
required:
- accountNumber
- startDate
- endDate
oneOf:
- required:
- shareId
- required:
- loanId
properties:
accountNumber:
type: string
description: 10-digit account number
example: 0000379758
shareId:
type: string
description: Share ID. Provide exactly one of `shareId` or `loanId`.
example: '0001'
loanId:
type: string
description: Loan ID. Provide exactly one of `shareId` or `loanId`.
example: '0002'
sourceCode:
type: string
description: |
Optional transaction source code filter (1-2 alphanumeric characters, case-sensitive).
Filters returned transactions to only those matching this source code.
Examples: "R", "A1", "D". Omit to return all sources.
example: A1
startDate:
type: string
description: Start date for transaction search (YYYY-MM-DD)
example: '2025-01-01'
endDate:
type: string
description: End date for transaction search (YYYY-MM-DD)
example: '2025-12-31'
count:
type: integer
description: |
Number of records to return per page. Default is 10, maximum is 500.
Values above the maximum are silently clamped to the default.
example: 25
offset:
type: string
description: |
Number of records to skip (zero-based). Omit or send "0" for the
first page. Use the `nextOffset` value from the previous
response's `paging` object to retrieve subsequent pages.
example: '0'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
description: Paged response for transaction search
required:
- transactions
- paging
properties:
transactions:
type: array
items:
type: object
description: Share transaction details
required:
- adjustmentCode
- balanceChange
- batchSequence
- billedFeeAmount
- branch
- commentCode
- comments
- confirmationSeq
- consoleNumber
- dispositionFee
- escrowAmount
- escrowAppliedBalChg
- escrowUnpaidBalChg
- feeAmount
- feeCountBy
- feeExmtCrtsyAmt
- idType
- interest
- lateChgFieldsValid
- lateChgUnpaidChgAmt
- lateChgWaivedAmt
- miscExpenseAmount
- newBalance
- prevAvailBalance
- prevLateChgAccrued
- processorUser
- recurringTran
- regDCheckCode
- regDTransferCode
- regECode
- salesTaxAmount
- securityLevels
- sequenceNumber
- transactionType
- subSource
- terminationFee
- amount
- transferCode
- unappliedPartialPmtChg
- userNumber
- userOverride
- voidCode
properties:
actionCode:
type: string
description: Transaction action code
nullable: true
activityDate:
type: string
description: Activity date
nullable: true
adjustmentCode:
type: integer
format: int64
description: Adjustment code
balanceChange:
type: string
description: Balance change amount
batchSequence:
type: integer
format: int64
description: Batch sequence number
billedFeeAmount:
type: string
description: Billed fee amount
branch:
type: integer
format: int64
description: Branch number
comments:
type: array
description: Aggregated comment lines associated with this transaction. Always present as an array; empty array if no comments are linked to this transaction.
items:
type: string
receiptId:
type: string
format: uuid
description: Receipt identifier when a stored transfer receipt exists for this transaction.
nullable: true
commentCode:
type: integer
format: int64
description: Comment code
confirmationNumber:
type: string
description: |
Confirmation number (SymXchange CONFIRMATION field). This value is informational and is not guaranteed to be unique.
nullable: true
confirmationSeq:
type: integer
format: int64
description: Confirmation sequence
consoleNumber:
type: integer
format: int64
description: Console number
description:
type: string
description: Transaction description
nullable: true
dispositionFee:
type: string
description: Disposition fee
effectiveDate:
type: string
description: Effective date
nullable: true
escrowAmount:
type: string
description: Escrow amount
escrowAppliedBalChg:
type: string
description: Escrow applied balance change
escrowUnpaidBalChg:
type: string
description: Escrow unpaid balance change
feeAmount:
type: string
description: Fee amount
feeCountBy:
type: integer
format: int64
description: Fee count by
feeExmtCrtsyAmt:
type: string
description: Fee exempt courtesy amount
id:
type: string
description: Transaction ID
nullable: true
idType:
type: integer
format: int64
description: ID type
interest:
type: string
description: Interest amount
lastTranDate:
type: string
description: Last transaction date
nullable: true
lateChgFieldsValid:
type: integer
format: int64
description: Late charge fields valid
lateChgUnpaidChgAmt:
type: string
description: Late charge unpaid amount
lateChgWaivedAmt:
type: string
description: Late charge waived amount
miscExpenseAmount:
type: string
description: Miscellaneous expense amount
newBalance:
type: string
description: New balance after transaction
postDate:
type: string
description: Post date
nullable: true
postTime:
type: string
description: Post time
nullable: true
prevAvailBalance:
type: string
description: Previous available balance
prevLateChgAccrued:
type: string
description: Previous late charge accrued
processorUser:
type: integer
format: int64
description: Processor user ID
recurringTran:
type: integer
format: int64
description: Recurring transaction flag
regDCheckCode:
type: integer
format: int64
description: Regulation D check code
regDTransferCode:
type: integer
format: int64
description: Regulation D transfer code
regECode:
type: integer
format: int64
description: Regulation E code
salesTaxAmount:
type: string
description: Sales tax amount
securityLevels:
type: integer
format: int64
description: Security levels
sequenceNumber:
type: integer
format: int64
description: Sequence number
sourceCode:
type: string
description: Source code
nullable: true
transactionType:
type: string
description: Derived transaction type based on `subSource` and `actionCode`
enum:
- fee
- payment
- addon
- other
statementDescription:
type: string
description: Statement description
nullable: true
statementEntryId:
type: string
description: Statement entry ID
nullable: true
subSource:
type: integer
format: int64
description: Sub-source code
subSourceDescr:
type: string
description: Sub-source description
nullable: true
terminationFee:
type: string
description: Termination fee
amount:
type: string
description: Transaction amount
transferCode:
type: integer
format: int64
description: Transfer code
unappliedPartialPmtChg:
type: string
description: Unapplied partial payment change
userNumber:
type: integer
format: int64
description: User number
userOverride:
type: integer
format: int64
description: User override flag
voidCode:
type: integer
format: int64
description: Void code
paging:
type: object
required:
- nextOffset
- results
properties:
nextOffset:
type: string
description: The next offset is the start position of the read pointer for pagination.
results:
type: integer
description: The number of records included in the response.
total:
type: integer
nullable: true
description: The total number of records the server has available for the request.
additionalProperties: false
'400':
description: Bad request
content:
application/problem+json:
schema:
type: object
required:
- type
- title
- details
properties:
type:
description: A string path which uniquely classifies the domain of the error.
type: string
nullable: false
example: jackhenry/operation-failed
title:
description: A end-user readable string title of the error type.
nullable: false
type: string
details:
description: An array of end-user readable strings which provide additional details for the error message.
type: array
nullable: false
items:
type: string
data:
type: object
description: |
Additional data that could be useful to a developer or for handing the error programmatically. The schema for the data in this object is intentionally left undefined.
nullable: true
'401':
description: Although the HTTP standard specifies "unauthorized", semantically this response means "unauthenticated". That is, the client must authenticate itself to get the requested response.
'403':
description: The client does not have access rights to the content; that is, it is unauthorized, so the server is refusing to give the requested resource. Unlike 401, the clients identity is known to the server.
'500':
description: An unexpected internal server error occurred while processing the request.
content:
application/problem+json:
schema:
type: object
required:
- type
- title
- details
properties:
type:
description: A string path which uniquely classifies the domain of the error.
type: string
nullable: false
example: jackhenry/operation-failed
title:
description: A end-user readable string title of the error type.
nullable: false
type: string
details:
description: An array of end-user readable strings which provide additional details for the error message.
type: array
nullable: false
items:
type: string
data:
type: object
description: |
Additional data that could be useful to a developer or for handing the error programmatically. The schema for the data in this object is intentionally left undefined.
nullable: true
examples:
internalServerError:
summary: Internal server error
value:
type: general/internal-server-error
title: Internal server error
details:
- Unexpected internal server error
Did this page help you?
Why was this page helpful?
Why wasn't this page helpful?
Thank you for your feedback!
Last updated Tue Sep 15 2026