Transaction Sets
General Ledger
>
API Reference
>
v1
>
Transaction Sets
Overview
Transaction Sets post balanced journal entries to GL accounts.
Requirements:
- Minimum two transactions per set
- At least one debit and one credit
- Debits must equal credits (balanced per effective date if multiple dates used)
- Maximum number of transactions allowed in a set is 6500
- Transaction amounts must be greater than 0.00
Effective Dating:
- Default: Posts to current business day
- Prior dates: Set
effectiveDateon each transaction (subject to institution limits)
Reversals:
- Creates a new Transaction Set that negates the original entries
- Optionally specify a new
effectiveDate(defaults to original date if omitted)
For detailed examples and best practices, see our Transaction Sets Fundamentals guide.
openapi: 3.0.3
info:
title: General Ledger API - TransactionSets
version: v1
description: API to interact with General Ledger
contact:
name: General Ledger
url: https://www.jackhenry.com/
email: DC-LedgerServices-Product@jackhenry.com
servers:
- url: https://{API_ENDPOINT}
variables:
API_ENDPOINT:
default: digital.garden-fi.com
security:
- bearerAuth: []
tags:
- name: TransactionSets
description: APIs for institution specific Transaction Sets
paths:
/a/api/general-ledger/v1/{InstitutionUniversalId}/transaction-sets:
post:
operationId: TransactionSetsAdd
tags:
- TransactionSets
summary: Api to submit transactions
description: API to post balanced transaction set to an institution's gl accounts
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:
content:
application/json:
schema:
type: object
required:
- entryType
- transactions
properties:
entryType:
type: string
description: The entry or input point of the transaction.
nullable: true
system:
type: string
description: The system the transaction set originated from. The maximum number of characters allowed is 50. Any requests with more than 50 characters will be truncated.
nullable: true
journal:
type: string
description: The journal that generated the entry. For example, domestic or international. The maximum number of characters allowed is 50. Any requests with more than 50 characters will be truncated.
nullable: true
transactions:
type: array
items:
allOf:
- type: object
required:
- accountId
- debitCredit
- amount
- description
- effectiveDate
properties:
accountId:
allOf:
- type: string
format: uuid
description: The unique general ledger account identifier.
nullable: false
description: The GL account to send the transaction set to.
debitCredit:
allOf:
- enum:
- Debit
- Credit
type: string
description: Defines if the transaction debits or credits the account.
nullable: false
amount:
type: object
properties:
value:
type: string
description: This defines the amount value.
nullable: false
currencyType:
type: string
description: The ISO 4217 three character currency type. USD is the default value.
nullable: true
default: usd
additionalProperties: false
description:
type: string
description: Description contained within the transaction.
nullable: true
effectiveDate:
type: string
description: The business date the transaction applies to.
nullable: true
format: date
example: '2024-01-01'
branchId:
type: string
description: Used to identify the physical or non-physical location an account belongs to. The maximum number of characters allowed is 36.
nullable: true
costCenter:
type: string
description: Used to identify a part of the organization such as a department, team, or project. The maximum number of characters allowed is 36.
nullable: true
additionalProperties: false
minItems: 2
maxItems: 6500
nullable: false
additionalProperties: false
responses:
'201':
description: Transaction set created
content:
application/json:
schema:
type: object
required:
- transactionSetId
properties:
transactionSetId:
type: string
format: uuid
description: The transaction set id the transaction is tied to.
nullable: false
additionalProperties: false
'400':
description: The request body is invalid. See the response body for more information.
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:
badRequest:
summary: Validation errors
value:
type: general-ledger/request-constraint-violation
title: Bad request
details:
- The Entry Type must be less than or equal to 36 characters
- Transaction Set must contain at least two transactions
- Transaction Set cannot exceed 6500 transactions
- The amount must be greater than 0
- DebitCredit must be debit or credit
- Currency Type must be USD
- The description must be less than or equal to 100 characters
- Effective date must be a valid date
- Effective date must be less than or equal to the current date
- Prior month effective date limit exceeded
- A GL Account with account number {0} has a status of {1} and cannot be posted to
unbalanced:
summary: Transaction set unbalanced
value:
type: general-ledger/transaction-set-unbalanced
title: Transaction set is out balance
details:
- Entries do not balance by effective date
accountNotPostable:
summary: Account not postable
value:
type: general-ledger/account-not-postable
title: Account not postable
details:
- The account is closed and cannot be posted to
accountInTransactionSetNotFound:
summary: Account in transaction set not found
value:
type: general-ledger/account-in-transaction-set-not-found
title: An account in the transaction set was not found
details:
- Every account in the transaction set must exist
priorMonthEffectiveDateLimitExceeded:
summary: Prior Month Effective Date Limit Exceeded
value:
type: general-ledger/prior-month-effective-date-limit-exceeded
title: Prior Month Effective Date Limit Exceeded
details:
- Transactions cannot be posted to prior months outside of the prior month effective date limit
'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.
'404':
description: The server can not find the requested resource. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 to hide the existence of a resource from an unauthorized client.
'409':
description: Deadlock detected
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:
deadLock:
summary: Deadlock detected
value:
type: general-ledger/dead-lock
title: Deadlock detected
details:
- The request was cancelled due to another updated already in progress
'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
/a/api/general-ledger/v1/{InstitutionUniversalId}/transaction-sets/{Id}:
get:
x-ignoreRules:
- jhapi-000-Content-Definitions
operationId: TransactionSetRead
tags:
- TransactionSets
summary: Api to get list of transactions in a Transaction set
description: API to read a Transaction set record in an institution
parameters:
- name: InstitutionUniversalId
in: path
description: A unique identifier to establish the identity of an Institution/Environment/Brand combination
required: true
schema:
type: string
- name: Id
in: path
required: true
description: The unique identifier for a Transaction Set
schema:
type: string
format: uuid
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
required:
- id
- entryType
- createdBy
- transactions
properties:
id:
type: string
format: uuid
description: The transaction set id the transaction(s) are tied to.
nullable: false
entryType:
type: string
description: The entry or input point of the transaction set.
nullable: false
createdBy:
type: string
example: cc096a17-206d-4273-8596-9d14f576ae65
description: The user id who created the transaction set. If the system created the transaction set, then an empty guid will be returned.
nullable: false
system:
type: string
description: The system the transaction set originated from.
nullable: true
journal:
type: string
description: The journal that generated the entry.
nullable: true
transactions:
type: array
items:
allOf:
- type: object
required:
- id
- accountId
- accountNumber
- accountTitle
- accountStatus
- postedDate
- effectiveDate
- branchId
- costCenter
- description
- debitCredit
- amount
properties:
id:
type: string
format: uuid
description: The id the transaction.
accountId:
allOf:
- type: string
format: uuid
description: The unique general ledger account identifier.
nullable: false
description: The GL account to send the transaction set to.
accountNumber:
type: string
example: '1234567890'
description: The gl account number of the account mapped to the totaling group
nullable: false
accountTitle:
type: string
example: Commercial Loans
description: The gl account title of the account.
nullable: false
accountStatus:
type: string
description: The status of the GL account.
nullable: false
enum:
- Open
- Closed
- Control
- Locked
postedDate:
type: string
format: date-time
example: '2024-01-01T00:00:00Z'
nullable: false
description: The date when the transaction was posted.
effectiveDate:
type: string
format: date
example: '2024-01-01'
nullable: false
description: If set, the transactions in the set will be applied to the new effectiveDate, otherwise it will default to today's date.
branchId:
type: string
description: Used to identify the physical or non-physical location an account belongs to. The maximum number of characters allowed is 36.
nullable: false
costCenter:
type: string
description: Used to identify a part of the organization such as a department, team, or project. The maximum number of characters allowed is 36.
nullable: false
description:
type: string
description: Description contained within the transaction.
nullable: false
debitCredit:
allOf:
- enum:
- Debit
- Credit
type: string
description: Defines if the transaction debits or credits the account.
nullable: false
amount:
type: object
properties:
value:
type: string
description: This defines the amount value.
nullable: false
currencyType:
type: string
description: The ISO 4217 three character currency type. USD is the default value.
nullable: true
default: usd
additionalProperties: false
nullable: false
additionalProperties: false
text/csv:
schema:
type: string
format: binary
'400':
description: The server could not understand the request due to an invalid 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.
'404':
description: The server can not find the requested resource. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 to hide the existence of a resource from an unauthorized client.
'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
/a/api/general-ledger/v1/{InstitutionUniversalId}/transaction-sets/{Id}/reversal:
post:
operationId: TransactionSetReversal
tags:
- TransactionSets
summary: Api to reverse a transactionSet
description: API to submit a reverse Transaction set with an effective date
parameters:
- name: InstitutionUniversalId
in: path
description: A unique identifier to establish the identity of an Institution/Environment/Brand combination
required: true
schema:
type: string
- name: Id
in: path
required: true
description: The unique identifier for a Transaction Set
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
type: object
properties:
effectiveDate:
type: string
format: date
example: '2024-01-01'
nullable: true
description: If set, the transactions in the set will be applied to the new effectiveDate.
additionalProperties: false
responses:
'201':
description: Transaction set reversed
content:
application/json:
schema:
type: object
required:
- transactionSetId
properties:
transactionSetId:
type: string
format: uuid
description: The transaction set id the transaction is tied to.
nullable: false
additionalProperties: false
'400':
description: The request body is invalid. See the response body for more information.
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:
badRequest:
summary: Validation errors
value:
type: general-ledger/request-constraint-violation
title: Bad request
details:
- Effective date must be a valid date
- Effective date must be less than or equal to the current date
- Prior month effective date limit exceeded
accountNotPostable:
summary: Account not postable
value:
type: general-ledger/account-not-postable
title: Account not postable
details:
- The account is closed and cannot be posted to
accountIsControlOrLocked:
summary: Account status is control or locked
value:
type: general-ledger/control-locked-account-reverse-transaction-not-allowed
title: Transaction set reversal with control or locked account not allowed
details:
- A GL Account with account number {0} has a status of {1} and the transaction set cannot be reversed
'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.
'404':
description: The server can not find the requested resource. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 to hide the existence of a resource from an unauthorized client.
'409':
description: Deadlock detected
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:
deadLock:
summary: Deadlock detected
value:
type: general-ledger/dead-lock
title: Deadlock detected
details:
- The request was cancelled due to another updated already in progress
'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
/a/api/general-ledger/v1/{InstitutionUniversalId}/transaction-sets/{Id}/transactions/{TransactionId}:
patch:
operationId: TransactionUpdate
tags:
- TransactionSets
summary: API to update a transaction
description: Allows an institution to update a transaction's description
parameters:
- name: InstitutionUniversalId
in: path
description: A unique identifier to establish the identity of an Institution/Environment/Brand combination
required: true
schema:
type: string
- name: Id
in: path
required: true
description: The unique identifier for a Transaction Set
schema:
type: string
format: uuid
- name: TransactionId
in: path
required: true
description: The unique identifier for a Transaction
schema:
type: string
format: uuid
requestBody:
content:
application/merge-patch+json:
schema:
type: object
required:
- description
properties:
description:
type: string
description: Description contained within the transaction.
nullable: false
additionalProperties: false
responses:
'204':
description: Transaction Updated
'400':
description: The request body is invalid. See the response body for more information.
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:
badRequest:
summary: Validation errors
value:
type: general-ledger/request-constraint-violation
title: Bad Request
details:
- The description must be less than or equal to 100 characters
'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.
'404':
description: The server can not find the requested resource. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 to hide the existence of a resource from an unauthorized client.
'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 Thu Feb 26 2026