cURL
curl --request POST \
--url https://api.finosu.com/ach-returns \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"customerId": "<string>",
"loanId": "<string>",
"paymentId": "<string>",
"systemSource": "<string>",
"paymentDate": "2023-11-07T05:31:56Z",
"paymentReverseDate": "2023-11-07T05:31:56Z",
"paymentReversed": true,
"paymentReverseReasonCode": "<string>",
"paymentReverseComments": "<string>",
"paymentType": "<string>",
"paymentAmount": 123,
"achSubmittedDate": "2023-11-07T05:31:56Z",
"achSettlementDate": "2023-11-07T05:31:56Z",
"achStatus": "<string>",
"achReturnCode": "<string>",
"achReturnDate": "2023-11-07T05:31:56Z",
"achReturnReason": "<string>",
"achCorrectionCode": "<string>",
"achCorrectedAbaNumber": "<string>",
"achCorrectedAccountNumber": "<string>",
"achCorrectionDate": "2023-11-07T05:31:56Z",
"debitStatus": "<string>",
"debitDeclineReason": "<string>",
"overallReturnCode": "<string>",
"isMetadataError": false
}
'import requests
url = "https://api.finosu.com/ach-returns"
payload = {
"customerId": "<string>",
"loanId": "<string>",
"paymentId": "<string>",
"systemSource": "<string>",
"paymentDate": "2023-11-07T05:31:56Z",
"paymentReverseDate": "2023-11-07T05:31:56Z",
"paymentReversed": True,
"paymentReverseReasonCode": "<string>",
"paymentReverseComments": "<string>",
"paymentType": "<string>",
"paymentAmount": 123,
"achSubmittedDate": "2023-11-07T05:31:56Z",
"achSettlementDate": "2023-11-07T05:31:56Z",
"achStatus": "<string>",
"achReturnCode": "<string>",
"achReturnDate": "2023-11-07T05:31:56Z",
"achReturnReason": "<string>",
"achCorrectionCode": "<string>",
"achCorrectedAbaNumber": "<string>",
"achCorrectedAccountNumber": "<string>",
"achCorrectionDate": "2023-11-07T05:31:56Z",
"debitStatus": "<string>",
"debitDeclineReason": "<string>",
"overallReturnCode": "<string>",
"isMetadataError": False
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customerId: '<string>',
loanId: '<string>',
paymentId: '<string>',
systemSource: '<string>',
paymentDate: '2023-11-07T05:31:56Z',
paymentReverseDate: '2023-11-07T05:31:56Z',
paymentReversed: true,
paymentReverseReasonCode: '<string>',
paymentReverseComments: '<string>',
paymentType: '<string>',
paymentAmount: 123,
achSubmittedDate: '2023-11-07T05:31:56Z',
achSettlementDate: '2023-11-07T05:31:56Z',
achStatus: '<string>',
achReturnCode: '<string>',
achReturnDate: '2023-11-07T05:31:56Z',
achReturnReason: '<string>',
achCorrectionCode: '<string>',
achCorrectedAbaNumber: '<string>',
achCorrectedAccountNumber: '<string>',
achCorrectionDate: '2023-11-07T05:31:56Z',
debitStatus: '<string>',
debitDeclineReason: '<string>',
overallReturnCode: '<string>',
isMetadataError: false
})
};
fetch('https://api.finosu.com/ach-returns', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.finosu.com/ach-returns",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'customerId' => '<string>',
'loanId' => '<string>',
'paymentId' => '<string>',
'systemSource' => '<string>',
'paymentDate' => '2023-11-07T05:31:56Z',
'paymentReverseDate' => '2023-11-07T05:31:56Z',
'paymentReversed' => true,
'paymentReverseReasonCode' => '<string>',
'paymentReverseComments' => '<string>',
'paymentType' => '<string>',
'paymentAmount' => 123,
'achSubmittedDate' => '2023-11-07T05:31:56Z',
'achSettlementDate' => '2023-11-07T05:31:56Z',
'achStatus' => '<string>',
'achReturnCode' => '<string>',
'achReturnDate' => '2023-11-07T05:31:56Z',
'achReturnReason' => '<string>',
'achCorrectionCode' => '<string>',
'achCorrectedAbaNumber' => '<string>',
'achCorrectedAccountNumber' => '<string>',
'achCorrectionDate' => '2023-11-07T05:31:56Z',
'debitStatus' => '<string>',
'debitDeclineReason' => '<string>',
'overallReturnCode' => '<string>',
'isMetadataError' => false
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.finosu.com/ach-returns"
payload := strings.NewReader("{\n \"customerId\": \"<string>\",\n \"loanId\": \"<string>\",\n \"paymentId\": \"<string>\",\n \"systemSource\": \"<string>\",\n \"paymentDate\": \"2023-11-07T05:31:56Z\",\n \"paymentReverseDate\": \"2023-11-07T05:31:56Z\",\n \"paymentReversed\": true,\n \"paymentReverseReasonCode\": \"<string>\",\n \"paymentReverseComments\": \"<string>\",\n \"paymentType\": \"<string>\",\n \"paymentAmount\": 123,\n \"achSubmittedDate\": \"2023-11-07T05:31:56Z\",\n \"achSettlementDate\": \"2023-11-07T05:31:56Z\",\n \"achStatus\": \"<string>\",\n \"achReturnCode\": \"<string>\",\n \"achReturnDate\": \"2023-11-07T05:31:56Z\",\n \"achReturnReason\": \"<string>\",\n \"achCorrectionCode\": \"<string>\",\n \"achCorrectedAbaNumber\": \"<string>\",\n \"achCorrectedAccountNumber\": \"<string>\",\n \"achCorrectionDate\": \"2023-11-07T05:31:56Z\",\n \"debitStatus\": \"<string>\",\n \"debitDeclineReason\": \"<string>\",\n \"overallReturnCode\": \"<string>\",\n \"isMetadataError\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.finosu.com/ach-returns")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"customerId\": \"<string>\",\n \"loanId\": \"<string>\",\n \"paymentId\": \"<string>\",\n \"systemSource\": \"<string>\",\n \"paymentDate\": \"2023-11-07T05:31:56Z\",\n \"paymentReverseDate\": \"2023-11-07T05:31:56Z\",\n \"paymentReversed\": true,\n \"paymentReverseReasonCode\": \"<string>\",\n \"paymentReverseComments\": \"<string>\",\n \"paymentType\": \"<string>\",\n \"paymentAmount\": 123,\n \"achSubmittedDate\": \"2023-11-07T05:31:56Z\",\n \"achSettlementDate\": \"2023-11-07T05:31:56Z\",\n \"achStatus\": \"<string>\",\n \"achReturnCode\": \"<string>\",\n \"achReturnDate\": \"2023-11-07T05:31:56Z\",\n \"achReturnReason\": \"<string>\",\n \"achCorrectionCode\": \"<string>\",\n \"achCorrectedAbaNumber\": \"<string>\",\n \"achCorrectedAccountNumber\": \"<string>\",\n \"achCorrectionDate\": \"2023-11-07T05:31:56Z\",\n \"debitStatus\": \"<string>\",\n \"debitDeclineReason\": \"<string>\",\n \"overallReturnCode\": \"<string>\",\n \"isMetadataError\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.finosu.com/ach-returns")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customerId\": \"<string>\",\n \"loanId\": \"<string>\",\n \"paymentId\": \"<string>\",\n \"systemSource\": \"<string>\",\n \"paymentDate\": \"2023-11-07T05:31:56Z\",\n \"paymentReverseDate\": \"2023-11-07T05:31:56Z\",\n \"paymentReversed\": true,\n \"paymentReverseReasonCode\": \"<string>\",\n \"paymentReverseComments\": \"<string>\",\n \"paymentType\": \"<string>\",\n \"paymentAmount\": 123,\n \"achSubmittedDate\": \"2023-11-07T05:31:56Z\",\n \"achSettlementDate\": \"2023-11-07T05:31:56Z\",\n \"achStatus\": \"<string>\",\n \"achReturnCode\": \"<string>\",\n \"achReturnDate\": \"2023-11-07T05:31:56Z\",\n \"achReturnReason\": \"<string>\",\n \"achCorrectionCode\": \"<string>\",\n \"achCorrectedAbaNumber\": \"<string>\",\n \"achCorrectedAccountNumber\": \"<string>\",\n \"achCorrectionDate\": \"2023-11-07T05:31:56Z\",\n \"debitStatus\": \"<string>\",\n \"debitDeclineReason\": \"<string>\",\n \"overallReturnCode\": \"<string>\",\n \"isMetadataError\": false\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"payment_method_disabled": true
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Payments
Submit ACH Return
Receive ACH return information and update the matching payment records.
POST
/
ach-returns
cURL
curl --request POST \
--url https://api.finosu.com/ach-returns \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"customerId": "<string>",
"loanId": "<string>",
"paymentId": "<string>",
"systemSource": "<string>",
"paymentDate": "2023-11-07T05:31:56Z",
"paymentReverseDate": "2023-11-07T05:31:56Z",
"paymentReversed": true,
"paymentReverseReasonCode": "<string>",
"paymentReverseComments": "<string>",
"paymentType": "<string>",
"paymentAmount": 123,
"achSubmittedDate": "2023-11-07T05:31:56Z",
"achSettlementDate": "2023-11-07T05:31:56Z",
"achStatus": "<string>",
"achReturnCode": "<string>",
"achReturnDate": "2023-11-07T05:31:56Z",
"achReturnReason": "<string>",
"achCorrectionCode": "<string>",
"achCorrectedAbaNumber": "<string>",
"achCorrectedAccountNumber": "<string>",
"achCorrectionDate": "2023-11-07T05:31:56Z",
"debitStatus": "<string>",
"debitDeclineReason": "<string>",
"overallReturnCode": "<string>",
"isMetadataError": false
}
'import requests
url = "https://api.finosu.com/ach-returns"
payload = {
"customerId": "<string>",
"loanId": "<string>",
"paymentId": "<string>",
"systemSource": "<string>",
"paymentDate": "2023-11-07T05:31:56Z",
"paymentReverseDate": "2023-11-07T05:31:56Z",
"paymentReversed": True,
"paymentReverseReasonCode": "<string>",
"paymentReverseComments": "<string>",
"paymentType": "<string>",
"paymentAmount": 123,
"achSubmittedDate": "2023-11-07T05:31:56Z",
"achSettlementDate": "2023-11-07T05:31:56Z",
"achStatus": "<string>",
"achReturnCode": "<string>",
"achReturnDate": "2023-11-07T05:31:56Z",
"achReturnReason": "<string>",
"achCorrectionCode": "<string>",
"achCorrectedAbaNumber": "<string>",
"achCorrectedAccountNumber": "<string>",
"achCorrectionDate": "2023-11-07T05:31:56Z",
"debitStatus": "<string>",
"debitDeclineReason": "<string>",
"overallReturnCode": "<string>",
"isMetadataError": False
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customerId: '<string>',
loanId: '<string>',
paymentId: '<string>',
systemSource: '<string>',
paymentDate: '2023-11-07T05:31:56Z',
paymentReverseDate: '2023-11-07T05:31:56Z',
paymentReversed: true,
paymentReverseReasonCode: '<string>',
paymentReverseComments: '<string>',
paymentType: '<string>',
paymentAmount: 123,
achSubmittedDate: '2023-11-07T05:31:56Z',
achSettlementDate: '2023-11-07T05:31:56Z',
achStatus: '<string>',
achReturnCode: '<string>',
achReturnDate: '2023-11-07T05:31:56Z',
achReturnReason: '<string>',
achCorrectionCode: '<string>',
achCorrectedAbaNumber: '<string>',
achCorrectedAccountNumber: '<string>',
achCorrectionDate: '2023-11-07T05:31:56Z',
debitStatus: '<string>',
debitDeclineReason: '<string>',
overallReturnCode: '<string>',
isMetadataError: false
})
};
fetch('https://api.finosu.com/ach-returns', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.finosu.com/ach-returns",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'customerId' => '<string>',
'loanId' => '<string>',
'paymentId' => '<string>',
'systemSource' => '<string>',
'paymentDate' => '2023-11-07T05:31:56Z',
'paymentReverseDate' => '2023-11-07T05:31:56Z',
'paymentReversed' => true,
'paymentReverseReasonCode' => '<string>',
'paymentReverseComments' => '<string>',
'paymentType' => '<string>',
'paymentAmount' => 123,
'achSubmittedDate' => '2023-11-07T05:31:56Z',
'achSettlementDate' => '2023-11-07T05:31:56Z',
'achStatus' => '<string>',
'achReturnCode' => '<string>',
'achReturnDate' => '2023-11-07T05:31:56Z',
'achReturnReason' => '<string>',
'achCorrectionCode' => '<string>',
'achCorrectedAbaNumber' => '<string>',
'achCorrectedAccountNumber' => '<string>',
'achCorrectionDate' => '2023-11-07T05:31:56Z',
'debitStatus' => '<string>',
'debitDeclineReason' => '<string>',
'overallReturnCode' => '<string>',
'isMetadataError' => false
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.finosu.com/ach-returns"
payload := strings.NewReader("{\n \"customerId\": \"<string>\",\n \"loanId\": \"<string>\",\n \"paymentId\": \"<string>\",\n \"systemSource\": \"<string>\",\n \"paymentDate\": \"2023-11-07T05:31:56Z\",\n \"paymentReverseDate\": \"2023-11-07T05:31:56Z\",\n \"paymentReversed\": true,\n \"paymentReverseReasonCode\": \"<string>\",\n \"paymentReverseComments\": \"<string>\",\n \"paymentType\": \"<string>\",\n \"paymentAmount\": 123,\n \"achSubmittedDate\": \"2023-11-07T05:31:56Z\",\n \"achSettlementDate\": \"2023-11-07T05:31:56Z\",\n \"achStatus\": \"<string>\",\n \"achReturnCode\": \"<string>\",\n \"achReturnDate\": \"2023-11-07T05:31:56Z\",\n \"achReturnReason\": \"<string>\",\n \"achCorrectionCode\": \"<string>\",\n \"achCorrectedAbaNumber\": \"<string>\",\n \"achCorrectedAccountNumber\": \"<string>\",\n \"achCorrectionDate\": \"2023-11-07T05:31:56Z\",\n \"debitStatus\": \"<string>\",\n \"debitDeclineReason\": \"<string>\",\n \"overallReturnCode\": \"<string>\",\n \"isMetadataError\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.finosu.com/ach-returns")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"customerId\": \"<string>\",\n \"loanId\": \"<string>\",\n \"paymentId\": \"<string>\",\n \"systemSource\": \"<string>\",\n \"paymentDate\": \"2023-11-07T05:31:56Z\",\n \"paymentReverseDate\": \"2023-11-07T05:31:56Z\",\n \"paymentReversed\": true,\n \"paymentReverseReasonCode\": \"<string>\",\n \"paymentReverseComments\": \"<string>\",\n \"paymentType\": \"<string>\",\n \"paymentAmount\": 123,\n \"achSubmittedDate\": \"2023-11-07T05:31:56Z\",\n \"achSettlementDate\": \"2023-11-07T05:31:56Z\",\n \"achStatus\": \"<string>\",\n \"achReturnCode\": \"<string>\",\n \"achReturnDate\": \"2023-11-07T05:31:56Z\",\n \"achReturnReason\": \"<string>\",\n \"achCorrectionCode\": \"<string>\",\n \"achCorrectedAbaNumber\": \"<string>\",\n \"achCorrectedAccountNumber\": \"<string>\",\n \"achCorrectionDate\": \"2023-11-07T05:31:56Z\",\n \"debitStatus\": \"<string>\",\n \"debitDeclineReason\": \"<string>\",\n \"overallReturnCode\": \"<string>\",\n \"isMetadataError\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.finosu.com/ach-returns")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customerId\": \"<string>\",\n \"loanId\": \"<string>\",\n \"paymentId\": \"<string>\",\n \"systemSource\": \"<string>\",\n \"paymentDate\": \"2023-11-07T05:31:56Z\",\n \"paymentReverseDate\": \"2023-11-07T05:31:56Z\",\n \"paymentReversed\": true,\n \"paymentReverseReasonCode\": \"<string>\",\n \"paymentReverseComments\": \"<string>\",\n \"paymentType\": \"<string>\",\n \"paymentAmount\": 123,\n \"achSubmittedDate\": \"2023-11-07T05:31:56Z\",\n \"achSettlementDate\": \"2023-11-07T05:31:56Z\",\n \"achStatus\": \"<string>\",\n \"achReturnCode\": \"<string>\",\n \"achReturnDate\": \"2023-11-07T05:31:56Z\",\n \"achReturnReason\": \"<string>\",\n \"achCorrectionCode\": \"<string>\",\n \"achCorrectedAbaNumber\": \"<string>\",\n \"achCorrectedAccountNumber\": \"<string>\",\n \"achCorrectionDate\": \"2023-11-07T05:31:56Z\",\n \"debitStatus\": \"<string>\",\n \"debitDeclineReason\": \"<string>\",\n \"overallReturnCode\": \"<string>\",\n \"isMetadataError\": false\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"payment_method_disabled": true
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Request field names
Use camelCase request fields. Legacy snake_case names remain accepted, including within batches. If both names for a field are supplied, the camelCase value takes precedence. Response field names remain unchanged.Overview
This endpoint receives ACH return information from external loan management systems (LMS) and updates the corresponding payment records in Finosu. It handles payment reversals, ACH returns, ACH corrections (NOC), and debit card declines. Note: For submitting multiple ACH returns in a single request, use the batch endpoint.ID Mapping
The endpoint uses reference IDs to locate records:- customerId - Your customer reference ID
- loanId - Your loan reference ID
- paymentId - The payment processor transaction ID
2026-09-30T12:00:00Z.
Optional date/time fields may be omitted or null.
Request Body Fields
Identifiers (Required)
- customerId - Customer reference ID from your LMS
- loanId - Loan reference ID from your LMS
- paymentId - The processor transaction ID for the ACH payment
Payment Transaction Fields
- systemSource - Source system identifier (e.g., “ExternalLMS”)
- paymentDate - Date payment was made
- paymentAmount - Payment amount in dollars, as a JSON number or decimal string
- paymentType - Type of payment
- paymentReversed - Boolean indicating if payment was reversed
- paymentReverseDate - Date payment was reversed
- paymentReverseReasonCode - Code indicating reversal reason
- paymentReverseComments - Additional comments about the reversal
ACH Transaction Fields
- achSubmittedDate - Date ACH transaction was submitted
- achSettlementDate - Date ACH transaction settled
- achStatus - External ACH status; numeric values and strings are accepted, with integration-specific mapping
ACH Return Information
- achReturnCode - ACH return code, such as R01
- achReturnDate - Date of ACH return
- achReturnReason - Human-readable return reason
ACH Correction (NOC - Notification of Change)
- achCorrectionCode - ACH correction code from NOC
- achCorrectedAbaNumber - Corrected ABA routing number
- achCorrectedAccountNumber - Corrected account number
- achCorrectionDate - Date correction was received
Debit Card Fields
- debitStatus - Debit card transaction status
- debitDeclineReason - Reason for debit card decline
Combined Fields
- overallReturnCode - Combined return code from ACH or debit
payment_method_disabled in the response is a boolean or null when not applicable.
What the Endpoint Does
When you submit ACH return information, Finosu:- Locates the records using the external reference IDs
-
Updates PaymentTransaction with:
- Payment reversal information (if applicable)
- Status change to RETURNED if ACH return exists
-
Updates AchPayment (if exists) with:
- ACH transaction dates
- Status mapping from your external status
-
Creates ACHReturnHistory when return information is present, with:
- ACH return code and reason
- ACH correction/NOC data
- Risk assessment tracking
- Action taken metadata
Response
The endpoint returns a success response:- success - Boolean indicating success
- message - Success or error message
Example Usage
This endpoint is typically called by external LMS systems when they detect ACH returns, payment reversals, or receive NOC (Notification of Change) records from banks.Error Handling
The endpoint will return appropriate HTTP status codes:- 200 OK - Successfully processed ACH return information
- 409 CONFLICT - Multiple matching ACH payments
- 404 NOT FOUND - Customer, loan, or payment not found with provided IDs
- 422 UNPROCESSABLE CONTENT - ACH payment does not belong to the specified loan, or has no associated payment method
- 500 INTERNAL SERVER ERROR - Server error during processing
401; invalid request structure returns 422.
A 503 Service Unavailable response means return-note delivery is already in progress. Retry the request later.Body
application/json
Request schema for ACH return information from external LMS.
Maps to SQL query fields from external LMS system. Use camelCase fields; legacy snake_case aliases are also accepted. If both spellings are supplied, camelCase takes precedence.
Response
Payment update recorded.