General Ledger
>
API Reference
>
v1
>
Totaling Groups
Overview
Totaling Groups organize GL accounts into hierarchies for reports and dashboards. They can contain GL accounts and/or other totaling groups. Each GL account or totaling group can be assigned to only one parent totaling group.
Example: A “Total Cards” group containing card-related Asset accounts can be mapped under the system-defined “TotalAsset” group.
Update Behavior: Last saved wins. Updates override existing data without warnings. Updating a deleted totaling group returns an error.
System-defined groups organize accounts by type and automatically include unmapped items at the bottom of each group. For precise control over presentation order, explicitly map all totaling groups.
Root: Top-level group containing all accounts and groups
LiabilityAndEquity: Combines Total Liability and Total Equity
NetProfit: Combines Total Income and Total Expense
TotalAsset: All Asset-type accounts and groups
TotalLiability: All Liability-type accounts and groups
TotalEquity: All Equity-type accounts and groups, plus Net Profit
TotalIncome: All Income-type accounts and groups
TotalExpense: All Expense-type accounts and groups
Current Balance
Retrieve the rolled-up balance of a totaling group and its mappings. If the group contains child totaling groups, their balances are recursively queried and aggregated for financial reporting.
openapi: 3.0.3
info:
title: General Ledger API - TotalingGroups
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: TotalingGroups
description: APIs for institution specific totaling groups
paths:
/a/api/general-ledger/v1/{InstitutionUniversalId}/totaling-groups:
post:
operationId: TotalingGroupAdd
tags:
- TotalingGroups
summary: Create a General Ledger Totaling Group.
description: API to post a GL Totaling Group
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:
description: The General Ledger Totaling Group to be created.
content:
application/json:
schema:
type: object
required:
- title
- accountType
properties:
title:
type: string
nullable: false
example: Total Assets
description:
type: string
nullable: true
example: Contains all asset account types
accountType:
enum:
- Asset
- Equity
- Expense
- Income
- Liability
- TotalAsset
- TotalEquity
- TotalExpense
- TotalIncome
- TotalLiability
- NetProfit
- LiabilityAndEquity
- Root
type: string
nullable: false
currencyType:
type: string
description: The type of currency of the GL account.
nullable: true
default: USD
mappings:
type: array
items:
type: object
required:
- childId
- mappingType
properties:
childId:
type: string
format: uuid
nullable: false
mappingType:
nullable: false
enum:
- TotalingGroup
- Account
type: string
additionalProperties: false
nullable: true
additionalProperties: false
responses:
'201':
description: Created
content:
application/json:
schema:
type: object
required:
- id
properties:
id:
type: string
format: uuid
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:
- Invalid or missing title
- The title must be less than or equal to 40 characters
- The description must be less than or equal to 100 characters
- Mapping Type must be either TotalingGroup or Account
- Account Type must be either Asset, Liability, Equity, Income, or Expense
- Currency Type must be USD
- The totaling group contains duplicate mappings
duplicateTotalingGroupTitle:
summary: Duplicate totaling group title
value:
type: general-ledger/totaling-group-duplicate-account-mapping
title: Duplicate account mapping
details:
- A totaling group with these accounts already exists
duplicateTotalingGroupMapping:
summary: Duplicate totaling group mapping
value:
type: general-ledger/totaling-group-duplicate-totaling-group-mapping
title: Duplicate totaling group mapping
details:
- A totaling group with these totaling groups already exists
totalingGroupAccountMappingNotFound:
summary: Account in mapping not found
value:
type: general-ledger/totaling-group-mapping-account-not-found
title: Some accounts defined in the mappings were not found
details:
- Every account in the mappings must exist
totalingGroupTotalingGroupMappingNotFound:
summary: Totaling group in mapping not found
value:
type: general-ledger/totaling-group-mapping-totaling-group-not-found
title: Some totaling groups defined in the mappings were not found
details:
- Every totaling group in the mappings must exist
totalingGroupAssignedToSelf:
summary: Totaling group assigned to self
value:
type: general-ledger/totaling-group-assigned-to-self
title: Totaling group mapped to self
details:
- The totaling group cannot be assigned to itself
totalingGroupMappingAssignedToSelf:
summary: Totaling group mapping assigned to self
value:
type: general-ledger/totaling-group-mapping-assigned-to-self
title: Totaling group mapping contains a reference to itself
details:
- One of the mappings contains as reference to this totaling group
systemDefinedTotalingGroupAlreadyExists:
summary: System defined totaling group already exists
value:
type: general-ledger/system-defined-totaling-group-already-exists
title: Duplicate system defined totaling group
details:
- A totaling group with this account type already exists
'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
get:
operationId: TotalingGroupReadAll
tags:
- TotalingGroups
summary: Read all General Ledger Totaling Groups.
description: API to read all General Ledger Totaling Groups.
parameters:
- name: InstitutionUniversalId
in: path
description: A unique identifier to establish the identity of an Institution/Environment/Brand combination
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
required:
- results
- paging
properties:
results:
type: array
items:
type: object
required:
- id
- title
- description
- accountType
- currencyType
properties:
id:
type: string
format: uuid
nullable: false
title:
type: string
nullable: false
description:
type: string
nullable: false
accountType:
enum:
- Asset
- Equity
- Expense
- Income
- Liability
- TotalAsset
- TotalEquity
- TotalExpense
- TotalIncome
- TotalLiability
- NetProfit
- LiabilityAndEquity
- Root
type: string
nullable: false
currencyType:
type: string
description: The type of currency of the GL account.
nullable: true
default: USD
additionalProperties: false
nullable: false
paging:
nullable: false
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
additionalProperties: false
'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}/totaling-groups/{Id}:
get:
operationId: TotalingGroupRead
tags:
- TotalingGroups
summary: Read a General Ledger Totaling Group.
description: API to read a General Ledger Totaling Group.
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 totaling group identifier.
schema:
type: string
format: uuid
nullable: false
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
required:
- id
- title
- description
- accountType
- currencyType
- mappings
properties:
id:
type: string
format: uuid
nullable: false
title:
type: string
nullable: false
example: Total Assets
description:
type: string
nullable: false
example: Contains all asset account types
accountType:
enum:
- Asset
- Equity
- Expense
- Income
- Liability
- TotalAsset
- TotalEquity
- TotalExpense
- TotalIncome
- TotalLiability
- NetProfit
- LiabilityAndEquity
- Root
type: string
nullable: false
currencyType:
type: string
description: The type of currency of the GL account.
nullable: true
default: USD
mappings:
type: array
items:
type: object
required:
- childId
- title
- mappingType
properties:
childId:
type: string
format: uuid
nullable: false
title:
type: string
nullable: false
accountNumber:
type: string
description: The gl account number of the account mapped to the totaling group
nullable: true
mappingType:
enum:
- TotalingGroup
- Account
type: string
nullable: false
additionalProperties: false
nullable: false
additionalProperties: false
'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
put:
operationId: TotalingGroupUpdate
tags:
- TotalingGroups
summary: Update a General Ledger Totaling Group.
description: API to update a General Ledger Totaling Group.
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 totaling group identifier.
schema:
type: string
format: uuid
nullable: false
requestBody:
description: The request.
content:
application/json:
schema:
type: object
required:
- title
properties:
title:
type: string
nullable: false
description:
type: string
nullable: true
mappings:
type: array
items:
type: object
required:
- childId
- mappingType
properties:
childId:
type: string
format: uuid
nullable: false
mappingType:
nullable: false
enum:
- TotalingGroup
- Account
type: string
additionalProperties: false
nullable: true
additionalProperties: false
responses:
'204':
description: Success
'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:
- Invalid or missing title
- The title must be less than or equal to 40 characters
- The description must be less than or equal to 100 characters
- Mapping Type must be either TotalingGroup or Account
- Account Type must be either Asset, Liability, Equity, Income, or Expense
- Currency Type must be USD
- The totaling group contains duplicate mappings
duplicateTotalingGroupTitle:
summary: Duplicate totaling group title
value:
type: general-ledger/totaling-group-duplicate-account-mapping
title: Duplicate account mapping
details:
- A totaling group with these accounts already exists
duplicateTotalingGroupMapping:
summary: Duplicate totaling group mapping
value:
type: general-ledger/totaling-group-duplicate-totaling-group-mapping
title: Duplicate totaling group mapping
details:
- A totaling group with these totaling groups already exists
totalingGroupAccountMappingNotFound:
summary: Account in mapping not found
value:
type: general-ledger/totaling-group-mapping-account-not-found
title: Some accounts defined in the mappings were not found
details:
- Every account in the mappings must exist
totalingGroupTotalingGroupMappingNotFound:
summary: Totaling group in mapping not found
value:
type: general-ledger/totaling-group-mapping-totaling-group-not-found
title: Some totaling groups defined in the mappings were not found
details:
- Every totaling group in the mappings must exist
totalingGroupAssignedToSelf:
summary: Totaling group assigned to self
value:
type: general-ledger/totaling-group-assigned-to-self
title: Totaling group mapped to self
details:
- The totaling group cannot be assigned to itself
totalingGroupMappingAssignedToSelf:
summary: Totaling group mapping assigned to self
value:
type: general-ledger/totaling-group-mapping-assigned-to-self
title: Totaling group mapping contains a reference to itself
details:
- One of the mappings contains as reference to this totaling group
systemDefinedTotalingGroupAlreadyExists:
summary: System defined totaling group already exists
value:
type: general-ledger/system-defined-totaling-group-already-exists
title: Duplicate system defined totaling group
details:
- A totaling group with this account type already exists
'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
delete:
operationId: TotalingGroupDelete
tags:
- TotalingGroups
summary: Delete a General Ledger Totaling Group.
description: API to delete General Ledger Totaling Group.
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 totaling group identifier.
schema:
type: string
format: uuid
nullable: false
responses:
'204':
description: Success
'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:
systemDefinedTotalingGroupCannotBeDeleted:
summary: System defined totaling group cannot be deleted
value:
type: general-ledger/system-defined-totaling-group-cannot-be-deleted
title: System defined totaling group cannot be deleted
details:
- System defined totaling groups can be renamed but not deleted
- Deleting a system defined totaling group would cause reporting to be unbalanced
'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}/totaling-groups/{Id}/balance:
get:
operationId: TotalingGroupReadBalance
tags:
- TotalingGroups
summary: Read a General Ledger Totaling Group's balance.
description: API to read a General Ledger Totaling Group's balance and their mappings' balances.
parameters:
- name: Id
in: path
required: true
description: The unique totaling group identifier.
schema:
type: string
format: uuid
nullable: false
- name: RunDate
in: query
required: false
description: Results will be returned as if the query for balances was run on the date provided. Defaults to the current UTC time.
schema:
type: string
format: date
nullable: true
- name: InstitutionUniversalId
in: path
description: A unique identifier to establish the identity of an Institution/Environment/Brand combination
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
required:
- id
- balance
- mappings
properties:
id:
type: string
format: uuid
nullable: false
balance:
nullable: false
type: object
properties:
value:
type: number
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
mappings:
type: array
items:
type: object
required:
- childId
- balance
properties:
childId:
type: string
format: uuid
nullable: false
balance:
nullable: false
type: object
properties:
value:
type: number
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
additionalProperties: false
nullable: false
additionalProperties: false
'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