Nacha ACH Transaction Status API

The ACH Transaction Status API from Nacha — 4 operation(s) for ach transaction status.

Operations 4

GET /payments/ach/status/transactionId/{transactionIdentification} Get ACH Transaction status with unique transaction identification #
GET /payments/ach/status/instructionId/{instructionIdentification} Get ACH Transaction status with unique instruction identification #
POST /payments/ach/credit/status ACH Credit Transaction status
POST /payments/ach/debit/status ACH Debit Transaction status

Documentation

📖
APIReference
https://app.swaggerhub.com/apis/ASIG/Initiate_Payment/1.0.7
📖
Documentation
https://www.nacha.org/content/apis-development
📖
APIReference
https://app.swaggerhub.com/apis/ASIG/IAR/1.0.1
📖
APIReference
https://app.swaggerhub.com/apis/ASIG/IAR_Plus/1.0.1
📖
APIReference
https://app.swaggerhub.com/apis/ASIG/transaction_status/1.0.14
📖
APIReference
https://app.swaggerhub.com/apis/ASIG/Initiate_Wire_Payment_API/1.0.3
📖
APIReference
https://app.swaggerhub.com/apis/ASIG/Get_Wire_Status_API/1.0.0
📖
APIReference
https://app.swaggerhub.com/apis/ASIG/Initiate_Instant_Payment_API/1.0.6
📖
APIReference
https://app.swaggerhub.com/apis/ASIG/Instant_Payment_Transfer/1.0.1
📖
APIReference
https://app.swaggerhub.com/apis/ASIG/Initiate_Payment_API/1.0.2
📖
APIReference
https://app.swaggerhub.com/apis/ASIG/RET_API/1.0.3
📖
APIReference
https://app.swaggerhub.com/apis/ASIG/Authorize_To_Pay/1.0.6
📖
APIReference
https://app.swaggerhub.com/apis/ASIG/Pay_Me_API/1.0.11
📖
APIReference
https://app.swaggerhub.com/apis/ASIG/account_validation/1.0.2
📖
APIReference
https://app.swaggerhub.com/apis/ASIG/Account_Validation_Plus_Ownership_API/1.1.0
📖
APIReference
https://app.swaggerhub.com/apis/ASIG/Account_Validation_Plus_Name_and_RET/1.0.4
📖
APIReference
https://app.swaggerhub.com/apis/ASIG/RealTimeBillingAccountValidation/1.0.7
📖
APIReference
https://app.swaggerhub.com/apis/ASIG/Get_Corporate_Account_Balances_API/1.0.3
📖
APIReference
https://app.swaggerhub.com/apis/ASIG/Get_Corporate_Transaction_History_API/1.0.5
📖
APIReference
https://app.swaggerhub.com/apis/ASIG/Get_Transaction_Detail_API/1.0.4
📖
APIReference
https://app.swaggerhub.com/apis/ASIG/Payee_Profile_API/2.1.3
📖
APIReference
https://app.swaggerhub.com/apis/ASIG/Written_Statement_of_Unauthorized_Debit/1.0.8
📖
APIReference
https://app.swaggerhub.com/apis/ASIG/Proof_of_Authorization/1.0.6
📖
APIReference
https://app.swaggerhub.com/apis/ASIG/bank_contacts/1.0.5
📖
APIReference
https://app.swaggerhub.com/apis/ASIG/Bank_Contact_V2/1.0.9

Specifications

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/nacha-ach-transaction-status-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

