---
title: "ACH Debit Webhook"
method: POST
path: "/achdebit"
tags: ["ACH Debit Webhook"]
---

# ACH Debit Webhook

`POST /achdebit`

## Request

- Base URL: `https://client.domain.com`
- URL: `https://client.domain.com/achdebit`
- Auth: none declared. Required headers: `X-Request-ID`

Use this webhook to approve or deny incoming ACH debits. Use the `response_code`  field in the response to communicate your decision to SoFi Tech Solutions.

## Headers

- `X-Request-ID` string, uuid, required

## Request body

- object
  - `account_number` string, required: <a href="doc:about-accounts#prn" target="_blank">Payment reference number</a> for the account Example: `"999200002022"`
  - `account_status` string, required: Account status code. See the possible values in the <a href="ref:api-reference-account-statuses" target="_blank">Account Statuses</a> enumeration. Example: `"N"`
  - `transaction_amount` number, float, required: The amount of the ACH debit. Example: `150.00`
  - `currency` string, required: The three-digit currency code for the amounts. ISO 4217 Numeric Currency Code. 3 digits. Example: `"840"`
  - `available_funds` number, float, required: Amount of funds available to the account holder. Example: `500.00`
  - `ach_name` string, required: Name of the ACH account holder. Example: `"John Doe"`
  - `recipient` string, required: Name of the <<glossary:ODFI>> that receives the debited funds. Example: `"Widgets Incorporated"`
  - `sec` string, required: The three-character <a href="ref:api-reference-sec-codes-requirements-for-ach" target="_blank">standard entry class (SEC)</a> code. Example: `"WEB"`
  - `is_international` boolean, required: Whether this is an international transaction. Example: `"false"`
  - `description` string, required: Description from the ACH header. Example: `"PAYROLL "`
  - `timestamp` string, required: Timestamp when this webhook message was sent. Format is `<timestamp><timezone>` where `timestamp` is `YYYYmmdd:HHMMSS` and `timezone` is always `MST`. Example: `"20270315:121504MST"`
  - `transaction_id` integer, required: The unique identifier of the ACH transaction. Also called `ach_trans_id` and `deposit_transaction_id` in the Program API. Example: `32146803`
  - `version` '1.0', required: The version of this API. Hard-coded to `"1.0"`.
  - `batch_header` string, required: The batch header for the <<glossary:Nacha file>> that contained this ACH debit entry detail record. Example: `"5225WIDGET INC DISCRETIONARY DATA 1234567890POSPAYROLL 2027052003070642123456780000001"`
  - `source_trace` string, required: The source trace number from the ACH record. Example: `"123456781234567"`
  - `jwt` string: The JSON web token (JWT) that authenticates the HTTP request from SoFi Tech Solutions. See the <a href="ref:api-reference-external-trans-api-about-external-trans-api-security" target="_blank">security overview</a> for more information and an example.

## Response `200`

Your decision and instructions for SoFi Tech Solutions.

- object
  - `response_code` string, required: Response code indicating how to process the ACH debit transaction. Possible response codes: - `00` &mdash; Approve - `R01` &mdash; Reject; Insufficient funds - `R07` &mdash; Reject; Authorization revoked by customer - `R08` &mdash; Reject; Payment stopped - `R10` &mdash; Reject; Customer advises not authorized - `R16` &mdash; Reject; Bank account frozen - `R20` &mdash; Reject; Non-payment bank account - `98` &mdash; System Error; Reject and do not retry - `99` &mdash; System Error; Retry later You can use `99` to tell SoFi Tech Solutions to retry later if your product is configured for retries.

---

[API](https://skmtc.dev/galileo-ft/apis/external-trans-api.md) - [All operations](https://skmtc.dev/galileo-ft/apis/external-trans-api/llms.txt) - [OpenAPI document](https://skmtc.dev/galileo-ft/apis/external-trans-api/revisions/03b2e38d6647?raw)
