# Notification

This is an outbound HTTP POST message from the Shift4 gateway to the merchant's environment that provides status of the ach request. This notification request will be sent from Shift4 to the URL provided in the merchant's boarding configuration.

This requires the interface vendor to establish a listening service to receive these requests.

Endpoint: POST ach-notification
Version: 1.7.53

## Request fields (application/json):

  - `body` (object, required) — one of:
    - ACH Verification Status Update:
      - `event` (object)
        Example: {"type":"ach.verify.verification_status_update"}
      - `event.type` (string)
        ach.verify.verification_status_update

Occurs when the status of the ACH verification request is updated.
        Example: "ach.verify.verification_status_update"
      - `ach` (object)
        Example: {"verificationType":"P"}
      - `ach.verificationType` (string)
        The type of verification used to validate the account.

Value | Description 
------|---------------
P     | Prenotification
M     | Microdeposit
        Enum: "P", "M"
      - `token` (object)
        Example: {"value":"9829283019231234","type":"ACH"}
      - `token.value` (string, required)
        The token representing the customer's bank account credentials.
        Example: "9829283019231234"
      - `transaction` (object)
        Example: {"authSource":"A","responseCode":"A"}
      - `transaction.hostResponse` (object)
        Returns the response code detailing why the transaction was declined.
      - `transaction.hostResponse.reasonCode` (string)
        Returns a response code from the host.

Value | Description
------|-----------
C01   | Incorrect DFI Account Number
C02   | Incorrect Routing Number
C03   | Incorrect Routing Number and Incorrect DFI Account Number
C05   | Incorrect Transaction Code
C06   | Incorrect DFI Account Number and Incorrect Transaction Code
C07   | Incorrect Routing Number, Incorrect DFI Account Number, and Incorrect Transaction Code   | 
R01   | Insufficient Funds
R02   | Account Closed
R03   | No Account/ Unable to Locate Account
R04   | Invalid Account Number Structure
R05   | Unauthorized Debit to Consumer Account Using Corporate SEC Code
R06   | Returned per ODFI’s Request
R07   | Authorization Revoked by Customer
R08   | Payment Stopped
R09   | Uncollected Funds
R10   | Customer Advises Originator is Not Known to Receiver and/or Originator is Not Authorized by Receiver to Debit Receiver’s Account
R11   | Customer Advises Entry Not in Accordance with the Terms of the Authorization
R12   | Account Sold to Another DFI
R13   | Invalid ACH Routing Number
R14   | Representative Payee Deceased or Unable to Continue in That Capacity
R15   | Beneficiary or Account Holder (Other Than a Representative Payee) Deceased
R16   | Account Frozen/Entry Returned Per OFAC Instruction
R17   | File Record Edit Criteria/Entry with Invalid Account Number Initiated Under Questionable Circumstances/Return of Improperly-Intiated Reversal
R18   | Improper Effective Entry Date
R19   | Amount Field Error
R20   | Non-Transaction Account
R21   | Invalid Company Identification
R22   | Invalid Individual ID Number
R23   | Credit Entry Refused by Receiver
R24   | Duplicate Entry
R25   | Addenda Error
R26   | Mandatory Field Error
R27   | Trace Number Error
R28   | Routing Number Check Digit Error
R29   | Corporate Customer Advises Not Authorized
R30   | RDFI Not Participant in Check Truncation Program
R31   | Permissible Return Entry (CCD and CTX only)
R32   | RDFI Non-Settlement
R33   | Return of XCK Entry
R34   | Limited Participation DFI
R35   | Return of Improper Debit Entry
R36   | Return of Improper Credit Entry
R37   | Source Document Presented for Payment
R38   | Stop Payment on Source Document
R39   | Improper Source Document/Source Document Presented for Payment
      - `transaction.hostResponse.reasonDescription` (string)
        Returns a description from the host.
      - `notificationId` (string)
        Notification ID value generated by Shift4 and returned in the response. Used for matching webhook notifications back to their original request.
        Example: "6ca3c55e-1b7c-4cad-8ae2-cac052b5510d"
      - `server` (object)
        Example: {"name":"TM01CE"}
      - `server.name` (string)
        The name of the server that processed the request.
        Example: "TM01CE"
    - ACH Sale Status Update:
      - `event` (object)
        Example: {"type":"ach.sale.status_update"}
      - `event.type` (string)
        ach.sale.status_update

