# ACH Transaction Status Webhooks

The ACH transaction status webhooks notify you when the status of an ACH transaction changes, such as from `SETTLED` to `CHARGEBACK`.

These webhook response types include the following ACH transaction statuses:

* [Chargeback](/api-reference/webhooks/working-with-webhooks/ach-transaction-status-webhooks/chargeback.md)
* [Returned](/api-reference/webhooks/working-with-webhooks/ach-transaction-status-webhooks/returned.md)
* [Rejected: Authorization Declined](/api-reference/webhooks/working-with-webhooks/ach-transaction-status-webhooks/rejected-authorization-declined.md)
* [Rejected: Account Is Invalid](/api-reference/webhooks/working-with-webhooks/ach-transaction-status-webhooks/rejected-account-is-invalid.md)
* [Rejected: Voiding](/api-reference/webhooks/working-with-webhooks/ach-transaction-status-webhooks/rejected-voiding.md)
* [Rejected: Voided](/api-reference/webhooks/working-with-webhooks/ach-transaction-status-webhooks/rejected-voided.md)
* [Settled](/api-reference/webhooks/working-with-webhooks/ach-transaction-status-webhooks/settled.md)
* [Updated](/api-reference/webhooks/working-with-webhooks/ach-transaction-status-webhooks/updated.md)

The following table describes the payload fields in each response type.

