Skip to content

Validate

Request URL

POST /transfer-to/ach/validate

Description

This endpoint accepts the same parameters as the /transfer-to/ach/create endpoint and returns a similar response (including an example cFiTransactionId and mocked "Initiated" status), but instead of submitting the ACH transaction request for payment or recording the request details in the connectFi database, this endpoint will instead simply validate the request. If the response includes the "code": "0" parameter, the request details are valid. To submit a valid request for payment via ACH, a separate request should be made to the /transfer-to/ach/create endpoint.

Note: Since this endpoint does not submit the request for payment or record the request details in the connectFi database, request details validated using this endpoint will not be returned via a /transfer-to/ach/query or /transfer-to/ach/list request.

Schema

Property table for transfer-to/ach/validate

Property Description Required Schema
reference An external alphanumeric reference ID for the entity in your system Yes {
  "type": "string",
  "pattern": "^[0-9a-zA-Z]+$",
  "minLength": 1,
  "maxLength": 32,
  "$id": "common-reference"
}
clientCode The clientCode in connectFi that corresponds to the desired ACH configurations for companyName and companyId. If not included, the default ACH solution configuration for this client will be used. Contact support to update ACH configurations. Example - If clientCode: "name1" is configured to use ACH { companyName: "COABC", companyId: "123abc456def789" } and clientCode: "name2" is configured to use ACH { companyName: "COABD", companyId: "123abc456def780" }, then including the clientCode parameter will specify which configuration to use. If not included, the default "name1" configuration would be used in this example. No {
  "type": "string",
  "pattern": "^((?![<>]).)*$",
  "minLength": 0,
  "maxLength": 50,
  "nullable": true,
  "$id": "common-commonStr50"
}
effectiveEntryDate The effective entry date in YYYY-MM-DD format Yes {
  "type": "string",
  "format": "dateISO",
  "pattern": "^\d{4}-\d{2}-\d{2}$",
  "$id": "common-dateOnly"
}
standardEntryClassCode The Standard Entry Class (SEC) Code indicating the nature of the transaction and applicable conditions for each Yes {
  "type": "string",
  "enum": [ "ARC", "BOC", "CIE", "CCD", "CTX", "POP",
"PPD", "RCK", "TEL", "WEB" ],
  "maxLength": 3,
  "$id": "ach-standardEntryClassCode"
}
companyEntryDescription A description of this payment, such as "PAYROLL", "PAYMENT", "REDEPCHECK" (necessary when standardEntryClassCode is "RCK"), or "AUTOENROLL", max length: 10 characters No {
  "type": "string",
  "maxLength": 10,
  "nullable": true,
  "isNotOnlyWhitespace": true,
  "$id": "ach-companyEntryDescription"
}
companyDiscretionaryData Optional codes included by the ACH originating company, max length: 20 characters No {
  "type": "string",
  "maxLength": 20,
  "nullable": true,
  "isNotOnlyWhitespace": true,
  "$id": "ach-companyDiscretionaryData"
}
individualName The name of the ACH payment recipient, max length: 22 characters when SEC is "PPD", "TEL", "WEB", "PPD", "RCK", "ARC", "BOC", or "POP" (and for returns), max length: 16 characters when SEC is "CTX", max length: 15 characters when SEC is "CIE" Yes {
  "type": "string",
  "minLength": 1,
  "maxLength": 22,
  "isNotOnlyWhitespace": true,
  "$id": "ach-individualName"
}
routingNumber routingNumber Yes {
  "type": "string",
  "pattern": "^[0-9a-zA-Z]+$",
  "minLength": 9,
  "maxLength": 9,
  "$id": "ach-routingNumber"
}
DFIAccountNumber The alphanumeric account number of the recipient Yes {
  "type": "string",
  "pattern": "^[0-9a-zA-Z]+$",
  "minLength": 1,
  "maxLength": 17,
  "$id": "ach-DFIAccountNumber"
}
accountType accountType Yes {
  "type": "string",
  "enum": [ "Checking", "Savings" ],
  "$id": "ach-accountType"
}
transactionType The type of transaction Yes {
  "type": "string",
  "enum": [ "Credit", "Debit" ],
  "$id": "ach-transactionType"
}
amount Amount Yes {
  "type": "number",
  "minimum": 0,
  "amountPrecision": 2,
  "$id": "common-amountWithZero"
}
currency A three character ISO alphabetic code to identify the currency Yes {
  "type": "string",
  "maxLength": 3,
  "minLength": 3,
  "pattern": "^[A-Z]+$",
  "$id": "common-currency"
}
checkSerialNumber Serial number of the digital check (checkSerialNumber is only allowed/required for "ARC", "BOC", "RCK", and "POP" Standard Entry Class types), max length: 15 characters when SEC is "ARC", "BOC", or "RCK", max length: 9 characters when SEC is "POP" No {
  "type": "string",
  "minLength": 1,
  "maxLength": 15,
  "isNotOnlyWhitespace": true,
  "$id": "ach-checkSerialNumber"
}
terminalCity First four characters of the terminal city No {
  "type": "string",
  "maxLength": 4,
  "isNotOnlyWhitespace": true,
  "$id": "ach-terminalCity"
}
terminalState Two character state code No {
  "type": "string",
  "maxLength": 2,
  "isNotOnlyWhitespace": true,
  "$id": "ach-terminalState"
}
identificationNumber Optional additional identifier (identificationNumber is only allowed for "CTX", "CCD", "PPD", "TEL", "WEB", and "CIE" Standard Entry Class types), max length: 22 characters when SEC is "CIE", max length: 15 characters when SEC is "CTX", "CCD", "PPD", "TEL", or "WEB" No {
  "type": "string",
  "minLength": 1,
  "maxLength": 22,
  "isNotOnlyWhitespace": true,
  "$id": "ach-identificationNumber"
}
preNote True if prenotification should be utilized to verify account details before debiting/crediting the recipient's account, amount must be 0.00 if preNote is true No {
  "type": "boolean",
  "nullable": true,
  "$id": "ach-preNote"
}
addenda05 An array of strings with payment related information No array of {
  "type": "string",
  "minLength": 1,
  "maxLength": 80
}
webhookUrl If you specify a webhookUrl in this request, the system will perform a callback to your webhookUrl to notify you of specified asynchronous status changes. No {
  "type": "string",
  "pattern": "^((?![<>]).)*$",
  "minLength": 0,
  "maxLength": 500,
  "nullable": true,
  "$id": "common-commonStr500"
}

