ACH Inquiry

clock 4-minute read calender 2.1.2 | updated Jul. 08, 2026

Get the status for your ACH transactions

ACH Inquiry Endpoints

What you can doEndpoint
Health checkget /accounts/transactions/v1/healthCheck
Search for ACH transactionspost /accounts/transactions/v1/ach/list
Get details about an ACH transaction with a PAR numberget /accounts/transactions/v1/ach/detail/{parNumber}
Get details for a settled ACH transactionget /accounts/transactions/v1/ach/settled/{settlementTransactionId}

Before you begin

To test or use any KeyBank API, you must be fully onboarded. This means having the right certificates, user credentials, and specific permissions for the API you're accessing. 

Need help getting started? Check out our Get started section for everything you need to know.

Account number

Use the financial institution account number (accountNumber) to look up related ACH transactions. This number cannot be more than 16 digits. 

PAR number

When looking for details about an ACH transaction, use the Payment Assigned Reference (PAR) number. This is used to identify the transaction without exposing any sensitive consumer identification information. The /ach/list request generates a PAR number you can use in the /ach/detail request.

Learn more about how we use certain identifiers with ACH in our ACH User Guide.

Settlement transaction ID

To retrieve detailed transaction-level data (including batch item) for settled or returned ACH transactions, use the settlementTransactionId. This ID is returned as part of the response payloads from:

  • ACH Inquiry endpoints - the /ach/list or /ach/detail return the settlementTransactionId
  • Commercial Accounts Reporting API endpoints - the transactionId can be used as the settlement ID.

Interpret the response

ACH Inquiry response return two key fields with each response if it is for account information or transaction details: transaction type (transactionType) and status (transactionStatus).

Transaction type indicates if the transaction is a debit (collecting funds) or a credit (sending funds). The transaction code returns a two-digit number that indicates if it is a credit or debit for a checkings, savings, or loan account. Go to our Decoder to get additional details. 

Transaction status displays the status of the transaction if it is in progress (COLLECTED), processed (SETTLED), or returned (RETURNED).

The consolidation settlement type affects what information is returned. 

  • For clients with a non-consolidated settlement, you can receive information about collected, settled, and returned transactions.
  • For clients with a consolidated settlement, you will only receive collected and returned transactions. SETTLED is not an available status for consolidated settlement.

get /accounts/transactions/v1/healthCheck

Check the health of an API service and verify you can successfully connect. A bearer token is required.

Request example

curl "https://partner-api-qv.key.com/accounts/transactions/v1/healthCheck"
--header 'Bearer testZcKJDWnwDWmmf9qah6PJvPy8'
NAMETYPEDESCRIPTION
StatusstringStatus of the health check response.
SourcestringOrigin of the system response can be 'Gateway' or 'Roundtrip'. Roundtrip returns a response from the farthest system involved.
TimestampstringDate (YYYY-MM-DD) and time (HH:MM:SS) of response from the API service.
ClientIpstringClient IP address the gateway receives from the request.
X-Forwarded-ForstringSequence of IP addresses for systems between the client and the gateway.

Response example (200)

copylink
{
    "Status": "Ok",
    "Source": "Roundtrip",
    "Timestamp": "2022-09-15T04:49:03",
    "ClientIp": "192.0.2.1",
    "X-Forwarded-For": "[192.0.2.1]"
}

post /accounts/transactions/v1/ach/list

Get a list of ACH transaction based on the on your search criteria. 

NAMETYPEDESCRIPTION
accountNumberrequiredstringThe bank account number. This field cannot exceed 16 characters.
fromDaterequiredstringStart date for the date range. This date must be the current date or prior to the current date. Transaction data can be recalled within 180 days of the current date. Format: YYYY-MM-DD
toDaterequiredstringEnd date for the date range. This date can be the current day or a later date from the start date (fromDate). The date range should not be longer than 31 days. Format: YYYY-MM-DD"
minimumAmountstringThe minimum dollar amount of the transaction. This amount must be less than or equal to the maximum amount. Leave blank or enter zero for no minimum amount.
maximumAmountstringThe maximum dollar amount of the transaction. This amount must be greater than or equal to the minimum amount. Leave blank to retrieve all amounts. This amount cannot exceed one billion dollars.
traceNumberstringThe unique number for the transaction provided by the originator.
pageNumberstringThe number of the page being viewed. This number must be greater than or equal to 1.
pageSizestringThe total number of pages returned. This number must be greater than or equal to 1 and cannot exceed 1000.

