API Reference

Documentation

What is ACH in Valor?

Valor ACH transaction is an electronic payment method to transfer funds between bank accounts. ACH transactions are commonly used for a variety of purposes, including direct deposits, bill payments, and electronic funds transfers. Here's a detailed description of the process:

Initiation: An ACH transaction begins when an individual or organization authorizes a transfer. This could be through payroll for direct deposit, a consumer paying a bill online, or a business initiating a payment to a vendor.

Batch Processing: ACH transactions are processed in batches rather than individually. Banks and payment processors gather these transactions and submit them at specific intervals throughout the day.

Clearing and Settlement: The transactions are sent to the ACH network, where they are sorted and forwarded to the receiving bank. This process is managed by the National Automated Clearing House Association (NACHA) in the U.S.

Receiving Bank: The receiving bank processes the incoming ACH transaction, credits the account if it is a deposit, or debits it if it is a payment.

Completion: Funds are typically available within 1-2 business days, though some ACH transactions can settle the same day.

ACH transactions are known for being a cost-effective and efficient means of transferring money, particularly for recurring payments and large volumes of transactions. They are also secure, utilizing encryption and various authentication methods to protect against fraud and unauthorized access.

Sale API

Instead of using a credit card or cash, a buyer authorizes a debit from their bank account. The transaction is then processed in batches by the ACH network, eventually moving funds from the buyer's bank to the seller's bank. This process can take one to several business days.

<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://securelink-staging.valorpaytech.com:4430/?achsale=', [
  'body' => '{"appid":"Vw7RdW6IPmRH4Z2feCE8Pp1iqeahSonN","appkey":"Tv26MihzxwblHyk6gEuVelY2XwQE58jU","epi":"2319916062","txn_type":"achsale","account_number":"9884210510","routing_number":"021000021","payee_name":"ABU","account_type":"C","entry_class":"Business","amount":"5.87","state_tax":"0","city_tax":"0","reduced_tax":"0","card_type":"Debit"}',
  'headers' => [
    'accept' => 'application/json',
    'content-type' => 'application/json',
  ],
]);

echo $response->getBody();
import requests

url = "https://securelink-staging.valorpaytech.com:4430/?achsale="

payload = {
    "appid": "Vw7RdW6IPmRH4Z2feCE8Pp1iqeahSonN",
    "appkey": "Tv26MihzxwblHyk6gEuVelY2XwQE58jU",
    "epi": "2319916062",
    "txn_type": "achsale",
    "account_number": "9884210510",
    "routing_number": "021000021",
    "payee_name": "ABU",
    "account_type": "C",
    "entry_class": "Business",
    "amount": "5.87",
    "state_tax": "0",
    "city_tax": "0",
    "reduced_tax": "0",
    "card_type": "Debit"
}
headers = {
    "accept": "application/json",
    "content-type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://securelink-staging.valorpaytech.com:4430/?achsale=");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "accept: application/json");
headers = curl_slist_append(headers, "content-type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\"appid\":\"Vw7RdW6IPmRH4Z2feCE8Pp1iqeahSonN\",\"appkey\":\"Tv26MihzxwblHyk6gEuVelY2XwQE58jU\",\"epi\":\"2319916062\",\"txn_type\":\"achsale\",\"account_number\":\"9884210510\",\"routing_number\":\"021000021\",\"payee_name\":\"ABU\",\"account_type\":\"C\",\"entry_class\":\"Business\",\"amount\":\"5.87\",\"state_tax\":\"0\",\"city_tax\":\"0\",\"reduced_tax\":\"0\",\"card_type\":\"Debit\"}");

CURLcode ret = curl_easy_perform(hnd);
CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://vt-staging.valorpaytech.com:4430/?app_id=Vw7RdW6IPmRH4Z2feCE8Pp1iqeahSonN&auth_key=Tv26MihzxwblHyk6gEuVelY2XwQE58jU&mtype=achsale&epi=2319916062&account_type=C&amount=5.87&state_tax_amount=0.23&city_tax_amount=0&/?achsale=");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "accept: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);
CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://securelink-staging.valorpaytech.com:4430/?achsale=");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "accept: application/json");
headers = curl_slist_append(headers, "content-type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\"appid\":\"Vw7RdW6IPmRH4Z2feCE8Pp1iqeahSonN\",\"appkey\":\"Tv26MihzxwblHyk6gEuVelY2XwQE58jU\",\"epi\":\"2319916062\",\"txn_type\":\"achsale\",\"account_number\":\"9884210510\",\"routing_number\":\"021000021\",\"payee_name\":\"ABU\",\"account_type\":\"C\",\"entry_class\":\"Business\",\"amount\":\"5.87\",\"state_tax\":\"0\",\"city_tax\":\"0\",\"reduced_tax\":\"0\",\"card_type\":\"Debit\"}");

