Account/Routing
ACH
>
Account/Routing
openapi: 3.0.3
info:
title: Automated Clearing House (ACH) API - Account/Routing
version: v1
description: |
Automated Clearing House (JHPlatform ACH).
contact:
name: Platform Services - ACH
url: https://www.jackhenry.com/
email: DC-Operations@jackhenry.com
servers:
- url: https://{API_ENDPOINT}
variables:
API_ENDPOINT:
default: digital.garden-fi.com
security: []
tags:
- name: Account/Routing
description: API operations for State Tax Account and Routing Number management
paths:
/a/api/jh-ach/v1/{InstitutionUniversalId}/state-tax-accounts:
post:
operationId: UploadStateTaxAccounts
tags:
- Account/Routing
summary: Upload account/routing numbers file for an institution
description: |
Enterprise users can upload a CSV or XLS file containing account and routing numbers for state tax payments.
The file should include state name (full name or abbreviation), account number, and routing number.
Any new upload will replace all existing account/routing numbers for the institution.
**File Requirements:**
- File types: CSV or XLS only (XLSX not supported)
- Optional header row (automatically detected and skipped)
- Three columns required: State Name, Account Number, Routing Number
- State Name: Full name (e.g., "Missouri") or abbreviation (e.g., "MO")
- Account Number: Alphanumeric value, maximum 17 characters
- Routing Number: Exactly 9 digits
**Validation:**
- All rows must be valid (any validation error rejects entire file)
- State name must be a valid US state
- No duplicate state entries within file
- Routing number must be exactly 9 digits
- Account number must be alphanumeric (1-17 characters)
- Maximum file size: 10MB
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
description: State tax account/routing file upload
content:
multipart/form-data:
schema:
type: object
required:
- file
properties:
file:
type: string
format: binary
description: |
CSV or XLS file containing state tax account/routing numbers. May include optional header row.
Columns: State Name (full or abbreviated), Account Number (alphanumeric, max 17 chars), Routing Number (9 digits).
File name is extracted from the uploaded file header.
responses:
'200':
description: OK - File successfully uploaded and processed
content:
text/plain:
schema:
type: string
example: File successfully uploaded.
'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
get:
operationId: GetStateTaxAccounts
tags:
- Account/Routing
summary: Retrieve account/routing numbers for state tax payments
description: |
Retrieve all account and routing numbers configured for state tax payments for an institution.
Returns an empty array if no accounts have been configured (200 OK with empty array, not a 404).
Both enterprise and consumer users can access this endpoint to retrieve the configured account information.
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: OK - Returns account/routing numbers (empty array if none configured)
content:
application/json:
schema:
type: object
required:
- stateTaxAccounts
properties:
stateTaxAccounts:
type: array
description: List of account/routing numbers by state (empty array if none exist)
items:
type: object
required:
- state
- code
- accountNumber
- routingNumber
properties:
state:
type: string
maxLength: 50
description: Full name of the state
example: Missouri
code:
type: string
minLength: 2
maxLength: 2
description: Two-letter state abbreviation
example: MO
accountNumber:
type: string
minLength: 1
maxLength: 17
pattern: ^[a-zA-Z0-9]{1,17}$
description: Account number (alphanumeric, max 17 characters)
example: '123123'
routingNumber:
type: string
minLength: 9
maxLength: 9
pattern: ^\d{9}$
description: Routing number (exactly 9 digits)
example: '123456789'
'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.
'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 Apr 9 2026