<table><thead><tr><th width="200.33331298828125" valign="top">Name</th><th width="115.00006103515625" valign="top">Data type</th><th width="204.6666259765625" valign="top">Description</th><th valign="top">Applies to (Response type → PayLoadType or new_status)</th></tr></thead><tbody><tr><td valign="top"><code>PayLoadType</code></td><td valign="top">string</td><td valign="top">Identifies the event type for routing and filtering. </td><td valign="top"><p><strong>Chargeback</strong> → <code>ach.status.chargeback</code> </p><p><br><strong>Returned</strong> → <code>ach.status.returned</code> </p><p><br><strong>Rejected: Authorization Declined</strong> → <code>ach.status.rejectedauthorizationdeclined</code> </p><p><br><strong>Rejected: Account Is Invalid</strong> → <code>ach.status.rejectedaccountisinvalid</code></p><p><br><strong>Rejected: Voiding</strong> → <code>ach.status.rejectedvoiding</code> </p><p><br><strong>Rejected: Voided</strong> → <code>ach.status.rejectedvoided</code> </p><p></p><p><strong>Settled</strong> → <code>ach.status.settled</code> </p><p></p><p><strong>Updated</strong> → <code>ach.status.updated</code> <br><br></p></td></tr><tr><td valign="top"><code>Payload</code></td><td valign="top">object</td><td valign="top">Contains the details of the status update.</td><td valign="top">All response types</td></tr><tr><td valign="top"><code>Payload.transaction_id</code></td><td valign="top">string</td><td valign="top">The unique identifier of the ACH transaction.</td><td valign="top">All response types</td></tr><tr><td valign="top"><code>Payload.new_status</code></td><td valign="top">string</td><td valign="top">The updated status of the transaction.</td><td valign="top">All response types</td></tr><tr><td valign="top"><code>Payload.previous_status</code></td><td valign="top">string</td><td valign="top">The <a href="https://docs.xplorpay.com/api-reference/api/payments/ach/ach-transaction">ACH transaction status</a> before the change.</td><td valign="top">All response types</td></tr><tr><td valign="top"><code>Payload.amount</code></td><td valign="top">string</td><td valign="top">The transaction amount. </td><td valign="top">All response types</td></tr><tr><td valign="top"><code>Payload.return_reason_code</code></td><td valign="top">string</td><td valign="top">The <a href="https://docs.xplorpay.com/api-reference/api/payments/ach/ach-transaction">ACH return code</a> that explains why the transaction was <strong>returned</strong>.</td><td valign="top"><p><strong>Returned</strong> → <code>RETURNED</code></p><p></p><p><strong>Updated</strong> → <code>SETTLED</code> /<code>CHARGEBACK</code>/<code>REJECTED: AUTHORIZATION DECLINED</code>/<code>REJECTED: VOIDED</code>/<code>RETURNED</code>/<code>REJECTED: ACCOUNT IS INVALID</code>/<code>REJECTED: VOIDING</code></p></td></tr><tr><td valign="top"><code>Payload.return_reason_description</code></td><td valign="top">string</td><td valign="top">A readable reason that matches the return code.</td><td valign="top"><p><strong>Returned</strong> → <code>RETURNED</code></p><p></p><p><strong>Updated</strong> →  <code>SETTLED</code> /<code>CHARGEBACK</code>/<code>REJECTED: AUTHORIZATION DECLINED</code>/<code>REJECTED: VOIDED</code>/<code>RETURNED</code>/<code>REJECTED: ACCOUNT IS INVALID</code>/<code>REJECTED: VOIDING</code></p></td></tr><tr><td valign="top"><code>Payload.rejection_reason_code</code></td><td valign="top">string</td><td valign="top">The ACH rejection/return code that explains why the transaction was <strong>rejected</strong>.</td><td valign="top"><p><strong>Rejected: Authorization Declined</strong> → <code>REJECTED: AUTHORIZATION DECLINED</code></p><p></p><p><strong>Rejected: Account Is Invalid</strong> → <code>REJECTED: ACCOUNT IS INVALID</code></p><p></p><p><strong>Rejected: Voiding</strong> → <code>REJECTED: VOIDING</code></p><p></p><p><strong>Rejected: Voided</strong> → <code>REJECTED: VOIDED</code></p><p></p><p><strong>Chargeback</strong> → <code>CHARGEBACK</code></p><p></p><p><strong>Updated</strong> → <code>SETTLED</code> /<code>CHARGEBACK</code>/<code>REJECTED: AUTHORIZATION DECLINED</code>/<code>REJECTED: VOIDED</code>/<code>RETURNED</code>/<code>REJECTED: ACCOUNT IS INVALID</code>/<code>REJECTED: VOIDING</code></p></td></tr><tr><td valign="top"><code>Payload.rejection_reason_description</code></td><td valign="top">string</td><td valign="top">A readable reason that matches the <strong>rejection</strong>/<strong>return</strong> code.</td><td valign="top"><p><strong>Rejected: Authorization Declined</strong> → <code>REJECTED: AUTHORIZATION DECLINED</code></p><p></p><p><strong>Rejected: Account Is Invalid</strong> → <code>REJECTED: ACCOUNT IS INVALID</code></p><p></p><p><strong>Rejected: Voiding</strong> → <code>REJECTED: VOIDING</code></p><p></p><p><strong>Rejected: Voided</strong> → <code>REJECTED: VOIDED</code></p><p></p><p><strong>Chargeback</strong> → <code>CHARGEBACK</code></p><p></p><p><strong>Updated</strong> →  <code>SETTLED</code> /<code>CHARGEBACK</code>/<code>REJECTED: AUTHORIZATION DECLINED</code>/<code>REJECTED: VOIDED</code>/<code>RETURNED</code>/<code>REJECTED: ACCOUNT IS INVALID</code>/<code>REJECTED: VOIDING</code></p></td></tr><tr><td valign="top"><code>Payload.timestamp</code></td><td valign="top">string</td><td valign="top">The date in YYYY-MM-DD format and UTC time when the status changed.</td><td valign="top">All response types</td></tr><tr><td valign="top"><code>Payload.merchant_id</code></td><td valign="top">string</td><td valign="top">The unique identifier of the merchant associated with the transaction.</td><td valign="top">All response types</td></tr><tr><td valign="top"><code>Payload.currency</code></td><td valign="top">string</td><td valign="top">The three‑letter currency code.</td><td valign="top">All response types</td></tr><tr><td valign="top"><code>Payload.settlement_date</code></td><td valign="top">string</td><td valign="top">The date when the transaction was settled, in YYYY-MM-DD format. </td><td valign="top"><strong>Settled</strong> → <code>SETTLED</code></td></tr></tbody></table>


---

# Agent Instructions: 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:

```
GET https://docs.xplorpay.com/api-reference/webhooks/working-with-webhooks/ach-transaction-status-webhooks.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