Occurs when the status of the ACH sale request is updated.
        Example: "ach.sale.status_update"
      - `token` (object)
        Example: {"value":"9829283019231234","type":"ACH"}
      - `token.value` (string, required)
        The token representing the customer's bank account credentials.
        Example: "9829283019231234"
      - `transaction` (object)
        Example: {"authSource":"A","responseCode":"A","invoice":"192029"}
      - `transaction.invoice` (string)
        10-digit invoice number assigned by the interface to identify a transaction. An invoice number serves as a unique key that identifies a transaction within a batch in Shift4's Gateway.

Note: For US and Canadian processing: Although the invoice number is sent as a JSON string it is a numeric value. No alpha characters are allowed.

For processing outside of the US and Canada alpha characters are allowed.
        Example: "192029"
      - `transaction.hostResponse` (object)
        Returns the response code detailing why the transaction was declined.
      - `transaction.hostResponse.reasonCode` (string)
        Returns a response code from the host.

Value | Description
------|-----------
C01   | Incorrect DFI Account Number
C02   | Incorrect Routing Number
C03   | Incorrect Routing Number and Incorrect DFI Account Number
C05   | Incorrect Transaction Code
C06   | Incorrect DFI Account Number and Incorrect Transaction Code
C07   | Incorrect Routing Number, Incorrect DFI Account Number, and Incorrect Transaction Code   | 
R01   | Insufficient Funds
R02   | Account Closed
R03   | No Account/ Unable to Locate Account
R04   | Invalid Account Number Structure
R05   | Unauthorized Debit to Consumer Account Using Corporate SEC Code
R06   | Returned per ODFI’s Request
R07   | Authorization Revoked by Customer
R08   | Payment Stopped
R09   | Uncollected Funds
R10   | Customer Advises Originator is Not Known to Receiver and/or Originator is Not Authorized by Receiver to Debit Receiver’s Account
R11   | Customer Advises Entry Not in Accordance with the Terms of the Authorization
R12   | Account Sold to Another DFI
R13   | Invalid ACH Routing Number
R14   | Representative Payee Deceased or Unable to Continue in That Capacity
R15   | Beneficiary or Account Holder (Other Than a Representative Payee) Deceased
R16   | Account Frozen/Entry Returned Per OFAC Instruction
R17   | File Record Edit Criteria/Entry with Invalid Account Number Initiated Under Questionable Circumstances/Return of Improperly-Intiated Reversal
R18   | Improper Effective Entry Date
R19   | Amount Field Error
R20   | Non-Transaction Account
R21   | Invalid Company Identification
R22   | Invalid Individual ID Number
R23   | Credit Entry Refused by Receiver
R24   | Duplicate Entry
R25   | Addenda Error
R26   | Mandatory Field Error
R27   | Trace Number Error
R28   | Routing Number Check Digit Error
R29   | Corporate Customer Advises Not Authorized
R30   | RDFI Not Participant in Check Truncation Program
R31   | Permissible Return Entry (CCD and CTX only)
R32   | RDFI Non-Settlement
R33   | Return of XCK Entry
R34   | Limited Participation DFI
R35   | Return of Improper Debit Entry
R36   | Return of Improper Credit Entry
R37   | Source Document Presented for Payment
R38   | Stop Payment on Source Document
R39   | Improper Source Document/Source Document Presented for Payment
      - `transaction.hostResponse.reasonDescription` (string)
        Returns a description from the host.
      - `notificationId` (string)
        Notification ID value generated by Shift4 and returned in the response. Used for matching webhook notifications back to their original request.
        Example: "6ca3c55e-1b7c-4cad-8ae2-cac052b5510d"
      - `server` (object)
        Example: {"name":"TM01CE"}
      - `server.name` (string)
        The name of the server that processed the request.
        Example: "TM01CE"
    - ACH Refund Status Update:
      - `event` (object)
        Example: {"type":"ach.refund.status_update"}
      - `event.type` (string)
        ach.refund.status_update

