/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
Key | Type | Description |
---|---|---|
header | JSON object | Required. 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_name | String | Optional. Min length 1, Max length 40, Example: Custom Account Name If not provided, “default” will be used. |
kyc_level | String | Optional. 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 Code | success Attribute | Description |
---|---|---|
200 | true | Entity qualifies for Instant ACH. |
200 | true | Entity qualifies for Instant ACH with maximum_amount='BALANCE_CHECK_ERROR' |
200 | false | Entity does not qualify for instant ACH. |
200 | false | "kyc_level": "Entity has not passed INSTANT-ACH KYC level." |
200 | false | "sms_opt_in": "Entity has not opted into SMS notifications." |
200 | false | "plaid_products": "Bank account does not support both balance and transactions Plaid products." |
200 | false | "ach_returns" : "Entity has recent returns." |
400 | false | Bad request format. |
401 | false | Auth signature is absent or derived address does not belong to app_handle. |
404 | false | No bank account for user with name found. |
Updated about 2 years ago