Request Body

{
    "reference": "UNIQUEREFERENCEID",
    "effectiveEntryDate": "2024-11-13",
    "standardEntryClassCode": "CCD",
    "individualName": "John Smith",
    "routingNumber": "053207766",
    "DFIAccountNumber": "123456789",
    "accountType": "Checking",
    "transactionType": "Debit",
    "amount": 10.53,
    "currency": "USD",
    "companyEntryDescription": "PAYMENT",
    "webhookUrl": "https://your_webhook_url/UNIQUE_REFERENCE_ID"
}

Snippet Examples

javascript

const axios = require('axios');
const data = {
    "reference": "UNIQUEREFERENCEID",
    "effectiveEntryDate": "2024-11-13",
    "standardEntryClassCode": "CCD",
    "individualName": "John Smith",
    "routingNumber": "053207766",
    "DFIAccountNumber": "123456789",
    "accountType": "Checking",
    "transactionType": "Debit",
    "amount": 10.53,
    "currency": "USD",
    "companyEntryDescription": "PAYMENT",
    "webhookUrl": "https://your_webhook_url/UNIQUE_REFERENCE_ID"
};
const config = {
  method: 'POST',
  url: '${CONNECTFI_BASE_URL}/transfer-to/ach/validate',
  headers: {
    'Content-Type': "application/json",
    'x-connectfi-token': "A long random string token received from /auth/get-token request"
  },
  data
};

let result;
try {
  result = await axios.request(config);
  if (result.status === 200) {
    console.log(JSON.stringify(result.data));
  }
} catch (err) {
  console.log({
    errCode: err.code,
    responseStatus: err.response && err.response.status,
    data: err.response && JSON.stringify(err.response.data)
  });
}

cURL

curl --location "CONNECTFI_BASE_URL/transfer-to/ach/validate" --data "{\"reference\":\"UNIQUEREFERENCEID\",   \"effectiveEntryDate\":\"2024-11-13\",   \"standardEntryClassCode\":\"CCD\",   \"individualName\":\"John Smith\",   \"routingNumber\":\"053207766\",   \"DFIAccountNumber\":\"123456789\",   \"accountType\":\"Checking\",   \"transactionType\":\"Debit\",   \"amount\":10.53,\"currency\":\"USD\",   \"companyEntryDescription\":\"PAYMENT\",   \"webhookUrl\":\"https://your_webhook_url/UNIQUE_REFERENCE_ID\"}" --header "Content-Type: application/json" --header "x-connectfi-token: A long random string token received from /auth/get-token request" 

Successful Response Examples

200 SUCCESSFUL RESPONSE

HEADERS

Header Value
Content-Type application/json
x-connectfi-token A long random string token received from /auth/get-token request

REQUEST BODY

{
    "reference": "UNIQUEREFERENCEID",
    "effectiveEntryDate": "2024-11-13",
    "standardEntryClassCode": "CCD",
    "individualName": "John Smith",
    "routingNumber": "053207766",
    "DFIAccountNumber": "123456789",
    "accountType": "Checking",
    "transactionType": "Debit",
    "amount": 10.53,
    "currency": "USD",
    "companyEntryDescription": "PAYMENT",
    "webhookUrl": "https://your_webhook_url/UNIQUE_REFERENCE_ID"
}

RESPONSE BODY

{
    "code": "0",
    "data": {
        "cFiTransactionId": "CLIENTID_2WrLHSRsVCPZi5vqdMrDcM",
        "reference": "UNIQUEREFERENCEID",
        "cFiAggregatorId": "CLIENTID",
        "status": "Initiated",
        "effectiveEntryDate": "2024-11-13",
        "individualName": "John Smith",
        "routingNumber": "053207766",
        "amount": 10.53,
        "currency": "USD",
        "DFIAccountNumber": "123456789"
    },
    "requestId": "60ae7bb0a1cd11efadaf56da8a860aa8"
}