Occurs when the status of the ACH refund request is updated.
        Example: "ach.refund.status_update"
      - `token` (object)
        Example: {"value":"9829283019231234","type":"ACH"}
      - `token.value` (string, required)
        The token representing the customer's bank account credentials.
        Example: "9829283019231234"
      - `transaction` (object)
        Example: {"authSource":"A","responseCode":"A","invoice":"192029"}
      - `transaction.invoice` (string)
        10-digit invoice number assigned by the interface to identify a transaction. An invoice number serves as a unique key that identifies a transaction within a batch in Shift4's Gateway.

Note: For US and Canadian processing: Although the invoice number is sent as a JSON string it is a numeric value. No alpha characters are allowed.

For processing outside of the US and Canada alpha characters are allowed.
        Example: "192029"
      - `transaction.hostResponse` (object)
        Returns the response code detailing why the transaction was declined.
      - `transaction.hostResponse.reasonCode` (string)
        Returns a response code from the host.

Value | Description
------|-----------
C01   | Incorrect DFI Account Number
C02   | Incorrect Routing Number
C03   | Incorrect Routing Number and Incorrect DFI Account Number
C05   | Incorrect Transaction Code
C06   | Incorrect DFI Account Number and Incorrect Transaction Code
C07   | Incorrect Routing Number, Incorrect DFI Account Number, and Incorrect Transaction Code   | 
R01   | Insufficient Funds
R02   | Account Closed
R03   | No Account/ Unable to Locate Account
R04   | Invalid Account Number Structure
R05   | Unauthorized Debit to Consumer Account Using Corporate SEC Code
R06   | Returned per ODFI’s Request
R07   | Authorization Revoked by Customer
R08   | Payment Stopped
R09   | Uncollected Funds
R10   | Customer Advises Originator is Not Known to Receiver and/or Originator is Not Authorized by Receiver to Debit Receiver’s Account
R11   | Customer Advises Entry Not in Accordance with the Terms of the Authorization
R12   | Account Sold to Another DFI
R13   | Invalid ACH Routing Number
R14   | Representative Payee Deceased or Unable to Continue in That Capacity
R15   | Beneficiary or Account Holder (Other Than a Representative Payee) Deceased
R16   | Account Frozen/Entry Returned Per OFAC Instruction
R17   | File Record Edit Criteria/Entry with Invalid Account Number Initiated Under Questionable Circumstances/Return of Improperly-Intiated Reversal
R18   | Improper Effective Entry Date
R19   | Amount Field Error
R20   | Non-Transaction Account
R21   | Invalid Company Identification
R22   | Invalid Individual ID Number
R23   | Credit Entry Refused by Receiver
R24   | Duplicate Entry
R25   | Addenda Error
R26   | Mandatory Field Error
R27   | Trace Number Error
R28   | Routing Number Check Digit Error
R29   | Corporate Customer Advises Not Authorized
R30   | RDFI Not Participant in Check Truncation Program
R31   | Permissible Return Entry (CCD and CTX only)
R32   | RDFI Non-Settlement
R33   | Return of XCK Entry
R34   | Limited Participation DFI
R35   | Return of Improper Debit Entry
R36   | Return of Improper Credit Entry
R37   | Source Document Presented for Payment
R38   | Stop Payment on Source Document
R39   | Improper Source Document/Source Document Presented for Payment
      - `transaction.hostResponse.reasonDescription` (string)
        Returns a description from the host.
      - `notificationId` (string)
        Notification ID value generated by Shift4 and returned in the response. Used for matching webhook notifications back to their original request.
        Example: "6ca3c55e-1b7c-4cad-8ae2-cac052b5510d"
      - `server` (object)
        Example: {"name":"TM01CE"}
      - `server.name` (string)
        The name of the server that processed the request.
        Example: "TM01CE"
    - ACH Dispute Initiated:
      - `event` (object)
        Example: {"type":"ach.dispute.initiated"}
      - `event.type` (string)
        ach.dispute.initiated

