Skip to content
Last updated

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

Key idea:
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 TypeDescriptionNotes
ACH_DEBITPulls funds from a customer’s bank account.Most common ACH transaction.
ACH_CREDITPushes funds to a customer’s bank account.Must reference a prior ACH debit.
ACH_CANCELCancels 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

{
  "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.

Important:
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

{
  "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.

Key idea:
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

{
  "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.

Key idea:
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 CodeDescription
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.

Examples:
  • ACH_DEBITACH_CREDIT
  • ACH_DEBITACH_CANCEL

Storing transaction IDs is critical for:

  • Credits
  • Cancellations
  • Returns and reconciliation
  • Reporting

Best Practices

  • Always store paymentTransactionId
  • Select the correct SEC code for your use case
  • Submit ACH_CANCEL requests as quickly as possible
  • Use ACH_CREDIT to return funds after settlement
  • Expect delayed finality and possible returns
  • 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