CURLcode ret = curl_easy_perform(hnd);
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://securelink-staging.valorpaytech.com:4430/?achsale="

	payload := strings.NewReader("{\"appid\":\"Vw7RdW6IPmRH4Z2feCE8Pp1iqeahSonN\",\"appkey\":\"Tv26MihzxwblHyk6gEuVelY2XwQE58jU\",\"epi\":\"2319916062\",\"txn_type\":\"achsale\",\"account_number\":\"9884210510\",\"routing_number\":\"021000021\",\"payee_name\":\"ABU\",\"account_type\":\"C\",\"entry_class\":\"Business\",\"amount\":\"5.87\",\"state_tax\":\"0\",\"city_tax\":\"0\",\"reduced_tax\":\"0\",\"card_type\":\"Debit\"}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("accept", "application/json")
	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))

}
require 'uri'
require 'net/http'

url = URI("https://securelink-staging.valorpaytech.com:4430/?achsale=")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["accept"] = 'application/json'
request["content-type"] = 'application/json'
request.body = "{\"appid\":\"Vw7RdW6IPmRH4Z2feCE8Pp1iqeahSonN\",\"appkey\":\"Tv26MihzxwblHyk6gEuVelY2XwQE58jU\",\"epi\":\"2319916062\",\"txn_type\":\"achsale\",\"account_number\":\"9884210510\",\"routing_number\":\"021000021\",\"payee_name\":\"ABU\",\"account_type\":\"C\",\"entry_class\":\"Business\",\"amount\":\"5.87\",\"state_tax\":\"0\",\"city_tax\":\"0\",\"reduced_tax\":\"0\",\"card_type\":\"Debit\"}"

response = http.request(request)
puts response.read_body
Field                    Type            Length        Mandatory/Optional     Example Value                       Description
uid                      Numeric         10            Mandatory              2223413579                          A unique id of the request, A client can send any number of 10 digit
app_id                   String          32            Mandatory              464DA39FddCFB44D54F6C22CEF9098E5    Application id, an unique id given for the application
auth_key                 String          32            Mandatory              15B8BCFDB74287yt92608354A1444050    Authorization key (API key) given for application contact [email protected]
mtype                    Numeric          4            Mandatory              achsale                                Message type 0100
epi                      Numeric         10            Mandatory              2536419865                          10 digit number will be generated as a part of merchant boarding
amount                   Numeric         10            Mandatory              100.50                              Transaction amount (Maximum amount 99,999.99)                           
state_tax_amount         Numeric          4            Optional               10.00                               Currency - (Ex. 00.00)
city_tax_amount          Numeric          4            Optional               10.00                               Currency - (Ex. 00.00) 
reduced_tax_amount       Numeric          4            Optional               10.00                               Currency - (Ex. 00.00) 
account_number           Numeric         19            Mandatory              4012881888818888                    Customer card number 15 to 19 digits
routing_number           Numeric          9            Mandatory              122545874                           Routing number is a nine-digit code used to identify a financial institution within the 
username                 String          25            Optional               test002                             Customer user name
userid                   Numeric          4            Optional               13241                               It is the userid of the merchant to be updated
payee_name               String          25            Optional               Jhon Smith
{
  "error_no": "S00",
  "msg": "APPROVED",
  "mesg": "APPROVED",
  "amount": "5.87",
  "epi": "2319916062",
  "routing_number": "****00021",
  "account_number": "****210510",
  "check_number": "1741263053",
  "document_id": 223045339,
  "entry_class": "CCD",
  "received_on": "2025-03-06T12:10:55Z",
  "posting_date": "2025-03-06T06:00:00Z",
  "current_state": "Pending",
  "desc": "AUTH NUM: 10014823C",
  "verification_status": "Authorized",
  "reference_number": "67c990cd4ef0b"
}

Void API