Occurs when ACH  dispute is created.
        Example: "ach.dispute.initiated"
      - `token` (object)
        Example: {"value":"9829283019231234","type":"ACH"}
      - `token.value` (string, required)
        The token representing the customer's bank account credentials.
        Example: "9829283019231234"
      - `transaction` (object)
        Example: {"authSource":"A","invoice":"192029"}
      - `transaction.invoice` (string)
        10-digit invoice number assigned by the interface to identify a transaction. An invoice number serves as a unique key that identifies a transaction within a batch in Shift4's Gateway.

Note: For US and Canadian processing: Although the invoice number is sent as a JSON string it is a numeric value. No alpha characters are allowed.

For processing outside of the US and Canada alpha characters are allowed.
        Example: "192029"
      - `transaction.hostResponse` (object)
        Returns the response code detailing why the transaction was declined.
      - `transaction.hostResponse.reasonCode` (string)
        Returns a response code from the host.

Value | Description
------|-----------
C01   | Incorrect DFI Account Number
C02   | Incorrect Routing Number
C03   | Incorrect Routing Number and Incorrect DFI Account Number
C05   | Incorrect Transaction Code
C06   | Incorrect DFI Account Number and Incorrect Transaction Code
C07   | Incorrect Routing Number, Incorrect DFI Account Number, and Incorrect Transaction Code   | 
R01   | Insufficient Funds
R02   | Account Closed
R03   | No Account/ Unable to Locate Account
R04   | Invalid Account Number Structure
R05   | Unauthorized Debit to Consumer Account Using Corporate SEC Code
R06   | Returned per ODFI’s Request
R07   | Authorization Revoked by Customer
R08   | Payment Stopped
R09   | Uncollected Funds
R10   | Customer Advises Originator is Not Known to Receiver and/or Originator is Not Authorized by Receiver to Debit Receiver’s Account
R11   | Customer Advises Entry Not in Accordance with the Terms of the Authorization
R12   | Account Sold to Another DFI
R13   | Invalid ACH Routing Number
R14   | Representative Payee Deceased or Unable to Continue in That Capacity
R15   | Beneficiary or Account Holder (Other Than a Representative Payee) Deceased
R16   | Account Frozen/Entry Returned Per OFAC Instruction
R17   | File Record Edit Criteria/Entry with Invalid Account Number Initiated Under Questionable Circumstances/Return of Improperly-Intiated Reversal
R18   | Improper Effective Entry Date
R19   | Amount Field Error
R20   | Non-Transaction Account
R21   | Invalid Company Identification
R22   | Invalid Individual ID Number
R23   | Credit Entry Refused by Receiver
R24   | Duplicate Entry
R25   | Addenda Error
R26   | Mandatory Field Error
R27   | Trace Number Error
R28   | Routing Number Check Digit Error
R29   | Corporate Customer Advises Not Authorized
R30   | RDFI Not Participant in Check Truncation Program
R31   | Permissible Return Entry (CCD and CTX only)
R32   | RDFI Non-Settlement
R33   | Return of XCK Entry
R34   | Limited Participation DFI
R35   | Return of Improper Debit Entry
R36   | Return of Improper Credit Entry
R37   | Source Document Presented for Payment
R38   | Stop Payment on Source Document
R39   | Improper Source Document/Source Document Presented for Payment
      - `transaction.hostResponse.reasonDescription` (string)
        Returns a description from the host.
      - `notificationId` (string)
        Notification ID value generated by Shift4 and returned in the response. Used for matching webhook notifications back to their original request.
        Example: "6ca3c55e-1b7c-4cad-8ae2-cac052b5510d"
      - `server` (object)
        Example: {"name":"TM01CE"}
      - `server.name` (string)
        The name of the server that processed the request.
        Example: "TM01CE"
    - ACH Dispute Status Update:
      - `event` (object)
        Example: {"type":"ach.dispute.status_update"}
      - `event.type` (string)
        ach.dispute.status_update