Request example

copylink
{
    "accountNumber": "3123456789",
    "fromDate": "2024-02-01",
    "toDate": "2024-02-01",
    "minimumAmount": 100,
    "maximumAmount": 75020.5,
    "traceNumber": "043000090716192",
    "pageNumber": 1,
    "pageSize": 150
}
NAMETYPEDESCRIPTION
transactionsarrayAchListTransaction
metadataobjectMetadata

Response example (200)

copylink
{
    "transactions": [
        {
            "parNumber": "22018007665985",
            "transactionStatus": "COLLECTED",
            "traceNumber": "043000090716192",
            "transactionAmount": 10.01,
            "collectionDate": "2021-03-07",
            "settlementDate": "2021-03-08",
            "transactionCode": "22",
            "transactionDescription": "DEPOSIT",
            "authorizedCustomerName": "TEST CUSTOMER1",
            "standardEntryClassCode": "CCD",
            "receivingAccount": {
                "accountNumber": "123456789012"
            },
            "receivingParty": {
                "customerIdentificationNumber": "099999999",
                "companyName": "MERCHANT"
            },
            "originatingAccount": {
                "accountNumber": "3123456789"
            },
            "originatingParty": {
                "customerIdentificationNumber": "1234567",
                "companyName": "COMPANY NAME 1"
            },
            "returnDate": "2024-02-01",
            "returnReasonCode": "R02",
            "returnReasonDescription": "Account Closed",
            "addendaCount": 1,
            "notificationOfChangeAddendaCount": 0,
            "internationalAddendaCount": 0,
            "settlementAmount": 123.45,
            "settlementTransactionId": "23218003015954"
        }
    ],
    "metadata": {
        "page": {
            "pageNumber": 1,
            "pageSize": 25,
            "totalPages": 3,
            "totalRecords": 75,
            "lastPage": false
        }
    }
}
NAMETYPEDESCRIPTION
ErrorMessagestringA human-readable message that describes the type or source of the error.
TransactionIdstringA unique transaction ID returned with the response, useful for traceability.
X-CorrelationIdstringA unique identifier generated for each transaction that remains with the transaction through the chain of API operations.
TransactionTimestringDate and time the error occurred.
Api-UrlstringThe API URL path of the call that generated the response.
ServiceErroroneOfServiceErrorData ConnectError

Response example (400)

copylink
{
    "ErrorMessage": "Error received from backend service",
    "TransactionId": "84293235-5d2c-42ba-afc3-a5d4afc5f88e27097",
    "X-CorrelationId": "929618f2-6163-bf73-51b0-6c54a8533c74",
    "TransactionTime": "2021-06-11T16:31:34.041Z",
    "Api-Url": "https://partner-api-qv.key.com/accounts/transactions/v1/ach/list",
    "ServiceError": {
        "metadata": {
            "messages": [
                {
                    "code": "AI-List-400-fromDate-105",
                    "message": "fromDate format must be YYYY-MM-DD"
                },
                {
                    "code": "AI-List-400-fromDate-117",
                    "message": "fromDate must be a valid date"
                }
            ]
        }
    }
}
NAMETYPEDESCRIPTION
ErrorMessagestringA human-readable message that describes the type or source of the error.
TransactionIdstringA unique transaction ID returned with the response, useful for traceability.
X-CorrelationIdstringA unique identifier generated for each transaction that remains with the transaction through the chain of API operations.
TransactionTimestringDate and time the error occurred.
Api-UrlstringThe API URL path of the call that generated the response.
ServiceErroroneOfServiceErrorData ConnectError

Response example (403)

