/check_instant_ach

Pre-check if a user(entity) qualifies for Instant ACH

This endpoint allows running checks at an entity level to confirm the end-user would meet the requirements to have an instant ACH transaction run before they actually have to attempt a transaction.

📘

Before attempting an instant ACH transaction...

When running this check before attempting an instant ACH transaction, you should not only check this response for whether the end user qualifies or not, but you should also check that the maximum amount in this response exceeds the amount of the instant ACH transaction you will be attempting.

Requests

Both authsignature and usersignature headers are required for this request.

The account_name key is optional. Its string value of the existing bank account name.
if not provided, “default” will be used.

You also need to pass a kyc_level key into the request body if you have a specific KYC to check instant ach approvel for your entity. It's Optional.
if not provided, “INSTANT-ACH” will be used.

POST /0.2/check_instant_ach HTTP/1.1
Host: sandbox.silamoney.com
authsignature: [GENERATED AUTHSIGNATURE HEX STRING HERE]
usersignature: [GENERATED USERSIGNATURE HEX STRING HERE]
Content-Type: application/json

{
  "header": {
    "created": 1234567890, 
    "app_handle": "handle.silamoney.eth", 
    "user_handle":"user.silamoney.eth", 
    "version": "0.2", 
    "crypto": "ETH", 
    "reference": "<your unique id>"
  }, 
  "account_name": "Account Name",
  "kyc_level": "<KYC-LEVEL>" #optional
}

***

HTTP/1.1 200 OK

{
  "success": True,
  "maximum_amount": 100.00,
  "message": "Entity qualifies for Instant ACH.",
  "reference": "<your unique id>",
  "status": "SUCCESS",
  "response_time_ms": "171"
}

HTTP/1.1 200 OK

{
  "success": False,
  "message": "Entity does not qualify for instant ACH.",
  "reference": "<your unique id>",
  "status": "FAILED",
  "qualification_details": { 
    "kyc_level": "Entity has not passed INSTANT-ACH KYC level.",
    "sms_opt_in": "Entity has not opted into SMS notifications.",
    "plaid_products": "Bank account does not support both balance and transactions Plaid products.",   
    "ach_returns" : "Entity has recent returns."
  }
}
//kyc_level : optional field  
//Adding new additional value for kyc_level:  INSTANT-ACHV2

const res = await sila.checkInstantAch(
    { account_name: 'account name', kyc_level:"Kyc level" },
    userHandle,
    userPrivateKey
);


// Success Response Object
console.log(res.statusCode); // 200
console.log(res.data.reference); // Random reference number
console.log(res.data.status); // SUCCESS
console.log(res.data.message); // User has passed ID verification
payload = {
    "user_handle": 'user handle',
    "account_name": "account name",
    "kyc_level": "INSTANT-ACH"     #optional

}

response = silasdk.User.check_instant_ach(app, payload, 'user private key')

response['success']
response['message']
response['reference']
response['status']
ApiResponse response = api.checkInstantAch("account name", "user handle",
        "user private key","kyc level");

CheckInstantAchResponse parsedResponse = (CheckInstantAchResponse) response.getData();

parsedResponse.getStatus();
parsedResponse.getMessage();
parsedResponse.getReference();
parsedResponse.getSuccess();
parsedResponse.getMaximum_amount();
parsedResponse.getQualificationDetails();//message for Entity does not qualify for iACH
userHandle = 'user.silamoney.eth';
$userPrivateKey = 'some private key'; // Hex format
$accountName = 'some bank account name'; // Optional
$kycLevel = 'INSTANT-ACHV2';

$response = $client->checkInstantACH($userHandle, $userPrivateKey, $accountName, $kycLevel);

// Success 200
echo $response->getStatusCode(); // 200
echo $response->getData()->reference; // Random reference number
echo $response->getData()->status; // SUCCESS
echo $response->getData()->message; // Entity qualifies for instant ACH.
echo $response->getData()->qualification_details["sms_opt_in"];
var response = api.CheckInstantACH(
userHandle: "user handle",
userPrivateKey: "user private key",
accountName: "account name",
kycLevel: "INSTANT-ACH" // optional field
);

var parsedResponse = (CheckInstantACHResponse)response.Data;

parsedResponse.Message;
parsedResponse.Reference;
parsedResponse.Status;
parsedResponse.Success;
parsedResponse.MaximumAmount;
parsedResponse.QualificationDetails.SmsOptIn; //message Entity does not qualify for iACH
KeyTypeDescription
headerJSON objectRequired. Requires these keys in JSON format: created, app_handle, user_handle. See the /check_handle endpoint for the complete list of fields in this object.
account_nameStringOptional. Min length 1, Max length 40, Example: Custom Account Name
If not provided, “default” will be used.
kyc_levelStringOptional. The kyc_level field is used to request to check kyc level eligible for an entity.

Responses

The success attribute is a JSON key sent in the response body.

Status Codesuccess AttributeDescription
200trueEntity qualifies for Instant ACH.
200trueEntity qualifies for Instant ACH with maximum_amount='BALANCE_CHECK_ERROR'
200falseEntity does not qualify for instant ACH.
200false"kyc_level": "Entity has not passed INSTANT-ACH KYC level."
200false"sms_opt_in": "Entity has not opted into SMS notifications."
200false"plaid_products": "Bank account does not support both balance and transactions Plaid products."
200false"ach_returns" : "Entity has recent returns."
400falseBad request format.
401falseAuth signature is absent or derived address does not belong to app_handle.
404falseNo bank account for user with name found.