Occurs when the status of the ACH dispute is updated.
        Example: "ach.dispute.status_update"
      - `token` (object)
        Example: {"value":"9829283019231234","type":"ACH"}
      - `token.value` (string, required)
        The token representing the customer's bank account credentials.
        Example: "9829283019231234"
      - `transaction` (object)
        Example: {"authSource":"A","responseCode":"A","invoice":"192029"}
      - `transaction.invoice` (string)
        10-digit invoice number assigned by the interface to identify a transaction. An invoice number serves as a unique key that identifies a transaction within a batch in Shift4's Gateway.

Note: For US and Canadian processing: Although the invoice number is sent as a JSON string it is a numeric value. No alpha characters are allowed.

For processing outside of the US and Canada alpha characters are allowed.
        Example: "192029"
      - `transaction.hostResponse` (object)
        Returns the response code detailing why the transaction was declined.
      - `transaction.hostResponse.reasonCode` (string)
        Returns a response code from the host.

Value | Description
------|-----------
C01   | Incorrect DFI Account Number
C02   | Incorrect Routing Number
C03   | Incorrect Routing Number and Incorrect DFI Account Number
C05   | Incorrect Transaction Code
C06   | Incorrect DFI Account Number and Incorrect Transaction Code
C07   | Incorrect Routing Number, Incorrect DFI Account Number, and Incorrect Transaction Code   | 
R01   | Insufficient Funds
R02   | Account Closed
R03   | No Account/ Unable to Locate Account
R04   | Invalid Account Number Structure
R05   | Unauthorized Debit to Consumer Account Using Corporate SEC Code
R06   | Returned per ODFI’s Request
R07   | Authorization Revoked by Customer
R08   | Payment Stopped
R09   | Uncollected Funds
R10   | Customer Advises Originator is Not Known to Receiver and/or Originator is Not Authorized by Receiver to Debit Receiver’s Account
R11   | Customer Advises Entry Not in Accordance with the Terms of the Authorization
R12   | Account Sold to Another DFI
R13   | Invalid ACH Routing Number
R14   | Representative Payee Deceased or Unable to Continue in That Capacity
R15   | Beneficiary or Account Holder (Other Than a Representative Payee) Deceased
R16   | Account Frozen/Entry Returned Per OFAC Instruction
R17   | File Record Edit Criteria/Entry with Invalid Account Number Initiated Under Questionable Circumstances/Return of Improperly-Intiated Reversal
R18   | Improper Effective Entry Date
R19   | Amount Field Error
R20   | Non-Transaction Account
R21   | Invalid Company Identification
R22   | Invalid Individual ID Number
R23   | Credit Entry Refused by Receiver
R24   | Duplicate Entry
R25   | Addenda Error
R26   | Mandatory Field Error
R27   | Trace Number Error
R28   | Routing Number Check Digit Error
R29   | Corporate Customer Advises Not Authorized
R30   | RDFI Not Participant in Check Truncation Program
R31   | Permissible Return Entry (CCD and CTX only)
R32   | RDFI Non-Settlement
R33   | Return of XCK Entry
R34   | Limited Participation DFI
R35   | Return of Improper Debit Entry
R36   | Return of Improper Credit Entry
R37   | Source Document Presented for Payment
R38   | Stop Payment on Source Document
R39   | Improper Source Document/Source Document Presented for Payment
      - `transaction.hostResponse.reasonDescription` (string)
        Returns a description from the host.
      - `notificationId` (string)
        Notification ID value generated by Shift4 and returned in the response. Used for matching webhook notifications back to their original request.
        Example: "6ca3c55e-1b7c-4cad-8ae2-cac052b5510d"
      - `server` (object)
        Example: {"name":"TM01CE"}
      - `server.name` (string)
        The name of the server that processed the request.
        Example: "TM01CE"
    - ACH Distribute Status Update:
      - `event` (object)
        Example: {"type":"ach.distribute.status_update"}
      - `event.type` (string)
        ach.distribute.status_update