copylink
{
    "ErrorMessage": "Error received from backend service",
    "TransactionId": "84293235-5d2c-42ba-afc3-a5d4afc5f88e27097",
    "X-CorrelationId": "929618f2-6163-bf73-51b0-6c54a8533c74",
    "TransactionTime": "2021-06-11T16:31:34.041Z",
    "Api-Url": "https://partner-api-qv.key.com/accounts/transactions/v1/ach/list",
    "ServiceError": {
        "metadata": {
            "messages": [
                {
                    "code": "403-Forbidden",
                    "message": "Entitlements Validation Failed"
                }
            ]
        }
    }
}
NAMETYPEDESCRIPTION
ErrorMessagestringA human-readable message that describes the type or source of the error.
TransactionIdstringA unique transaction ID returned with the response, useful for traceability.
X-CorrelationIdstringA unique identifier generated for each transaction that remains with the transaction through the chain of API operations.
TransactionTimestringDate and time the error occurred.
Api-UrlstringThe API URL path of the call that generated the response.
ServiceErroroneOfServiceErrorData ConnectError

Response example (500)

copylink
{
    "ErrorMessage": "Error received from backend",
    "TransactionId": "84293235-5d2c-42ba-afc3-a5d4afc5f88e27097",
    "TransactionTime": "2021-06-11T16:31:34.041Z",
    "X-CorrelationId": "929618f2-6163-bf73-51b0-6c54a8533c74",
    "Api-Url": "https://partner-api-qv.key.com/accounts/transactions/v1/ach/list",
    "ServiceError": {
        "metadata": {
            "messages": [
                {
                    "code": "500-InternalServerError",
                    "message": "An unexpected error occurred.  Please try again later or contact support if the problem persists."
                }
            ]
        }
    }
}

get /accounts/transactions/v1/ach/detail/{parNumber}

Use the parNumber to retrieve information about an ACH transaction. The parNumber can be obtained from the ACH List endpoint.

path FIELDTYPEDESCRIPTION
parNumberrequiredstringThe unique parNumber assigned to the transaction by the ACH processor.

Request example

curl --location: '{host}/accounts/transactions/v1/ach/detail/22018007665985'
--header 'Accept: application/json'
--header 'X-CorrelationId: 1234567890abcdef'
--header 'Authorization: Bearer testZcKJDWnwDWmmf9qah6PJvPy8'
NAMETYPEDESCRIPTION
parNumberstringThe unique parNumber assigned to the transaction by the ACH processor.
transactionStatusstringThe status of the ACH transaction. Valid values: COLLECTED, RETURNED, SETTLED
traceNumberstringThe trace number provided in the detail record of the originators Nacha file.
transactionAmountnumberThe dollar amount of the transaction.
collectionDatestringThe date the transaction collection occurred. Format: YYYY-MM-DD
settlementDatestringThe date the transaction settlement occurred. Format: YYYY-MM-DD
transactionCodestringTwo-digit code identifying the account type at the receiving financial institution. Defined by Nacha rules to indicate the type of transaction based on the account.
transactionCodeDescriptionstringDescription for the transaction code.
transactionDescriptionstringCompany Entry Description provided by the originator. Defined by Nacha specifications as a batch level description.
authorizedCustomerNamestringAuthorized customer name
standardEntryClassCodestringThe three-digit Standard Entry Class code based on Nacha rules.
standardEntryClassDescriptionstringThe description for the Nacha SEC code.
receivingAccountobjectAccountDetail
receivingPartyobjectPartyDetail
originatingAccountobjectAccountDetail
originatingPartyobjectPartyDetail
returnDatestringDate of the returned transaction to the ACH system. Format: YYYY-MM-DD
returnReasonCodestringThe code associated with the reason for returning the ACH transaction. The code is the letter 'R' for reason followed by a two-digit numeric code. Format: R00
returnReasonDescriptionstringDescription as to why the ACH transaction is returned.
addendaCountintegerCount of addenda records.
notificationOfChangeAddendaCountintegerCount of change notifications records.
internationalAddendaCountintegerCount of international addenda records.
customDatastringThe values for custom data is defined by the client. This free-form text field can contain up to 500 alphanumeric characters. Custom information stays with the transaction through its lifecycle.
checkSerialNumberstringSerial number for the check converted to an ACH transaction.
transactionDirectionstringIndicates the direction of the transaction. Valid values: ORIGINATING ITEM, RECEIVING ITEM
settlementAmountnumberThe dollar amount of the settlement.
settlementTransactionIdstringThe unique settlementTransactionId of the settled batch tied to the transaction.
addendaoptionalarrayAddendum
notificationOfChangeoptionalarrayNotificationOfChange

