> For the complete documentation index, see [llms.txt](https://docs.xplorpay.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.xplorpay.com/api-reference/resources/ach-request-validation-response-and-return-codes/ach-return-codes.md).

# ACH Return Codes

### **ACH Return Codes**

Returned ACH payments will always come with an ACH return code indicating why a customer’s payment was rejected. The most common reasons are insufficient funds, closed accounts, or invalid account information.

The `returned-code` and `returned-message` fields in the ACH transaction response contain the return code and corresponding message.

The table below lists all of the possible ACH return codes.

<table><thead><tr><th width="99">Code</th><th width="231.33331298828125" valign="top">Message</th><th valign="top">Description</th></tr></thead><tbody><tr><td><code>R01</code></td><td valign="top">Insufficient funds.</td><td valign="top">The available balance or cash reserve balance is not sufficient to cover the amount of the debit entry.</td></tr><tr><td><code>R02</code></td><td valign="top">Account closed. </td><td valign="top">A previously open account is now closed.</td></tr><tr><td><code>R03</code></td><td valign="top">No account or unable to locate account.</td><td valign="top">The account number does not correspond to the individual identified in the entry or a valid account.</td></tr><tr><td><code>R04</code></td><td valign="top">Invalid account number.</td><td valign="top">The account number fails the check digit validation or may contain an incorrect number of digits.</td></tr><tr><td><code>R05</code></td><td valign="top">Unauthorized debit to consumer account.</td><td valign="top">A business debit entry was transmitted to a members consumer account, and the member had not authorized the entry.</td></tr><tr><td><code>R06</code></td><td valign="top">Returned per ODFI’s request.</td><td valign="top">The ODFI has requested that the RDFI return the entry.</td></tr><tr><td><code>R07</code></td><td valign="top">Authorization revoked by customer.</td><td valign="top">The member who previously authorized an entry has revoked authorization with the Originator.</td></tr><tr><td><code>R08</code></td><td valign="top">Payment stopped or stop payment on item.</td><td valign="top">The member had previously requested a stop payment of a single or recurring entry.</td></tr><tr><td><code>R09</code></td><td valign="top">Uncollected funds.</td><td valign="top">Available balance is sufficient, but collected balance is not sufficient to cover the entry.</td></tr><tr><td><code>R10</code></td><td valign="top">Customer advises not authorized.</td><td valign="top">The member advises not authorized, notice not provided, improper source document, or amount of entry not accurately obtained from source document.</td></tr><tr><td><code>R11</code></td><td valign="top">Check truncation entry return.</td><td valign="top">To be used when returning a check truncation entry.</td></tr><tr><td><code>R12</code></td><td valign="top">Branch sold to another DFI.</td><td valign="top">RDFI unable to post entry destined for a bank account maintained at a branch sold to another financial institution.</td></tr><tr><td><code>R13</code></td><td valign="top">Invalid ACH routing number. </td><td valign="top">The financial institution does not receive commercial ACH entries.</td></tr><tr><td><code>R14</code></td><td valign="top">Representment payee deceased or unable to continue in that capacity.</td><td valign="top">The representative payee is deceased or unable to continue in that capacity, beneficiary is not deceased.</td></tr><tr><td><code>R15</code></td><td valign="top">Beneficiary of account holder deceased.</td><td valign="top">The beneficiary or account Holder Deceased.</td></tr><tr><td><code>R16</code></td><td valign="top">Account frozen.</td><td valign="top">Access to account is restricted due to specific action taken by the RDFI or by legal action.</td></tr><tr><td><code>R17</code></td><td valign="top">File record edit criteria.</td><td valign="top">Fields rejected by RDFI processing (identified in return addenda).</td></tr><tr><td><code>R18</code></td><td valign="top">Improper effective entry date.</td><td valign="top">Entries have been presented prior to the first available processing window for the effective date.</td></tr><tr><td><code>R19</code></td><td valign="top">Amount field error. </td><td valign="top">Improper formatting of the amount field.</td></tr><tr><td><code>R20</code></td><td valign="top">Non transaction account.</td><td valign="top">Policies or regulations (such as Regulation D) prohibit or limit activity to the account indicated.</td></tr><tr><td><code>R21</code></td><td valign="top">Invalid company identification.</td><td valign="top">The company ID information not valid (normally CIE entries).</td></tr><tr><td><code>R22</code></td><td valign="top">Invalid individual ID number.</td><td valign="top">The individual id used by receiver is incorrect (CIE entries).</td></tr><tr><td><code>R23</code></td><td valign="top">Credit entry refused by receiver.</td><td valign="top">Receiver returned entry because minimum or exact amount not remitted, bank account is subject to litigation, or payment represents an overpayment, originator is not known to receiver or receiver has not authorized this credit entry to this bank account.</td></tr><tr><td><code>R24</code></td><td valign="top">Duplicate entry.</td><td valign="top">RDFI has received a duplicate entry.</td></tr><tr><td><code>R25</code></td><td valign="top">Addenda error.</td><td valign="top">Improper formatting of the addenda records information.</td></tr><tr><td><code>R26</code></td><td valign="top">Mandatory field error.</td><td valign="top">Improper information in one of the mandatory fields.</td></tr><tr><td><code>R27</code></td><td valign="top">Trace number error.</td><td valign="top">Original entry trace number is not valid for return entry; or addenda trace numbers do not correspond with entry detail record.</td></tr><tr><td><code>R28</code></td><td valign="top">Routing number or check digit error.</td><td valign="top">Check digit for the transit routing number is incorrect.</td></tr><tr><td><code>R29</code></td><td valign="top">Corporate customer advises not authorized.</td><td valign="top">RDFI has been notified by business account holder that a specific transaction is unauthorized.</td></tr><tr><td><code>R30</code></td><td valign="top">RDFI not participant in check truncation program.</td><td valign="top">The financial institution not participating in automated check safekeeping application.</td></tr><tr><td><code>R31</code></td><td valign="top">Permissible return entry.</td><td valign="top">RDFI has been notified by business account holder that a specific transaction is unauthorized.</td></tr><tr><td><code>R32</code></td><td valign="top">RDFI non settlement.</td><td valign="top">RDFI is not able to settle the entry.</td></tr><tr><td><code>R33</code></td><td valign="top">Return of XCK entry.</td><td valign="top">RDFI determines at its sole discretion to return an XCK entry; an XCK return entry may be initiated by midnight of the sixtieth day following the settlement date if the XCK entry.</td></tr><tr><td><code>R34</code></td><td valign="top">Limited participation DFI.</td><td valign="top">RDFI participation has been limited by a federal or state supervisor.</td></tr><tr><td><code>R35</code></td><td valign="top">Return of improper debit entry.</td><td valign="top">ACH debit not permitted for use with the CIE standard entry class code (except for reversals).</td></tr><tr><td><code>R36</code></td><td valign="top">Return of improper credit entry.</td><td valign="top">None</td></tr><tr><td><code>R37</code></td><td valign="top">Source Document Presented for Payment Check used for an ARC, BOC or POP entry has also been presented for payment.</td><td valign="top">None</td></tr><tr><td><code>R38</code></td><td valign="top">Stop payment on source document.</td><td valign="top">Stop payment has been placed on a check used for an ARC entry.</td></tr><tr><td><code>R39</code></td><td valign="top">Improper source document</td><td valign="top">The RDFI determined that the source document used for an ARC, BOC, or POP entry is improper, or that both the ACH entry and the related source document were presented for payment and posted to the receiver's account.</td></tr><tr><td><code>R40</code></td><td valign="top">Return of ENR entry by federal government agency (ENR only).</td><td valign="top">None</td></tr><tr><td><code>R41</code></td><td valign="top">Invalid transaction code (ENR only).</td><td valign="top">None</td></tr><tr><td><code>R42</code></td><td valign="top">Routing number or check digit error (ENR only).</td><td valign="top">None</td></tr><tr><td><code>R43</code></td><td valign="top">Invalid DFI account number (ENR only).</td><td valign="top">None</td></tr><tr><td><code>R44</code></td><td valign="top">Invalid individual ID number (ENR only).</td><td valign="top">None</td></tr><tr><td><code>R45</code></td><td valign="top">Invalid individual name/company name (ENR only).</td><td valign="top">None</td></tr><tr><td><code>R46</code></td><td valign="top">Invalid representative payee indicator (ENR only).</td><td valign="top">None</td></tr><tr><td><code>R47</code></td><td valign="top">Duplicate enrollment.</td><td valign="top">None</td></tr><tr><td><code>R50</code></td><td valign="top">State law affecting RCK acceptance.</td><td valign="top">None</td></tr><tr><td><code>R51</code></td><td valign="top">Item is ineligible, notice not provided, signature not genuine.</td><td valign="top">None</td></tr><tr><td><code>R52</code></td><td valign="top">Stop payment on item.</td><td valign="top">None</td></tr><tr><td><code>R53</code></td><td valign="top">Item and ACH entry presented for payment</td><td valign="top">An item related to an RCK entry was also presented for payment.</td></tr><tr><td><code>R61</code></td><td valign="top">Misrouted return.</td><td valign="top">Return entry was sent by RDFI to an incorrect ODFI routing/transit number.</td></tr><tr><td><code>R62</code></td><td valign="top">Incorrect trace number.</td><td valign="top">None</td></tr><tr><td><code>R63</code></td><td valign="top">Incorrect dollar amount.</td><td valign="top">None</td></tr><tr><td><code>R64</code></td><td valign="top">Incorrect individual identification.</td><td valign="top">None</td></tr><tr><td><code>R65</code></td><td valign="top">Incorrect transaction code.</td><td valign="top">None</td></tr><tr><td><code>R66</code></td><td valign="top">Incorrect company identification.</td><td valign="top">None</td></tr><tr><td><code>R67</code></td><td valign="top">Duplicate return.</td><td valign="top">ODFI has received more than one return entry for the same original entry.</td></tr><tr><td><code>R68</code></td><td valign="top">Untimely return.</td><td valign="top">Return entry did not meet the return deadline.</td></tr><tr><td><code>R69</code></td><td valign="top">Multiple errors.</td><td valign="top">None</td></tr><tr><td><code>R70</code></td><td valign="top">Permissible return entry not accepted.</td><td valign="top">None</td></tr><tr><td><code>R71</code></td><td valign="top">Misrouted dishonored return.</td><td valign="top">None</td></tr><tr><td><code>R72</code></td><td valign="top">Untimely dishonored return.</td><td valign="top">None</td></tr><tr><td><code>R73</code></td><td valign="top">Timely original return.</td><td valign="top">None</td></tr><tr><td><code>R74</code></td><td valign="top">Corrected return.</td><td valign="top">None</td></tr><tr><td><code>R75</code></td><td valign="top">Return not a duplicate.</td><td valign="top">The return entry was not a duplicate of an entry previously returned by the RDFI.</td></tr><tr><td><code>R76</code></td><td valign="top">No errors found.</td><td valign="top">The original return entry did not contain the errors indicated by the ODFI in the dishonored return entry.</td></tr><tr><td><code>R80</code></td><td valign="top">Cross-border payment coding error.</td><td valign="top">None</td></tr><tr><td><code>R81</code></td><td valign="top">Nonparticipant in cross-border program.</td><td valign="top">None</td></tr><tr><td><code>R82</code></td><td valign="top">Invalid foreign receiving DFI identification.</td><td valign="top">None</td></tr><tr><td><code>R83</code></td><td valign="top">Foreign receiving DFI unable to settle.</td><td valign="top">The IAT entry is being returned because of settlement problems in the foreign payment system.</td></tr><tr><td><code>R84</code></td><td valign="top">Entry not processed by gateway.</td><td valign="top">The outbound IAT entry was not processed and is being returned at the gateway's discretion because processing may expose the gateway to excessive risk or because the foreign payment system does not support the required processing functions.</td></tr><tr><td><code>R85</code></td><td valign="top">Incorrectly coded outbound international payment.</td><td valign="top">The RDFI or gateway identified the entry as an outbound international payment and is returning it because the SEC code does not contain information required by the gateway for OFAC compliance.</td></tr></tbody></table>

Xplor Pay also returns additional ACH expedited return codes from the processor. These codes are returned in the `returned-code` and `returned-message` fields of the ACH transaction response.

The table below lists the additional ACH expedited return codes.

<table data-search="true"><thead><tr><th width="95.60003662109375">Code</th><th width="232">Message</th><th>Description</th></tr></thead><tbody><tr><td><code>E02</code></td><td>Account closed.</td><td>A previously open account is now closed.</td></tr><tr><td><code>E03</code></td><td>No account or unable to locate account.</td><td>The account number does not correspond to the individual identified in the entry or a valid account.</td></tr><tr><td><code>E04</code></td><td>Invalid account number.</td><td>The account number fails the check digit validation or may contain an incorrect number of digits.</td></tr><tr><td><code>E05</code></td><td>Unauthorized debit to consumer account using corporate SEC code.</td><td>A business debit entry was transmitted to a members consumer account, and the member had not authorized the entry.</td></tr><tr><td><code>E07</code></td><td>Authorization revoked by customer.</td><td>The member who previously authorized an entry has revoked authorization with the Originator.</td></tr><tr><td><code>E08</code></td><td>Payment stopped.</td><td>The member had previously requested a stop payment of a single or recurring entry.</td></tr><tr><td><code>E10</code></td><td>Customer advises not authorized.</td><td>The member advises not authorized, notice not provided, improper source document, or amount of entry not accurately obtained from source document.</td></tr><tr><td><code>E11</code></td><td>Customer advises entry not in accordance with the terms of the authorization.</td><td>The transaction does not conform to the terms of the authorization and must be corrected by the merchant.</td></tr><tr><td><code>E13</code></td><td>RDFI not qualified to participate.</td><td>The RDFI is not qualified to participate in ACH processing.</td></tr><tr><td><code>E14</code></td><td>Representment payee deceased or unable to continue in that capacity.</td><td>The representative payee is deceased or unable to continue in that capacity, beneficiary is not deceased.</td></tr><tr><td><code>E15</code></td><td>Beneficiary of account holder deceased.</td><td>The beneficiary or account holder is deceased.</td></tr><tr><td><code>E16</code></td><td>Account frozen.</td><td>Access to account is restricted due to specific action taken by the RDFI or by legal action.</td></tr><tr><td><code>E17</code></td><td>File record edit criteria.</td><td>Fields rejected by RDFI processing (identified in return addenda).</td></tr><tr><td><code>E20</code></td><td>Non transaction account.</td><td>Policies or regulations (such as Regulation D) prohibit or limit activity to the account indicated.</td></tr><tr><td><code>E29</code></td><td>Corporate customer advises not authorized.</td><td>RDFI has been notified by business account holder that a specific transaction is unauthorized.</td></tr><tr><td><code>E92</code></td><td>Invalid image.</td><td>The image was not accepted by the processing bank for a prior check, and the processor has blocked future submissions.</td></tr><tr><td><code>E93</code></td><td>Non-negotiable.</td><td>The check is non-negotiable and cannot be processed.</td></tr><tr><td><code>E95</code></td><td>Breach of warranty.</td><td>The check was returned because a warranty associated with the check or its processing was breached.</td></tr><tr><td><code>E96</code></td><td>Counterfeit or forgery.</td><td>The check was identified as counterfeit or forged.</td></tr><tr><td><code>E97</code></td><td>Refer to maker.</td><td>Customer should contact the bank to determine why the check was returned.</td></tr></tbody></table>

### **ACH Authorization Decline Messages**

ACH transaction decline includes a **DECLINE CHECK** message that provides information about why the transaction was declined.&#x20;

Unlike ACH return codes (for example, `R01` ,`R03`, etc.), these messages are returned during real time authorization. The text following **DECLINE CHECK** is not an exhaustive list and may vary depending on the validation or authorization rule that triggered the decline, such as unpaid checks, E-Code verification, velocity limits, merchant check limits, or fraud detection.

The table below lists common decline check authorization messages.

<table data-search="true"><thead><tr><th width="197.2000732421875">Authorization message</th><th width="172">Decline reason</th><th>Description</th></tr></thead><tbody><tr><td>DECLINE CHECK E-CODE FLAG</td><td>E-code validation</td><td>The check was previously returned with a fatal ACH return code (for example, <code>R03</code>, or <code>R10</code>). If E-Code declines are enabled, this message can be returned during real-time authorization.</td></tr><tr><td>DECLINE CHECK DAY LOC $25000</td><td>Velocity or transaction amount limit exceeded</td><td>The transaction exceeded the configured merchant or checkwriter velocity limit for the day, location, or rolling time window. In this example, the configured transaction limit is <strong>$25,000</strong>.</td></tr><tr><td>DECLINE CHECK – Failed Advanced Account Validation</td><td>Account validation failure</td><td>The transaction failed advanced account validation during authorization.</td></tr><tr><td>DECLINE CHECK DAY LOC #CHKS=1</td><td>Check count limit exceeded</td><td>The configured check-count limit was exceeded. In this example, only <strong>one check</strong> is permitted during the applicable validation period.</td></tr><tr><td>DECLINE CHECK DAY LOC #CHKS=3</td><td>Check count limit exceeded</td><td>The configured check-count limit was exceeded. In this example, the configured limit is <strong>three checks</strong> during the applicable validation period.</td></tr><tr><td>DECLINE CHECK DAY LOC</td><td>Velocity or transaction limit exceeded</td><td>The transaction exceeded a configured merchant or checkwriter velocity limit. The message does not include the configured threshold and may be returned for daily, location-based, or rolling time-window validation rules.</td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.xplorpay.com/api-reference/resources/ach-request-validation-response-and-return-codes/ach-return-codes.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