nacha-ach-transaction-status-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: Afinis is a diverse group of organizations working to support advancement and use of API standardization in the financial services industry. Utilization of this API requires a developer to [register](https://www.afinis.org/user/register) their application.
  version: 1.0.14
  title: ACH Transaction Status API
  contact:
    email: info@afinis.org
    url: https://www.afinis.org
servers:
- url: https://api.afinis.org/v1
tags:
- name: ACH Transaction Status
paths:
  /payments/ach/status/transactionId/{transactionIdentification}:
    get:
      operationId: GetTransactionStatusByTransactionId
      tags:
      - ACH Transaction Status
      summary: Get ACH Transaction status with unique transaction identification
      description: ACH Transaction status
      parameters:
      - name: transactionIdentification
        in: path
        required: true
        description: Unique identification, as assigned by first instructing agent, to unambiguously identify the transaction that is passed on, unchanged, throughout the entire interbank chain. (ODFI assigned ID)
        schema:
          type: string
      - name: Request_Id
        in: header
        required: false
        description: Optional Request ID allows application developer to trace requests through the systems logs
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/transactionStatusSingleResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-401'
        '404':
          description: Not Found
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-422'
        '500':
          description: Internal Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-500'
        '503':
          description: Service unavailable
      security:
      - APIKeyQueryParam: []
  /payments/ach/status/instructionId/{instructionIdentification}:
    get:
      operationId: GetTransactionStatusByInstructionId
      tags:
      - ACH Transaction Status
      summary: Get ACH Transaction status with unique instruction identification
      description: ACH Transaction status
      parameters:
      - name: instructionIdentification
        in: path
        required: true
        description: Unique identification as assigned by an instructing party for an instructed party to unambiguously identify the instruction.
        schema:
          type: string
      - name: Request_Id
        in: header
        required: false
        description: Optional Request ID allows application developer to trace requests through the systems logs
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/transactionStatusSingleResponse2'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-401'
        '404':
          description: Not Found
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-422'
        '500':
          description: Internal Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-500'
        '503':
          description: Service unavailable
      security:
      - APIKeyQueryParam: []
  /payments/ach/credit/status:
    post:
      tags:
      - ACH Transaction Status
      summary: ACH Credit Transaction status
      description: ACH Credit Transaction status
      parameters:
      - name: Request_Id
        in: header
        required: false
        description: Optional Request ID allows application developer to trace requests through the systems logs
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/creditTransactionStatusResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-401'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-422'
        '500':
          description: Internal Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-500'
        '503':
          description: Service unavailable
      security:
      - APIKeyQueryParam: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                paymentInformation:
                  $ref: '#/components/schemas/creditTransactionStatusRequest'
        description: ACH Credit Transaction status
        required: true
  /payments/ach/debit/status:
    post:
      tags:
      - ACH Transaction Status
      summary: ACH Debit Transaction status
      description: ACH Debit Transaction status
      parameters:
      - name: Request_Id
        in: header
        required: false
        description: Optional Request ID allows application developer to trace requests through the systems logs
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/debitTransactionStatusResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-401'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-422'
        '500':
          description: Internal Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-500'
        '503':
          description: Service unavailable
      security:
      - APIKeyQueryParam: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                paymentInformation:
                  $ref: '#/components/schemas/debitTransactionStatusRequest'
        description: ACH Debit Transaction status
        required: true
components:
  schemas:
    transactionStatusSingleResponse:
      title: TransactionStatusResponse
      type: object
      properties:
        status:
          $ref: '#/components/schemas/transactionstatus'
        statusReasonInformation:
          $ref: '#/components/schemas/statusReasonInformation2'
    creditorAccount:
      title: CreditorAccount
      type: object
      required:
      - identification
      properties:
        identification:
          description: Unambiguous identification of the account of the creditor to which a credit entry will be posted as a result of the payment transaction.
          type: string
          example: '1234567891'
          maxLength: 17
    creditTransactionStatusRequest:
      title: TransactionStatusRequest
      type: object
      properties:
        debtor:
          $ref: '#/components/schemas/debtor'
        requestedExecutionDate:
          type: string
          example: '2018-12-12'
          maxLength: 10
        dateFrom:
          type: string
          maxLength: 10
          example: '2019-03-01'
        dateTo:
          type: string
          maxLength: 10
          example: '2019-03-11'
        instructedAmount:
          $ref: '#/components/schemas/instructedAmount'
        minimumAmount:
          $ref: '#/components/schemas/minimumAmount'
        maximumAmount:
          $ref: '#/components/schemas/maximumAmount'
        creditorAccount:
          $ref: '#/components/schemas/creditorAccount'
        creditorAgent:
          $ref: '#/components/schemas/creditorAgent'
    error-401:
      title: 401 Error
      type: object
      properties:
        detail:
          description: error details
          type: array
          items:
            $ref: '#/components/schemas/errorDetails-401'
    maximumAmount:
      title: MaximumAmount
      description: Maximum amount of a transaction history
      type: object
      required:
      - amount
      - currency
      properties:
        amount:
          type: number
          example: 100.01
          maxLength: 11
        currency:
          type: string
          example: USD
          default: USD
    errorDetails:
      title: ErrorDetails
      type: object
      properties:
        errorcode:
          description: A programmatic error code
          example: 2000
          type: string
          enum:
          - '2000': null
            description: Invalid JSON structure.
          - '2001': null
            description: “field name” is missing or invalid.
          - '2002': null
            description: Invalid date.
          - '2003': null
            description: Invalid combination of fields submitted. Check the API specification for eligible combinations.
          - '2004': null
            description: “field name” cannot be more than [max] characters.
        message:
          description: A human readable description of the problem
          example: Invalid JSON structure.
          type: string
      required:
      - errorcode
      - message
    instructedAmount:
      title: InstructedAmount
      description: Amount of money to be moved between the debtor and creditor, before deduction of charges, expressed in the currency as ordered by the initiating party.
      type: object
      required:
      - amount
      - currency
      properties:
        amount:
          type: number
          example: 100.01
          maxLength: 11
        currency:
          type: string
          example: USD
          default: USD
    creditTransactionStatusResponse:
      title: TransactionStatus
      type: object
      properties:
        debtor:
          $ref: '#/components/schemas/debtor'
        requestedExecutionDate:
          type: string
          example: '2018-12-12'
          maxLength: 10
        dateFrom:
          type: string
          maxLength: 10
          example: '2019-03-01'
        dateTo:
          type: string
          maxLength: 10
          example: '2019-03-11'
        instructedAmount:
          $ref: '#/components/schemas/instructedAmount'
        minimumAmount:
          $ref: '#/components/schemas/minimumAmount'
        maximumAmount:
          $ref: '#/components/schemas/maximumAmount'
        creditorAccount:
          $ref: '#/components/schemas/creditorAccount'
        creditorAgent:
          $ref: '#/components/schemas/creditorAgent'
        transactions:
          $ref: '#/components/schemas/transactionArray'
    paymentIdentification:
      title: PaymentIdentification
      type: object
      required:
      - instructionIdentification
      properties:
        instructionIdentification:
          description: Unique identification as assigned by an instructing party for an instructed party to unambiguously identify the instruction. (Originator created ID)
          type: string
          example: ABC0928
          maxLength: 7
        transactionIdentification:
          description: Unique identification, as assigned by first instructing agent to unambiguously identify the transaction is passed on, unchanged, throughout the entire interbank chain.
          type: string
          example: ABC136/09-15-18
          maxLength: 22
    transactionStatusSingleResponse2:
      title: TransactionStatusResponse
      type: object
      properties:
        status:
          $ref: '#/components/schemas/transactionstatus'
        statusReasonInformation:
          $ref: '#/components/schemas/statusReasonInformation2'
    transactionstatus3:
      type: string
      example: RJCT
      enum:
      - RCVD
      - PDNG
      - ACSP
      - OHLD
      - RJCT
      - ACWC
      - FAIL
    debtorAgent:
      title: DebtorAgent
      type: object
      description: Financial institution servicing an account for the debtor.
      required:
      - clearingSystemIdentification
      - memberIdentification
      properties:
        clearingSystemIdentification:
          description: Specification of a pre-agreed offering between clearing agents or the channel through which the payment instruction is processed
          type: string
          example: USABA
          enum:
          - CACPA: null
            description: Bank Branch Code used in Canada.
          - USABA: null
            description: Routing Transit number assigned by the ABA for US financial Institutions.
        memberIdentification:
          description: Identification of a member of a clearing system  e.g., a U.S. transit routing number or Canadian Payments Association Routing Number
          type: string
          minLength: 9
          maxLength: 9
          example: 061103852
    minimumAmount:
      title: MinimumAmount
      description: Miniumum amount of a transaction history
      type: object
      required:
      - amount
      - currency
      properties:
        amount:
          type: number
          example: 100.01
          maxLength: 10
        currency:
          type: string
          example: USD
          default: USD
    error-500:
      title: 500 Error
      type: object
      properties:
        detail:
          description: error details
          type: array
          items:
            $ref: '#/components/schemas/errorDetails-500'
    debitTransactionStatusResponse:
      title: TransactionStatus
      type: object
      properties:
        creditor:
          $ref: '#/components/schemas/creditor'
        requestedCollectionDate:
          description: Date and time at which the creditor requests that the amount of money is to be collected from the debtor
          type: string
          maxLength: 10
          example: '2018-12-12'
        dateFrom:
          type: string
          maxLength: 10
          example: '2019-03-01'
        dateTo:
          type: string
          maxLength: 10
          example: '2019-03-11'
        instructedAmount:
          $ref: '#/components/schemas/instructedAmount'
        minimumAmount:
          $ref: '#/components/schemas/minimumAmount'
        maximumAmount:
          $ref: '#/components/schemas/maximumAmount'
        debtorAccount:
          $ref: '#/components/schemas/debtorAccount'
        debtorAgent:
          $ref: '#/components/schemas/debtorAgent'
        transactions:
          $ref: '#/components/schemas/transactionArray2'
    debtorAccount:
      title: DebtorAccount
      type: object
      required:
      - identification
      properties:
        identification:
          description: Unambiguous identification of the account of the debtor to which a debit entry will be made as a result of the transaction.
          type: string
          example: '1234567891'
          maxLength: 17
    transactionArray:
      title: Transactions
      type: array
      items:
        type: object
        properties:
          paymentIdentification:
            $ref: '#/components/schemas/paymentIdentification'
          status:
            $ref: '#/components/schemas/transactionstatus3'
          statusReasonInformation:
            $ref: '#/components/schemas/statusReasonInformation'
    error-422:
      title: 422 Error
      type: object
      properties:
        detail:
          description: error details
          type: array
          items:
            $ref: '#/components/schemas/errorDetails-422'
    debitTransactionStatusRequest:
      title: TransactionStatusRequest
      type: object
      properties:
        creditor:
          $ref: '#/components/schemas/creditor'
        requestedCollectionDate:
          description: Date and time at which the creditor requests that the amount of money is to be collected from the debtor
          type: string
          maxLength: 10
          example: '2018-12-12'
        dateFrom:
          type: string
          maxLength: 10
          example: '2019-03-01'
        dateTo:
          type: string
          maxLength: 10
          example: '2019-03-11'
        instructedAmount:
          $ref: '#/components/schemas/instructedAmount'
        minimumAmount:
          $ref: '#/components/schemas/minimumAmount'
        maximumAmount:
          $ref: '#/components/schemas/maximumAmount'
        debtorAccount:
          $ref: '#/components/schemas/debtorAccount'
        debtorAgent:
          $ref: '#/components/schemas/debtorAgent'
    creditor:
      title: Creditor
      type: object
      description: Party to which an amount of money is due.
      required:
      - identification
      properties:
        identification:
          description: Identification assigned by an institution
          type: string
          example: '1234567891'
          maxLength: 10
    statusReasonInformation2:
      type: object
      properties:
        reason:
          type: string
          example: NARR
        additionalInformation:
          type: string
          example: C01
        statusDate:
          type: string
          example: '2019-02-20'
    transactionstatus:
      type: string
      example: ACWC
      enum:
      - RCVD
      - PDNG
      - ACSP
      - OHLD
      - RJCT
      - ACWC
      - FAIL
    errorDetails-401:
      title: 401 ErrorDetails
      type: object
      properties:
        errorcode:
          description: A programmatic error code
          example: 1000
          type: number
          enum:
          - '1000': null
            description: API key is missing, invalid or expired.
          - '1001': null
            description: API token is invalid, expired, or account associated with key does not have access to that API.
        message:
          description: A human readable description of the problem
          example: API key is missing, invalid or expired.
          type: string
      required:
      - errorcode
      - message
    debtor:
      title: Debtor
      type: object
      description: Party that owes an amount of money to the (ultimate) creditor.
      required:
      - identification
      properties:
        identification:
          description: Identification assigned by an institution
          type: string
          example: '1234567891'
          maxLength: 10
    errorDetails-500:
      title: 500 ErrorDetails
      type: object
      properties:
        errorcode:
          description: A programmatic error code
          example: 3001
          type: number
          enum:
          - '3001': null
            description: Internal Server error.
        message:
          description: A human readable description of the problem
          example: Internal Server error
          type: string
      required:
      - errorcode
      - message
    transactionArray2:
      title: Transactions
      type: array
      items:
        type: object
        properties:
          paymentIdentification:
            $ref: '#/components/schemas/paymentIdentification'
          status:
            $ref: '#/components/schemas/transactionstatus3'
          statusReasonInformation:
            $ref: '#/components/schemas/statusReasonInformation'
    error:
      title: Error
      type: object
      properties:
        detail:
          description: error details
          type: array
          items:
            $ref: '#/components/schemas/errorDetails'
    creditorAgent:
      title: CreditorAgent
      type: object
      description: Financial institution servicing an account for the creditor.
      required:
      - memberIdentification
      - clearingSystemIdentification
      properties:
        clearingSystemIdentification:
          description: Specification of a pre-agreed offering between clearing agents or the channel through which the payment instruction is processed
          type: string
          example: USABA
          enum:
          - CACPA: null
            description: Bank Branch Code used in Canada.
          - USABA: null
            description: Routing Transit number assigned by the ABA for US financial Institutions.
        memberIdentification:
          description: Identification of a member of a clearing system  e.g., a U.S. transit routing number or Canadian Payments Association Routing Number
          type: string
          minLength: 9
          maxLength: 9
          example: 061103852
    statusReasonInformation:
      type: object
      properties:
        reason:
          type: string
          example: NARR
        additionalInformation:
          type: string
          example: R12
        statusDate:
          type: string
          example: '2019-02-20'
    errorDetails-422:
      title: 422 ErrorDetails
      type: object
      properties:
        errorcode:
          description: A programmatic error code
          example: 4001
          type: number
          enum:
          - '4001': null
            description: Unprocessable request due to "%%"
        message:
          description: A human readable description of the problem
          example: Unprocessable request due to duplicate records
          type: string
      required:
      - errorcode
      - message
  securitySchemes:
    APIKeyQueryParam:
      type: apiKey
      in: query
      name: apikey