Response example (200)

copylink
{
    "transactionStatus": "COLLECTED",
    "traceNumber": "043000090716192",
    "parNumber": "22018007665985",
    "transactionAmount": 10.01,
    "settlementDate": "2021-03-08",
    "collectionDate": "2021-03-07",
    "transactionCode": "22",
    "transactionDescription": "DEPOSIT",
    "authorizedCustomerName": "TEST CUSTOMER1",
    "standardEntryClassCode": "CCD",
    "receivingAccount": {
        "accountNumber": "123456789012",
        "routingNumber": "123456789",
        "bankNumber": "0000"
    },
    "receivingParty": {
        "customerIdentificationNumber": "099999999",
        "companyName": "MERCHANT",
        "customerName": "TEST MERCHANT"
    },
    "originatingAccount": {
        "accountNumber": "3123456789",
        "routingNumber": "1234567890",
        "bankNumber": "0000"
    },
    "originatingParty": {
        "customerIdentificationNumber": "1234567",
        "companyName": "COMPANY NAME 1",
        "customerName": "CUSTOMER NAME 1"
    },
    "returnReasonCode": "R02",
    "returnReasonDescription": "Account Closed",
    "returnDate": "2024-02-01",
    "addendaCount": 1,
    "notificationOfChangeAddendaCount": 0,
    "internationalAddendaCount": 0,
    "settlementAmount": 123.45,
    "settlementTransactionId": "23218003015954",
    "customData": "merchant:status",
    "checkSerialNumber": "4345",
    "transactionDirection": "Receiving Item",
    "standardEntryClassDescription": "Cash Concentration or Disbursement",
    "transactionCodeDescription": "Automated Deposit",
    "addenda": [
        {
            "sequenceNumber": 1,
            "entryDetailSequenceNumber": "188",
            "paymentRelatedInformation": "Addenda Record (Applies to CCD, CTX, PPD, and WEB entries)"
        }
    ],
    "notificationOfChange": [
        {
            "changeCode": "C02",
            "changeDescription": "Incorrect transit/routing number",
            "correctedData": "1234567890"
        }
    ]
}
NAMETYPEDESCRIPTION
ErrorMessagestringA human-readable message that describes the type or source of the error.
TransactionIdstringA unique transaction ID returned with the response, useful for traceability.
X-CorrelationIdstringA unique identifier generated for each transaction that remains with the transaction through the chain of API operations.
TransactionTimestringDate and time the error occurred.
Api-UrlstringThe API URL path of the call that generated the response.
ServiceErroroneOfServiceErrorData ConnectError

Response example (404)

copylink
{
    "ErrorMessage": "Error received from backend service",
    "TransactionId": "84293235-5d2c-42ba-afc3-a5d4afc5f88e27097",
    "X-CorrelationId": "929618f2-6163-bf73-51b0-6c54a8533c74",
    "TransactionTime": "2021-06-11T16:31:34.041Z",
    "Api-Url": "https://partner-api-qv.key.com/accounts/transactions/v1/ach/detail/22018007665985",
    "ServiceError": {
        "metadata": {
            "messages": [
                {
                    "code": "AI-Detail-404-no-records-100",
                    "message": "Record Not Found"
                }
            ]
        }
    }
}
NAMETYPEDESCRIPTION
ErrorMessagestringA human-readable message that describes the type or source of the error.
TransactionIdstringA unique transaction ID returned with the response, useful for traceability.
X-CorrelationIdstringA unique identifier generated for each transaction that remains with the transaction through the chain of API operations.
TransactionTimestringDate and time the error occurred.
Api-UrlstringThe API URL path of the call that generated the response.
ServiceErroroneOfServiceErrorData ConnectError

