Quick summary
ACH payments are a type of electronic payment that moves funds between bank accounts within the United States. ACH is ideal for direct deposit of payroll, recurring bill payments, online purchases, or person-to-person transfers. ACH payments are also often less expensive than wire transfers, with lower or no transaction fees.
For ACH to work, there must be an authorized agreement between the originator and the receiver. An authorized agreement means that the receiver has consented to exchange funds with the originator.

Once you submit an ACH transaction, KeyBank begins verifying the request and batching it for processing. After verification, files are collected and transmitted to the ACH Operator, the central clearing facility managed by the Federal Reserve Bank.
During this process, you can use the ACH Inquiry API to view the status, or set up ACH status notifications with webhooks.
ACH statuses

Statuses for ACH transactions are:
- Collected - KeyBank successfully consolidates and batches the ACH transactions, ready to send them to the ACH Operator for payment processing.
- Settled - The ACH Operator receives the transaction and begins to process the payment with the receiver's financial institution. Settlement occurs nightly.
- Returned – The transaction could not be processed, often due to an issue like insufficient funds. The request is returned to originator with details. KeyBank recommends that you inquire about returns daily with the ACH Inquiry API.
Same-day payments
You can originate a transaction and post a credit or debit to the receiver's account on the same day. Same-day ACH payments cannot exceed $1,000,000 per transaction in a single business day. Transactions must be submitted by specific cutoff times to qualify for same-day posting. Refer to the ACH schedules for details.
ACH Origination API
Use this API to send or collect funds between two authorized parties or request additional details, like remittance information. View the API doc.
ACH Inquiry API
Find out the status for a list of transactions or get details about a specific ACH request. View the API doc.
ACH alerts
Learn about how KeyBank webhooks work. Set up your application to receive alerts as an ACH transaction changes status.
How it works
01
Authorization
Prepare your environment and have your access token and KeyBank credentials ready.
Authorization: Specify the authentication type as a Bearer Token and insert your KeyBank access token. (Learn how to get an access token.)point: Provide the short name specific to your company assigned by KeyBank.collectionApplicationId: Include the unique identification specific to your account, provided by KeyBank. If you have different settlement accounts, you will need multiple collection application IDs, each connected to a specific settlement account.
02
Origination
Build the request body for the ACH Origination API, satisfying all required parameters.
uuid: Create a Universal Unique Identifier. This is a useful attribute to recall a transaction prior to collection. The UUID is also required if you need to undo an ACH payment request.secCode: Choose the payment authorization method with the SEC code. Supported SEC codes include CCD, CTX, PPD, TEL, WEB.companyEntryDescription: Define the purpose of the payment.- Define the transaction details for the receiving party based on the SEC code.
- Specify account type (checking or savings), transaction type (credit or debit), and whether it is a prenote or live transaction. (A prenote is a notification for the receiver's bank to verify the account information. A live transaction is an actual payment.)
- Provide the bank details for the recipient like the account number and bank routing number.
- Amount of the funds to collect or send.
03
Trace number
After you submit an ACH transaction, you get a response that KeyBank has received your request. This response does not indicate collection or settlement. In the response you get a trace number (traceNumber). The trace number is an identifier that stays with the transaction through its lifecycle.
04
Payment preparation
KeyBank prepares ACH transactions for review, verification, and processing, linking accounts with addenda records when needed for certain SEC codes. You can undo an ACH payment request within about 10 minutes of initiation, before consolidation.
KeyBank consolidates and batches ACH transactions by SEC code and other parameters, then converts them to Nacha format for processing. Review the ACH schedules to see consolidation times before collection.
05
Collected transactions
When the status is Collected, it means that KeyBank has successfully received and prepared your files. The files are queued for transmission to the ACH Operator during the next available collection window.
Transactions may be suspended if:
- Control totals are missing
- A transaction appears to be a duplicate
- The account exceeds its limit
- There are concerns about potential fraud
You can delete a transaction before settlement if you stop the payment before the transaction’s effective date. If you delete a transaction in time, the payment will not be posted.
06
Settlement
The status Settled displays when the ACH Operator processes collected transactions and prepares funds for distribution from the receiver's financial institution. Payments are posted on the date specified in the effective date parameter within the originating request. Settlement occurs nightly via batch processing.
07
Monitor progress
You can monitor the progress of an ACH transaction with ACH inquiry endpoints or webhooks. Track the transaction status, outcomes, and retrieve addenda details.
Pay with ACH
Use the ACH Origination API to send or collect payments. With this API, you can:
- Make same-day payments until 3:00 p.m. EST.
- Send 10 transactions or batch up to 100 transactions per ACH request.
- Undo a payment before collection.
SEC codes
You select the payment type using the SEC code, which tells the KeyBank ACH API what kind of transaction you are initiating—such as business-to-business, consumer, online, or phone-based.
ACH PAYMENT TYPES
| SEC code | Common uses | Parties involved | Remittance information | Return window for unauthorized transactions |
|---|---|---|---|---|
| CCD | Vendor payments, fund transfers | Business ⇔ Business | Minimal | 24 hours |
| CTX | Invoice payments, billing | Business ⇔ Business | Detailed | 24 hours |
| PPD | Payroll, personal payments | Business ⇔ Individual | Minimal | 60 days |
| TEL | Pay by phone | Business ⇔ Individual | Minimal | 60 days |
| WEB | Subscriptions, online bill pay | Business ⇔ Individual | Minimal | 60 days |
Addenda records
Addenda records have additional payment data like remittance information. You can use the ACH Origination API to request additional information about a transaction. It is primarily used for business-to-business transactions, like with SEC codes CCD or CTX.
This is an available option in case you need addenda information to help identify an electronic payment to the receiving financial institution and the receiver, or to get information about a related prior entry detail record.
If you request addenda records, you can review the status of information retrieval. As the system collects the records, the status is Waiting. Then, when the system successfully receives the addenda records, the status changes to Completed.
Undo a payment
When you undo a transaction, you stop the request from reaching the ACH Operator. This has to be done prior to the collection window (see ACH schedules). The typical window to undo a payment is about 10 minutes. If you missed the window to undo a payment, you can attempt to reverse the transaction (within 5 banking days from the original effective date).
Reverse payment
When you reverse a transaction, you missed the window to undo a request. You can reverse the transaction within 5 banking days from the original effective date.
When you reverse the transaction, it pulls back payments that were originated erroneously. While reversals are not a guaranteed success, it is an option to undo the original payment submitted after collection.
To reverse a payment, you have one of three options. Only one reversal method can be used per transaction; if the first attempt fails, alternative methods cannot be used.
- Option 1: Submit the file maintenance form for a payment reversal. Please visit KeyNavigator Online Help or contact your Payments Advisor for this form.
- Option 2: Use ACH Direct to reverse a payment. You can search for the transaction by batch or account. Reversals are available within 5 banking days of the effective date for the current transactions. After you submit this request, the status for the transaction will be pending until it is fully processed as reversed.
- Option 3: Complete an ACH Originate API request with the opposite credit or debit indicator in the
creditDebitCodefield of the request body. Update thecompanyEntryDescriptionin the request body to reflectREVERSAL.
ACH schedules
ACH transactions are consolidated, collected, and distributed several times throughout the day. You must submit ACH transactions before KeyBank’s final cutoff time at 9:00 PM EST for standard next day settlement.
- Consolidation window: Files are converted to Nacha file records, consolidated, and prepared for collection.
- Collection window: ACH transactions have been successfully received by KeyBank and are ready for the ACH Operator for payment processing.
- Distribution window: The ACH Operator processed the payments and is ready for settlement from the receiver's financial institution. A transaction posts on the date specified in the
effectiveDateparameter within the originating request.
STANDARD ACH SCHEDULE
All the times listed are for the Eastern time zone (EST).
| Window | Consolidation | Collection/Distribution |
|---|---|---|
| 1 | 6:00 a.m. | |
| 2 | 9:10 a.m. | 9:30 a.m. |
| 3 | 11:10 a.m. | 11:30 a.m. |
| 4 | 1:10 p.m. | 1:30 p.m. |
| 3 | 3:20 p.m. | 3:30 p.m. |
| 4 | 6:45 p.m. | 7:00 p.m. |
| 5 | 9:10 p.m. | 9:30 p.m. |
SAME-DAY ACH SCHEDULE
All the times listed are for the Eastern time zone (EST).
| Window | Submit by | File sent to ACH | Funds moved to receiver's bank | Posted to receiver's account |
|---|---|---|---|---|
| 1 | 9:00 a.m. | 9:30 a.m. | 12:00 p.m. | 1:30 p.m. |
| 2 | 11:00 a.m. | 11:30 a.m. | 4:00 p.m. | 5:00 p.m. |
| 3 | 1:00 p.m. | 1:30 p.m. | 5:30 p.m. | End of business day for receiver's bank |
| 4 | 3:00 p.m. | 3:45 p.m. | 5:30 p.m. | End of business day for receiver's bank |
ACH processing and Federal Reserve holidays
KeyBank does not process ACH transactions on Federal Reserve holidays. Payments and returns resume on the next business day following the holiday. If a holiday falls on a Sunday, the following Monday is observed.
Federal reserve holidays include:
- New Year's Day
- Martin Luther King Jr. Day
- Presidents Day
- Memorial Day
- Juneteenth National Independence Day
- Independence Day
- Labor Day
- Columbus Day
- Veterans Day
- Thanksgiving Day
- Christmas Day
Monitor ACH transactions
We recommend you check the status of your ACH transactions after 06:00 a.m. EST the following business day. By this time, the ACH has completed batch processing and consolidation.
You can get all the information you need for your ACH transactions with one of two endpoints from ACH Inquiry API:
/ach/listsearches ACH transactions with your KeyBank account number. It returns a list of transactions associated with that account number including information like status of transactions, participating parties, addenda counts, and return reason, if applicable./ach/details/{parNumber}requires the unique PAR number to return details about a specific ACH transaction. In return, you get a detailed response about the transaction, its status, information about the parties involved, notification of change description, and addenda details directly in the report.
You can further refine your search with a date range (fromDate and toDate) recalling up to two years of past records. Use the traceNumber from the originating request to verify your search results.
PAR number
The Payment Assigned Reference (PAR) number is a unique identifier generated by the KeyBank. It helps identify a transaction without exposing any sensitive consumer information.
When you submit an inquiry using an account number, the response returns the PAR number. You can use this number to request additional details about the ACH transaction.

The PAR number (parNumber) is linked to the trace number (traceNumber), provided in the ACH origination response from your initial request. This association offers an extra layer of verification. The parNumber should match the last 7 digits of the traceNumber , found in the ACH detail or webhook response.
ACH notifications
ACH webhooks are automated messages your system can receive when something important happens with an ACH payment—like when a payment is collected, returned, or settled. Rather than polling for transaction status, webhooks let you know in real time when there is a change event, so you can act right away (like updating a dashboard or notifying a customer). Learn more about our webhooks.
9-minute read
updated Dec. 09, 2025