<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://securelink-staging.valorpaytech.com:4430/?achvoid=', [
  'body' => '{"appid":"Vw7RdW6IPmRH4Z2feCE8Pp1iqeahSonN","appkey":"Tv26MihzxwblHyk6gEuVelY2XwQE58jU","epi":"2319916062","txn_type":"achvoid","uid":"67c98e250d2ea"}',
  'headers' => [
    'accept' => 'application/json',
    'content-type' => 'application/json',
  ],
]);

echo $response->getBody();
import requests

url = "https://securelink-staging.valorpaytech.com:4430/?achvoid="

payload = {
    "appid": "Vw7RdW6IPmRH4Z2feCE8Pp1iqeahSonN",
    "appkey": "Tv26MihzxwblHyk6gEuVelY2XwQE58jU",
    "epi": "2319916062",
    "txn_type": "achvoid",
    "uid": "67c98e250d2ea"
}
headers = {
    "accept": "application/json",
    "content-type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const url = 'https://securelink-staging.valorpaytech.com:4430/?achvoid=';
const options = {
  method: 'POST',
  headers: {accept: 'application/json', 'content-type': 'application/json'},
  body: JSON.stringify({
    appid: 'Vw7RdW6IPmRH4Z2feCE8Pp1iqeahSonN',
    appkey: 'Tv26MihzxwblHyk6gEuVelY2XwQE58jU',
    epi: '2319916062',
    txn_type: 'achvoid',
    uid: '67c98e250d2ea'
  })
};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error(err));
CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://securelink-staging.valorpaytech.com:4430/?achvoid=");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "accept: application/json");
headers = curl_slist_append(headers, "content-type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\"appid\":\"Vw7RdW6IPmRH4Z2feCE8Pp1iqeahSonN\",\"appkey\":\"Tv26MihzxwblHyk6gEuVelY2XwQE58jU\",\"epi\":\"2319916062\",\"txn_type\":\"achvoid\",\"uid\":\"67c98e250d2ea\"}");

CURLcode ret = curl_easy_perform(hnd);
CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://securelink-staging.valorpaytech.com:4430/?achvoid=");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "accept: application/json");
headers = curl_slist_append(headers, "content-type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\"appid\":\"Vw7RdW6IPmRH4Z2feCE8Pp1iqeahSonN\",\"appkey\":\"Tv26MihzxwblHyk6gEuVelY2XwQE58jU\",\"epi\":\"2319916062\",\"txn_type\":\"achvoid\",\"uid\":\"67c98e250d2ea\"}");

CURLcode ret = curl_easy_perform(hnd);
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://securelink-staging.valorpaytech.com:4430/?achvoid="

	payload := strings.NewReader("{\"appid\":\"Vw7RdW6IPmRH4Z2feCE8Pp1iqeahSonN\",\"appkey\":\"Tv26MihzxwblHyk6gEuVelY2XwQE58jU\",\"epi\":\"2319916062\",\"txn_type\":\"achvoid\",\"uid\":\"67c98e250d2ea\"}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("accept", "application/json")
	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))

}
require 'uri'
require 'net/http'

url = URI("https://securelink-staging.valorpaytech.com:4430/?achvoid=")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["accept"] = 'application/json'
request["content-type"] = 'application/json'
request.body = "{\"appid\":\"Vw7RdW6IPmRH4Z2feCE8Pp1iqeahSonN\",\"appkey\":\"Tv26MihzxwblHyk6gEuVelY2XwQE58jU\",\"epi\":\"2319916062\",\"txn_type\":\"achvoid\",\"uid\":\"67c98e250d2ea\"}"

response = http.request(request)
puts response.read_body

Field                    Type            Length        Mandatory/Optional     Example Value                       Description
uid                      Numeric         10            Mandatory              fsf658695sddsd                       A unique id of the request in alphanumeric
app_id                   String          32            Mandatory              464DA39FddCFB44D54F6C22CEF9098E5    Application id, an unique id given for the application
auth_key                 String          32            Mandatory              15B8BCFDB74287yt92608354A1444050    Authorization key (API key) given for application contact [email protected]
mtype                    Numeric          4            Mandatory              achvoid                              Message type 0100
epi                      Numeric         10            Mandatory              2536419865                          10 digit number will be generated as a part of merchant boarding

{
  "error_no": "S00",
  "msg": "APPROVED",
  "mesg": "APPROVED",
  "epi": "2319916062",
  "desc": "VOIDED SUCCESSFULLY",
  "reference_number": "67c98e250d2ea"
}