Response example (500)

copylink
{
    "ErrorMessage": "Error received from backend",
    "TransactionId": "84293235-5d2c-42ba-afc3-a5d4afc5f88e27097",
    "TransactionTime": "2021-06-11T16:31:34.041Z",
    "X-CorrelationId": "929618f2-6163-bf73-51b0-6c54a8533c74",
    "Api-Url": "https://partner-api-qv.key.com/accounts/transactions/v1/ach/detail/22018007665985",
    "ServiceError": {
        "metadata": {
            "messages": [
                {
                    "code": "500-InternalServerError",
                    "message": "An unexpected error occurred.  Please try again later or contact support if the problem persists."
                }
            ]
        }
    }
}

get /accounts/transactions/v1/ach/settled/{settlementTransactionId}

Search for ACH batch details of transactions that have posted to the KeyBank account where the status is settled or returned.

path FIELDTYPEDESCRIPTION
settlementTransactionIdrequiredstringThe transaction ID that is assigned during settlement. This can be obtained from the Commercial Accounting API.
query FIELDTYPEDESCRIPTION
pageNumberoptionalintegerThe number of the page being viewed. This number must be greater than or equal to 1.
pageSizeoptionalintegerThe number of records per page. Must be between 1 and 1000.

Request example

curl --location: '{host}/accounts/transactions/v1/ach/settled/23218003015954?pageNumber=1&pageSize=150'
--header 'Accept: application/json'
--header 'X-CorrelationId: 1234567890abcdef'
--header 'Authorization: Bearer testZcKJDWnwDWmmf9qah6PJvPy8'
NAMETYPEDESCRIPTION
transactionsarrayAchSettledTransaction
metadataobjectMetadata

Response example (200)

copylink
{
  "transactions": [
    {
      "parNumber": "22018007665985",
      "transactionStatus": "SETTLED",
      "traceNumber": "043000090716192",
      "transactionAmount": 10.01,
      "collectionDate": "2021-03-07",
      "settlementDate": "2021-03-08",
      "transactionCode": "22",
      "transactionDescription": "DEPOSIT",
      "authorizedCustomerName": "TEST CUSTOMER1",
      "standardEntryClassCode": "CCD",
      "receivingAccount": {
        "accountNumber": "123456789012"
      },
      "receivingParty": {
        "customerIdentificationNumber": "099999999",
        "companyName": "MERCHANT"
      },
      "originatingAccount": {
        "accountNumber": "3123456789"
      },
      "originatingParty": {
        "customerIdentificationNumber": "1234567",
        "companyName": "COMPANY NAME 1"
      },
      "settlementAmount": 123.45,
      "settlementTransactionId": "23218003015954"
    }
  ],
  "metadata": {
    "page": {
      "pageNumber": 1,
      "pageSize": 10,
      "totalPages": 3,
      "totalRecords": 28,
      "lastPage": false
    }
  }
}
NAMETYPEDESCRIPTION
ErrorMessagestringA human-readable message that describes the type or source of the error.
TransactionIdstringA unique transaction ID returned with the response, useful for traceability.
X-CorrelationIdstringA unique identifier generated for each transaction that remains with the transaction through the chain of API operations.
TransactionTimestringDate and time the error occurred.
Api-UrlstringThe API URL path of the call that generated the response.
ServiceErroroneOfServiceErrorData ConnectError

Response example (400)

