Skip to content

ACH Payment

Request URL

POST /public/customer/payment/ach-pay

Description

This endpoint will allow the customer session corresponding to the provided 'x-connectfi-jwtoken' header to initiate an ACH payment using the specified bank details. This action can also be facilitated through the payment page HTML that is provided when the customer payment link email is sent or, depending on client configurations, the payment link webhook.

A successful submission will validate the ACH payment details and mark the payment link status as "Processing".

There is a latency period configured from the time that the customer submits the ACH payment details to the time that the payment is sent to the bank and marked as "SentToPay", during which time the payment may be canceled by the merchant or by you (the client/platform). ACH payments will only be sent to the bank during business hours (8am to 5pm US/Central time). If the customer submits the ACH payment during these hours, the latency period will be 3 hours from the time of customer submission. If the request is submitted after 5pm or during a holiday/non-business day, the latency period will start 3 hours from the beginning of the next business work day.

Schema

Property table for public/customer/payment/ach-pay

Property Description Required Schema
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"
}
account account Yes account object

Property table for account object

Property Description Required Schema
account_id An account ID in Plaid if the ACH Payment account was linked via Plaid No {
  "type": "string",
  "pattern": "^((?![<>]).)*$",
  "minLength": 0,
  "maxLength": 50,
  "nullable": true,
  "$id": "common-commonStr50"
}
routing routing Yes {
  "type": "string",
  "pattern": "^[0-9a-zA-Z]+$",
  "minLength": 9,
  "maxLength": 9,
  "$id": "ach-routingNumber"
}
account account Yes {
  "type": "string",
  "pattern": "^((?![<>]).)*$",
  "minLength": 1,
  "maxLength": 50,
  "isNotOnlyWhitespace": true,
  "$id": "common-commonStr50Req"
}
subtype subtype Yes {
  "type": "string"
}

Request Body

{
  "individualName": "Merchant1",
  "account": {
    "routing": "011401533",
    "account": "1111222233330000",
    "subtype": "checking"
  }
}

Snippet Examples

javascript

const axios = require('axios');
const data = {
  "individualName": "Merchant1",
  "account": {
    "routing": "011401533",
    "account": "1111222233330000",
    "subtype": "checking"
  }
}
;
const config = {
  method: 'POST',
  url: '${CONNECTFI_BASE_URL}/public/customer/payment/ach-pay',
  headers: {
    'Content-Type': "application/json",
    'x-connectfi-jwtoken': "A long random string token received from /public/customer/payment/link 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/public/customer/payment/ach-pay" --data "{  \"individualName\":\"Merchant1\", \"account\":{    \"routing\":\"011401533\",   \"account\":\"1111222233330000\",   \"subtype\":\"checking\"  }}" --header "Content-Type: application/json" --header "x-connectfi-jwtoken: A long random string token received from /public/customer/payment/link request" 

Successful Response Examples

200 SUCCESSFUL RESPONSE

HEADERS

Header Value
Content-Type application/json
x-connectfi-jwtoken A long random string token received from /public/customer/payment/link request

REQUEST BODY

{
  "individualName": "Merchant1",
  "account": {
    "routing": "011401533",
    "account": "1111222233330000",
    "subtype": "checking"
  }
}

RESPONSE BODY

{
    "code": "0",
    "data": {
        "cFiTransactionId": "29ljhq5Apu1YfdtU3wN7yx",
        "cFiAggregatorId": "CLIENTID",
        "cFiMerchantId": "2Bc0QW0VYJe7VhTyXXEYNQ",
        "payerName": "Doe John",
        "cFiMerchantRef": "1",
        "invoiceNumber": "11125",
        "amount": 1.5,
        "currency": "USD",
        "dtsExpiredAt": "2024-08-30T11:52:47.482Z",
        "dueDate": "2024-08-29",
        "description": "test description",
        "status": "Processing",
        "fields": [
            {
                "index": 1,
                "code": "firstName",
                "label": "First Name",
                "value": "John"
            },
            {
                "index": 2,
                "code": "lastName",
                "label": "Last Name",
                "value": "D."
            },
            {
                "index": 3,
                "code": "email",
                "label": "Email",
                "value": "c*********************@e******.test"
            },
            {
                "index": 4,
                "code": "phone",
                "label": "Phone",
                "value": "*******5555"
            }
        ],
        "availablePaymentType": [
            "card",
            "ach"
        ],
        "statusChangeHistory": [
            {
                "initiatorId": "2Bc0QW0VYJe7VhTyXXEYNQ",
                "initiatorType": "merchant",
                "status": "Initiated",
                "dtsCreatedAt": "2024-07-31T11:51:51.929Z",
                "dtsUpdatedAt": "2024-07-31T11:51:51.929Z"
            },
            {
                "initiatorId": "2Bc0QW0VYJe7VhTyXXEYNQ",
                "initiatorType": "merchant",
                "status": "Sent",
                "dtsCreatedAt": "2024-07-31T11:52:47.482Z",
                "dtsUpdatedAt": "2024-07-31T11:52:47.482Z"
            },
            {
                "initiatorType": "public",
                "status": "Processing",
                "dtsCreatedAt": "2024-07-31T12:30:40.679Z",
                "dtsUpdatedAt": "2024-07-31T12:30:40.679Z"
            }
        ],
        "dtsCreatedAt": "2024-07-31T11:51:51.929Z",
        "link": "4ukiJfoAzD3DCCfdYxNDRh39PfwiKBdqv2JXi33DP3fH228FArivIStaEZc6oG6WII",
        "url": "google.com/payment/4ukiJfoAzD3DCCfdYxNDRh39PfwiKBdqv2JXi33DP3fH228FArivIStaEZc6oG6WII",
        "paymentType": "ach",
        "ach": {}
    },
    "requestId": "b2a02fa04f3811ef92543a54d404e711"
}