Occurs when the status of the ACH distribute request is updated.
        Example: "ach.distribute.status_update"
      - `token` (object)
        Example: {"value":"9829283019231234","type":"ACH"}
      - `token.value` (string, required)
        The token representing the customer's bank account credentials.
        Example: "9829283019231234"
      - `transaction` (object)
        Example: {"authSource":"A","responseCode":"A","invoice":"192029"}
      - `transaction.invoice` (string)
        10-digit invoice number assigned by the interface to identify a transaction. An invoice number serves as a unique key that identifies a transaction within a batch in Shift4's Gateway.

Note: For US and Canadian processing: Although the invoice number is sent as a JSON string it is a numeric value. No alpha characters are allowed.

For processing outside of the US and Canada alpha characters are allowed.
        Example: "192029"
      - `transaction.hostResponse` (object)
        Returns the response code detailing why the transaction was declined.
      - `transaction.hostResponse.reasonCode` (string)
        Returns a response code from the host.

Value | Description
------|-----------
C01   | Incorrect DFI Account Number
C02   | Incorrect Routing Number
C03   | Incorrect Routing Number and Incorrect DFI Account Number
C05   | Incorrect Transaction Code
C06   | Incorrect DFI Account Number and Incorrect Transaction Code
C07   | Incorrect Routing Number, Incorrect DFI Account Number, and Incorrect Transaction Code   | 
R01   | Insufficient Funds
R02   | Account Closed
R03   | No Account/ Unable to Locate Account
R04   | Invalid Account Number Structure
R05   | Unauthorized Debit to Consumer Account Using Corporate SEC Code
R06   | Returned per ODFI’s Request
R07   | Authorization Revoked by Customer
R08   | Payment Stopped
R09   | Uncollected Funds
R10   | Customer Advises Originator is Not Known to Receiver and/or Originator is Not Authorized by Receiver to Debit Receiver’s Account
R11   | Customer Advises Entry Not in Accordance with the Terms of the Authorization
R12   | Account Sold to Another DFI
R13   | Invalid ACH Routing Number
R14   | Representative Payee Deceased or Unable to Continue in That Capacity
R15   | Beneficiary or Account Holder (Other Than a Representative Payee) Deceased
R16   | Account Frozen/Entry Returned Per OFAC Instruction
R17   | File Record Edit Criteria/Entry with Invalid Account Number Initiated Under Questionable Circumstances/Return of Improperly-Intiated Reversal
R18   | Improper Effective Entry Date
R19   | Amount Field Error
R20   | Non-Transaction Account
R21   | Invalid Company Identification
R22   | Invalid Individual ID Number
R23   | Credit Entry Refused by Receiver
R24   | Duplicate Entry
R25   | Addenda Error
R26   | Mandatory Field Error
R27   | Trace Number Error
R28   | Routing Number Check Digit Error
R29   | Corporate Customer Advises Not Authorized
R30   | RDFI Not Participant in Check Truncation Program
R31   | Permissible Return Entry (CCD and CTX only)
R32   | RDFI Non-Settlement
R33   | Return of XCK Entry
R34   | Limited Participation DFI
R35   | Return of Improper Debit Entry
R36   | Return of Improper Credit Entry
R37   | Source Document Presented for Payment
R38   | Stop Payment on Source Document
R39   | Improper Source Document/Source Document Presented for Payment
      - `transaction.hostResponse.reasonDescription` (string)
        Returns a description from the host.
      - `notificationId` (string)
        Notification ID value generated by Shift4 and returned in the response. Used for matching webhook notifications back to their original request.
        Example: "921e41d4-e920-4b24-8bbf-0787379ad4df"
      - `server` (object)
        Example: {"name":"TM01CE"}
      - `server.name` (string)
        The name of the server that processed the request.
        Example: "TM01CE"


## Response 200 fields