copylink
{
    "ErrorMessage": "Error received from backend service",
    "TransactionId": "84293235-5d2c-42ba-afc3-a5d4afc5f88e27097",
    "X-CorrelationId": "929618f2-6163-bf73-51b0-6c54a8533c74",
    "TransactionTime": "2021-06-11T16:31:34.041Z",
    "Api-Url": "https://partner-api-qv.key.com/accounts/transactions/v1/ach/list",
    "ServiceError": {
        "metadata": {
            "messages": [
                {
                    "code": "AI-List-400-fromDate-105",
                    "message": "fromDate format must be YYYY-MM-DD"
                },
                {
                    "code": "AI-List-400-fromDate-117",
                    "message": "fromDate must be a valid date"
                }
            ]
        }
    }
}
NAMETYPEDESCRIPTION
ErrorMessagestringA human-readable message that describes the type or source of the error.
TransactionIdstringA unique transaction ID returned with the response, useful for traceability.
X-CorrelationIdstringA unique identifier generated for each transaction that remains with the transaction through the chain of API operations.
TransactionTimestringDate and time the error occurred.
Api-UrlstringThe API URL path of the call that generated the response.
ServiceErroroneOfServiceErrorData ConnectError

Response example (404)

copylink
{
    "ErrorMessage": "Error received from backend service",
    "TransactionId": "84293235-5d2c-42ba-afc3-a5d4afc5f88e27097",
    "X-CorrelationId": "929618f2-6163-bf73-51b0-6c54a8533c74",
    "TransactionTime": "2021-06-11T16:31:34.041Z",
    "Api-Url": "https://partner-api-qv.key.com/accounts/transactions/v1/ach/settled/22018007665985",
    "ServiceError": {
        "metadata": {
            "messages": [
                {
                    "code": "AI-Settled-404-no-records-100",
                    "message": "Record Not Found"
                }
            ]
        }
    }
}
NAMETYPEDESCRIPTION
ErrorMessagestringA human-readable message that describes the type or source of the error.
TransactionIdstringA unique transaction ID returned with the response, useful for traceability.
X-CorrelationIdstringA unique identifier generated for each transaction that remains with the transaction through the chain of API operations.
TransactionTimestringDate and time the error occurred.
Api-UrlstringThe API URL path of the call that generated the response.
ServiceErroroneOfServiceErrorData ConnectError

Response example (500)

