This guide describes identifiers used to track outgoing and incoming ACH. It also describes statuses that indicate a failed outgoing ACH request.
## Using identifiers to track ACH transactions
You can use a combination of identifiers to track ACH transactions within your system. Tracking methods depend on whether the transaction is outgoing or incoming ACH.
The table below shows how various ACH-related identifiers are represented across Galileo systems. The variety in identifiers is a reflection of the complexity in back-end systems and databases.
The labels for these identifiers in the Events API messages may differ according to the arrangements you made with Galileo. For example, some of these identifiers could be labeled `
tran_id` instead of the identifier shown below. You may also need to request that some fields be added to your events.
|Column Title||ACH transaction ID||External transaction ID||Payment or adjustment ID||Internal transaction ID||Trace ID|
|Posted Transactions RDF||`||`||`||||`|
|<<glossary:CST>>||||||ID||Trans ID||Trace No|
|External Trans API||||||||`||`|
**ACH transaction ID** — This value is returned by the <a href="ref:post_createachtransaction" target="_blank">Create ACH Transaction</a> endpoint as `
ach_transaction_id`. Most of the other transaction-retrieval endpoints return `
ach_transaction_id`, except <a href="ref:post_getalltranshistory" target="_blank">Get All Transaction History</a> and <a href="ref:post_getpendingdeposits" target="_blank">Get Pending Deposits</a>, which return this value as `
**External transaction ID** — When you pass a `
transactionId` with the Create ACH Transaction call, the value is copied to the external transaction ID field. This identifier is universally unique, and it is present only for outgoing ACH transactions.
**Payment or adjustment ID** — The identifier for the actual payment (credit) or adjustment (debit) that is triggered by the ACH transaction, either incoming or outgoing. The otype differentiates ACH transactions from other types of payments and adjustments.
**Internal transaction ID** — This is the primary key for one of the tables involved in ACH processing.
**Trace ID** — The 15-digit identifier that is passed in the Nacha file. This value may help differentiate one ACH transaction from another, but it is not universally unique, even within the same Nacha file, and so it cannot be used by itself to uniquely identify a transaction. Present for both incoming and outgoing ACH transactions.
### Tracking outgoing ACH transactions
When you use the Create ACH Transaction endpoint, the `
ach_transaction_id` that it returns and the external transaction ID can be used to track the transaction in the Program API, events webhook messages, and the Posted Transactions RDF. To match the same transaction in the CST, match the **ID** for payment and adjustment transactions.
### Tracking incoming ACH transactions
When Galileo receives a Nacha file, the only identifier in the file for a transaction is the trace ID, which is not universally unique. When Galileo posts the transaction to the payments or adjustments table, you can use that ID in conjunction with the trace ID to track the transaction across multiple systems.
### Matching returned transactions
When one of your outgoing ACH transactions is returned by the recipient, Galileo sends the <a href="ref:api-reference-events-api-ach-return" target="_blank">`
ACRT: ach_return`</a> event message. To link this return to the original ACH transaction (<a href="ref:api-reference-events-api-pmt" target="_blank">`
BPMT: pmt`</a> or <a href="ref:api-reference-events-api-adj" target="_blank">`
BADJ: adj`</a>), match the `
## Troubleshooting outgoing ACH
This table lists ACH transaction statuses that prevent an outgoing transaction from being completed, as well as the next step to take.
|`||Deleted by account holder||Wait for the account holder to request a new transaction.|
|`||Error||Return or cancel the transaction and notify the originator.|
|`||Canceled due to violation of debit limit||Notify the originator that the transaction was canceled and that it is outside of the allowed range.|
|`||Bad routing number||For outgoing ACH, obtain the correct routing number from the customer.|
|`||On hold||Determine whether to post or return the transaction.|
|`||Pending approval, limit exceeded||Notify the originator that the transaction is outside of the allowed range.|