# ACH Payment Lifecycle & Transaction Types This document describes **ACH-specific transaction types** in Nelnet Payment Services (NPS), how they fit into the ACH payment lifecycle, and how **ACH Standard Entry Codes (SEC codes)** are used. It covers: - ACH debit and credit flows - ACH cancellation behavior - Standard Entry Codes (SEC) - Required references between ACH transactions ## The ACH Payment Lifecycle div strong Key idea: br ACH payments are batch-based and asynchronous. Funds movement and finality occur after submission. Unlike credit cards, ACH transactions do not authorize funds in real time. Instead, they are submitted for processing and settled later through the ACH network. High-level phases: 1. **Submission** – ACH entry is created and queued 2. **Processing** – Entry is transmitted to the ACH network 3. **Settlement** – Funds are moved between financial institutions 4. **Post-processing** – Returns, reversals, and reconciliation ## Supported ACH Transaction Types The following `transactionType` values apply to ACH payments. | Transaction Type | Description | Notes | | --- | --- | --- | | **ACH_DEBIT** | Pulls funds from a customer’s bank account. | Most common ACH transaction. | | **ACH_CREDIT** | Pushes funds to a customer’s bank account. | Must reference a prior ACH debit. | | **ACH_CANCEL** | Cancels a previously submitted ACH transaction. | Time-sensitive and not guaranteed. | ## ACH_DEBIT: Collecting Funds `ACH_DEBIT` initiates a debit from the customer’s bank account. **When to use:** - Tuition payments - Recurring bank debits - One-time ACH charges Characteristics: - Funds are pulled from the customer - Settlement occurs asynchronously - Subject to returns after settlement - Requires a valid **Standard Entry Code (SEC)** ### Example: ACH Debit ```json { "entityId": 1325691045, "paymentType": { "ach": { "token": "4NTSIT839d9b1234" } }, "transactionType": "ACH_DEBIT", "amount": 123.65, "accountHolder": { "accountHolderName": "John Smith", "accountHolderId": "134267" }, "transactionInformation": { "standardEntryCode": "WEB", "description": "tuition", "companyName": "College Prep" } } ``` ## ACH_CREDIT: Returning or Disbursing Funds `ACH_CREDIT` pushes funds to a customer’s bank account. div strong Important: br ACH credits must reference a prior ACH debit transaction. **Common use cases:** - Refunds for ACH debits - Disbursements - Corrections initiated by the merchant ### Example: ACH Credit ```json { "entityId": 1325691045, "paymentType": { "ach": { "token": "4NTSIT839d9b1234" } }, "transactionType": "ACH_CREDIT", "amount": 50.00, "transactionInformation": { "originalPaymentTransactionId": "80503dc9-15f8-430a-8622-3cff38124bbd" } } ``` ## ACH_CANCEL: Canceling an ACH Transaction `ACH_CANCEL` attempts to cancel a previously submitted ACH transaction. div strong Key idea: br ACH cancellations are time-sensitive and not guaranteed. **When to use:** - An ACH entry was submitted in error - The transaction has not yet been processed by the ACH network Characteristics: - Requires reference to the original transaction - Must include the original transaction type - Success depends on timing and processing state ### Example: ACH Cancel ```json { "entityId": 1325691045, "paymentType": { "ach": { "token": "4NTSIT839d9b1234" } }, "transactionType": "ACH_CANCEL", "transactionInformation": { "originalPaymentTransactionId": "80503dc9-15f8-430a-8622-3cff38124bbd", "originalTransactionType": "ACH_DEBIT" } } ``` ## ACH Standard Entry Codes (SEC) ACH transactions require a **Standard Entry Code (SEC)** that describes how the transaction was authorized and initiated. div strong Key idea: br The SEC code determines authorization rules and downstream ACH handling. The SEC code is provided in the `transactionInformation.standardEntryCode` field for ACH debits. ## Standard Entry Class (SEC) Codes Standard Entry Class (SEC) codes are defined and maintained by **Nacha**, the governing body for the ACH network. For ACH payment entries, the SEC code determines **how authorization was obtained** and whether an entry is processed as a **debit or credit**. Within NPS, SEC codes are used to validate ACH payment requests and may also appear in reporting data. ### Important Notes for NPS APIs - Within NPS APIs (including the `standardEntryCode` field used in ACH payment requests), **PPD is the only SEC code supported for consumer debit, credit, or cancel transactions**. - All other consumer SEC codes supported by NPS are **debit-only**. - Some SEC codes may appear in reporting as **non-payment entries** (for example, Notifications of Change). ### Supported SEC Codes The following SEC codes may appear in NPS payment entries or reporting, as noted. | SEC Code | Description | | --- | --- | | **ARC** (Accounts Receivable Entry) | Single, one-time debit for a paper check received via lockbox, drop box, or business mailbox. | | **BOC** (Back Office Conversion Entry) | Allows the creation of a single debit for a point-of-purchase paper check during back-office conversion. | | **CCD** (Corporate Credit or Debit Entry) | ACH credit or debit between corporate accounts. | | **COR** (Notification of Change Entry) | **Reporting only (non-payment entry).** Used to transmit corrections to previously processed ACH transactions. These entries do not move funds. | | **POP** (Point of Purchase Entry) | Single, one-time debit made in person at a POS device for a customer purchase. | | **PPD** (Prearranged Payment and Deposit Entry) | Used for consumer ACH transactions where funds are credited (such as payroll or refunds), debited under a standing authorization, or canceled. This is the required SEC code for consumer credit and cancellation transactions in NPS. | | **TEL** (Telephone-Initiated Entry) | Debit authorized verbally by the consumer by phone. | | **WEB** (Internet-Initiated and Mobile Entry) | Consumer debit initiated online or via mobile app. **WEB credits are not supported in any NPS APIs.** | ### Consumer vs. Corporate Usage Summary - **Consumer debit transactions** commonly use: `WEB`, `TEL`, `ARC`, `BOC`, or `POP` - **Consumer credit or cancellation transactions** must use: `PPD` - **Corporate transactions** use: `CCD` ### Reporting Considerations Some ACH reports generated by NPS may include **non-payment SEC codes** (such as `COR`) that represent informational updates rather than fund movement. These entries are included for completeness and reconciliation purposes only. ## Transaction Relationships ACH transactions are linked using `paymentTransactionId`. div strong Examples: ul li code ACH_DEBIT → code ACH_CREDIT li code ACH_DEBIT → code ACH_CANCEL Storing transaction IDs is critical for: - Credits - Cancellations - Returns and reconciliation - Reporting ## Best Practices div ul li Always store code paymentTransactionId li Select the correct SEC code for your use case li Submit ACH_CANCEL requests as quickly as possible li Use ACH_CREDIT to return funds after settlement li Expect delayed finality and possible returns li Test all ACH flows thoroughly in UAT ## Summary - This document applies to **ACH payments only** - Supported ACH transaction types: - ACH_DEBIT - ACH_CREDIT - ACH_CANCEL - ACH transactions require a valid SEC code - ACH payments are asynchronous and batch-based - ACH_CREDIT and ACH_CANCEL require references to prior transactions - Timing is critical for ACH cancellations