copylink
{
    "ErrorMessage": "Error received from backend",
    "TransactionId": "84293235-5d2c-42ba-afc3-a5d4afc5f88e27097",
    "TransactionTime": "2021-06-11T16:31:34.041Z",
    "X-CorrelationId": "929618f2-6163-bf73-51b0-6c54a8533c74",
    "Api-Url": "https://partner-api-qv.key.com/accounts/transactions/v1/ach/settled/22018007665985",
    "ServiceError": {
        "metadata": {
            "messages": [
                {
                    "code": "500-InternalServerError",
                    "message": "An unexpected error occurred.  Please try again later or contact support if the problem persists."
                }
            ]
        }
    }
}
NAMETYPEDESCRIPTION
accountNumberstringBank account number.
NAMETYPEDESCRIPTION
accountNumberstringBank account number of the ACH originator or receiver.
bankNumberstringBank number associated with the account number.
routingNumberstringNine-digit routing number for the account provided in the original request.
NAMETYPEDESCRIPTION
parNumberstringThe unique parNumber assigned to the transaction by the ACH processor.
transactionStatusstringThe status of the ACH transaction. Valid values: COLLECTED, RETURNED, SETTLED
traceNumberstringThe trace number provided in the detail record of the originators Nacha file.
transactionAmountnumberThe dollar amount of the transaction.
collectionDatestringThe date the transaction collection occurred. Format: YYYY-MM-DD
settlementDatestringThe date the transaction settlement occurred. Format: YYYY-MM-DD
transactionCodestringTwo-digit code identifying the account type at the receiving financial institution. Defined by Nacha rules to indicate the type of transaction based on the account.
transactionDescriptionstringCompany Entry Description provided by the originator. Defined by Nacha specifications as a batch level description.
authorizedCustomerNamestringAuthorized customer name
standardEntryClassCodestringThe three-digit Standard Entry Class code based on Nacha rules.
returnDatestringDate of the returned transaction to the ACH system. Format: YYYY-MM-DD
returnReasonCodestringThe code associated with the reason for returning the ACH transaction. The code is the letter 'R' for reason followed by a two-digit numeric code. Format: R00
returnReasonDescriptionstringDescription as to why the ACH transaction is returned.
addendaCountintegerCount of addenda records.
notificationOfChangeAddendaCountintegerCount of change notifications records.
internationalAddendaCountintegerCount of international addenda records.
settlementAmountnumberThe dollar amount of the settlement.
settlementTransactionIdstringThe unique parNumber of the settlement batch tied to the transaction.
NAMETYPEDESCRIPTION
parNumberstringThe unique parNumber assigned to the transaction by the ACH processor.
transactionStatusstringThe status of the ACH transaction. Valid values: RETURNED, SETTLED
traceNumberstringThe trace number provided in the detail record of the originators Nacha file.
transactionAmountnumberThe dollar amount of the transaction.
collectionDatestringThe date the transaction collection occurred. Format: YYYY-MM-DD
settlementDatestringThe date the transaction settlement occurred. Format: YYYY-MM-DD
transactionCodestringTwo-digit code identifying the account type at the receiving financial institution. Defined by Nacha rules to indicate the type of transaction based on the account.
transactionDescriptionstringCompany Entry Description provided by the originator. Defined by Nacha specifications as a batch level description.
authorizedCustomerNamestringAuthorized customer name
standardEntryClassCodestringThe three-digit Standard Entry Class code based on Nacha rules.
returnDatestringDate of the returned transaction to the ACH system. Format: YYYY-MM-DD
returnReasonCodestringThe code associated with the reason for returning the ACH transaction. The code is the letter 'R' for reason followed by a two-digit numeric code. Format: R00
returnReasonDescriptionstringDescription as to why the ACH transaction is returned.
settlementAmountnumberThe dollar amount of the settlement.
settlementTransactionIdstringThe unique parNumber of the settlement batch tied to the transaction.
NAMETYPEDESCRIPTION
sequenceNumberintegerThe addenda record item number in order of sequence. Number cannot exceed 4 digits.
entryDetailSequenceNumberstringThe entry number in order of sequence. Number cannot exceed 7 digits.
paymentRelatedInformationstringThe related payment information from the addenda records. The maximum character limit is 255.
NAMETYPEDESCRIPTION
customerIdentificationNumberstringThe unique identification number associated with the customer.
companyNamestringThe name of the corporation or institution making the request.
NAMETYPEDESCRIPTION
customerIdentificationNumberstringThe unique identification number associated with the customer.
companyNamestringThe name of the corporation or institution making the request.
customerNamestringThe name of the customer.
NAMETYPEDESCRIPTION
changeCodestringThe three-character change code begins with the letter 'C'. This code is applied to all NOCs to indicate the information that is being changed.
changeDescriptionstringThe description associated with the change code.
correctedDatastringThe corrected data per the correction change code.
NAMETYPEDESCRIPTION
codestringStatic code assigned by the network or payment system.
messagestringA human-readable message associated with the code.
NAMETYPEDESCRIPTION
pageNumberintegerThe number of the page being viewed.
pageSizeintegerThe number of records per page.
totalPagesintegerThe total number of pages available.
totalRecordsintegerThe total number of transactions (records) available in the result set.
lastPagebooleanIndicates the last page of the total pages.
NAMETYPEDESCRIPTION
pageObjectPage
NAMETYPEDESCRIPTION
ErrorMessagestringA human-readable message that describes the type or source of the error.
TransactionIdstringA unique transaction ID returned with the response, useful for traceability.
X-CorrelationIdstringA unique identifier generated for each transaction that remains with the transaction through the chain of API operations.
TransactionTimestringDate and time the error occurred.
Api-UrlstringThe API URL path of the call that generated the response.
ServiceErroroneOfServiceErrorData ConnectError
NAMETYPEDESCRIPTION
metadataObjectErrorMetadata
NAMETYPEDESCRIPTION
ConnectErrorstringAPI connectivity error information, if available.
NAMETYPEDESCRIPTION
messagesoptionalarrayMessage

This API follows KeyBank standard error messaging, using the exception schema to provide error information. For more information about general errors, see Error handling.

Error responses are consistent across most endpoints and use one or more of the following HTTP status codes.

HTTP Status CodeSummaryAction
400

Invalid parameters

The required information needed for an accepted request is not present.

  • Check the required fields and that the values meet the format and input requirements.
  • For GET methods, you may need to include header information.
    • Try X-CorrelationId as a header in the request. This is an optional ID, but sometimes inclusion in the request allows the GET method to perform correctly.
    • Insert the Accept header with the application/json value to define the payload format.
403

Invalid entitlements

The credentials provided are incorrect or access to this resource is denied.

  • Make sure the bearer token has not expired.
  • Make sure to include the bearer token in each call.
404

No records found

No data was found based on the criteria provided

Confirm the main identifier used in the request is correct, whether that be the accountNumber, parNumber, or settlementTransactionId.
500

Network or database errors

This indicates a backend or system issue.

For backend issues, this typically requires investigation by KeyBank support. 
 

2.1.2

June 2026 | MID impact

  • New ACH settled endpoint released with related schemas - /accounts/transactions/v1/ach/settled/{settlementTransactionId}. Use the settlementTransactionId along with pagination controls to retrieve settlement or return details for ACH transactions.
  • Improved error messaging to be consistent across endpoints:
    • 400 for invalid parameters
    • 404 for non-existent IDs or lack of entitlement
    • 500 for generic database or network errors

2.1.1

April 2026 | LOW impact

Added parameters collectionDate and transactionDescription to schemas AchListTransaction and AchDetailTransaction.

2.1.0

February 2026 | MID impact

We expanded upon settlement information for transaction list and transaction detail inquiries, adding the following two parameters: settlementAmount and settlementTransactionId.

2.0.0

October 2025 | MID impact

Deprecated legacy endpoints:

  • /accounts/transactions/v1/ACHStatusInquiry/list
  • /accounts/transactions/v1/collectedACHtransactions/list:
  • /accounts/transactions/v1/postedACHtransactions/list
  • /accounts/transactions/v1/postedACHtransactions/list

1.2.2

March 2025 | LOW impact

Deprecated dateSearchType from the request body in the /ach/list endpoint. You can no longer use the ACH status to filter your request. Look in the response body to view the AchStatus.

1.2.1

October 2024 | LOW impact

Date parameters adjusted to support the maximum date range search limit of 180 days. Do not enter a fromDate and toDate date range that goes beyond 31 days.

1.2.0

May 2024 | MID impact

Two new endpoints available in all environments, including the API simulator! We have added:

  • /accounts/transactions/v1/ach-transactions/{parNumber}
  • /accounts/transactions/v1/ach-transactions

1.1.6

December 2023 | MID impact

  • Deprecated the mdmID field. Backend services and processes have been enhanced to authenticate client API calls without the need for an MDM ID.
  • Removed the POSTED status from the list of valid values for the ACHStatus field in the achStatusInquiryResult object. Valid values for this field now only include COLLECTED or RETURNED.

1.1.5

September 2023 | LOW impact

The mdmId description has been updated to communicate that this field will soon deprecate in an upcoming release.

1.1.4

August 2023 | LOW impact

  • Modified the format for date parameters to match with KeyBank API standard date format of YYYY-MM-DD.
  • fromDate and toDate were updated to recall transaction data from the previous 24 months.

1.1.3

July 2023 | LOW impact

  • Added the settlementDate field in the response to provide you the ability to filter by date in response.
  • MDM ID (mdmId) is no longer a required field, it is now optional.

1.1.2

May 2023 | MID impact

  • Added customData to the following objects:
    • achCollectedTransactionsResult
    • achPostedTransactionsResult
    • ACHReturnTransaction
  • Added receivingCustIdentificationNumber to the request payloads.
  • In the achCollectedTransactionsResult response, we added an example for the nonIatAddendum schema.

1.0.0

December 2022

Released on the Developer Portal.

Impact levels

  • LOW: This is a minor change or enhancement that does not alter the operations of the API. Upgrading to the latest specifications is preferable but not required.
  • MID: The previous API version is valid and operates, but does not contain latest enhancements. You need to update your specifications to get these enhancements.
  • HIGH: The previous API version is no longer operable. You must upgrade to the latest specifications to access and use this API product.

YAML file download