Deposit Checks
In this workflow guide, we will walk through how to create and submit a successful check deposit within web service from JHA SmartPay Remote Deposit Anywhere™ (referred to as Consumer Mobile or RDA).
Getting Started
Each step in the workflow diagram is a hyperlink that will take you to the API Reference information for the method being used.
Tasks covered in this guide
- Step 1: Send Authenticate Request
- Step 2: Send Get Accounts Request
- Step 3: Send Get Batches Request
- Step 4: Send Create Batch Request
- Step 5: Send Add Item Request
- Step 6: Send Get Items Request
- Step 7: Send Update Batch Close Request
- Step 8: Send Log Out Request
Required prerequisites before you continue
- You are required to obtain Demo, non-processing credentials in order to perform testing within this workflow. You should receive these from the Integrations team near the start of your project.
- Review the
RDA Authentication Guideto understand how to authenticate to the JHA SmartPay Remote Deposit Anywhere™ (referred to as Consumer Mobile or RDA). - Download the RDAWebServices WSDL file under the Downloads page.
JHA SmartPay Remote Deposit Anywhere™ (referred to as Consumer Mobile or RDA) Deposit Check Workflow
Deposit Check Diagram
Integrator Mobile Deposit Flow | EPS RDA Mobile Deposit Flow | ||||
EPS Web Service | |||||
| 1. | |||||
User initiates deposit flow | |||||
| 2. | |||||
| 3. | |||||
If there is an open batch, take the user to that batch so it can either be submitted or deleted. Typically you will not want consumers with multiple open batches at once | |||||
| 4. | |||||
| 5. | |||||
| 6. | |||||
Display list of items in batch to the user. The user should have the option to delete any item in the batch. The user should also have the option to delete the entire batch if they choose. (only necessary for multi check) | |||||
| 7. | |||||
| 8. | |||||
| |||||
Creating a Check Deposit Batch
Step 1: Send Authenticate Request
Send an Authenticate Request with the necessary information.
- Request ID
- Request Date
- Credentials
- Device Tracking
- PhoneKey
For more details on the required information above, see the Authenticate Request API reference page.
Also, refer to the RDA Authentication Guide for a full explanation of the authentication components and parameters.
The newest security token is required to complete each subsequent request. You can get the newest security token from each web service response. If more than 15 minutes have passed between successful requests, a new authenticate request will need to be sent.
Authenticate Request Example
{
"Credentials":{
"__type":"SSOCredentialsSHA256:#JackHenry.Eps.Mobile.RDA",
"FIIdentifier":"456789",
"Hash":"String Content",
"HomeBankingId":"1234",
"SaltValue":"xyz",
"Timestamp":"/Date(1560817240000-500)/",
"PhoneKey":"1"
},
"DeviceTracking":{
"AppBundleId":"testbundleid",
"AppVersion":"1.0",
"DeviceModel":"android",
"DeviceSystemName":"testuserandroid",
"DeviceSystemVersion":"1.0",
"Vendor":"Your Company Name Here"
},
"RequestDate":"/Date(1560817240000-500)/",
"RequestId":"123456789"
}
Authenticate Response Example
Log the following information from the AuthenticatedResponse for use in subsequent requests:
- "SecurityToken"
{
"RequestId": "123456789",
"Result": 1,
"ResultCode": null,
"ResultMessage": null,
"ValidationResults": [],
"Credentials": {
"SecurityToken": "String Content"
},
"PromptTermsAndConditions": false
}
Step 2: Send Get Accounts Request
Send a GetAccounts Request
- This pulls the list of associated accounts tied to the authenticated customer.
GetAccounts Request Example
{
"__type":"GetAccountsRequest:#JackHenry.Eps.Mobile.RDA",
"Credentials":{
"SecurityToken":"String Content",
"PhoneKey":"1"
},
"Request Date": "/Date(1685977560000-500)/",
"RequestId": "123456789"
}
GetAccounts Response Example
Log the following information from the GetAccountsResponse for use in subsequent requests:
- "SecurityToken"
- "Name" - Account info to display for customer to select which account to deposit into.
- "Reference ID" = "AccountReference" - Associated account to use in subsequent requests.
{
"RequestId": "123456789",
"Result": 1,
"ResultCode": null,
"ResultMessage": null,
"ValidationResults": [],
"Credentials": {
"SecurityToken": "String Content"
},
"Accounts": [
{
"IsEnabled": true,
"Name": "Checking (0099)",
"ReferenceId": "ad4_qerqrbv33be",
"RoutingNumber": "String Content",
"Type": "Savings"
},
{
"IsEnabled": true,
"Name": "Mom's Checking (0000)",
"ReferenceId": "ad4_qerqrbqer34qervbv33be",
"RoutingNumber": "String Content",
"Type": "Savings"
},
{
"IsEnabled": true,
"Name": "Checking (0075)",
"ReferenceId": "ad4tbq24tb541eqfer51_qerqrbv33be",
"RoutingNumber": "String Content",
"Type": "Savings"
},
{
"IsEnabled": true,
"Name": "CHECKING (9001)",
"ReferenceId": "adfeb51541eqfer51e",
"RoutingNumber": "String Content",
"Type": "Savings"
}
]
}
Step 3: Send Get Batches Request
Send a GetBatches Request
- This pulls any open batches tied to the authenticated customer.
- If customers have open batches, it would be optimal for them to close or delete those old batches if they are not going to continue adding items to those batches. This step avoids more batches being left open and unprocessed in the system.
GetBatches Request Example
{
"__type":"GetBatchesRequest:#JackHenry.Eps.Mobile.RDA",
"Credentials":{
"SecurityToken":"String Content",
"PhoneKey":"1"
},
"RequestDate":"/Date(1685977560000-500)/",
"RequestId":"123456789"
}
GetBatches Response Example
Log the following information from the GetBatchesResponse for use in subsequent requests:
- "SecurityToken"
- "Batch Number"
- "Batch Reference"
- "Events"
- "Status"
- "StatusDescription"
- "TotalAmount"
- "TotalCount"
{
"RequestId": "123456789",
"Result": 1,
"ResultCode": null,
"ResultMessage": null,
"ValidationResults": [],
"Credentials": {
"SecurityToken": "String Content"
},
"Batches": [{
"__type":"Batch:#JackHenry.Eps.Mobile.RDA",
"LocationName":"String Content",
"BatchReference":"String Content",
"BatchNumber":"String Content",
"Status":"String Content",
"StatusDescription":"String Content",
"TotalAmount":12678967.54,
"TotalCount":12678967.54,
"Events":
}],
[{
"__type":"Batch:#JackHenry.Eps.Mobile.RDA",
"LocationName":"String Content",
"BatchReference":"String Content",
"BatchNumber":"String Content",
"Status":"String Content",
"StatusDescription":"String Content",
"TotalAmount":12678967.54,
"TotalCount":12678967.54,
"Events":
}]
}
Step 4: Send Create Batch Request
Send a CreateBatch Request
- This creates an open batch so that the customer can begin adding items to it.
- The "BatchNumber" field is a unique number that is required. This can be supplied by the financial institution's system or auto-generated by the EPS system. You will want to store this information for further deposit actions.
CreateBatch Request Example
{
"__type": "CreateBatchRequest:#JackHenry.Eps.Mobile.RDA",
"BatchNumber": "String Content",
"Credentials": {
"SecurityToken":"String Content",
"PhoneKey":"1"
},
"RequestDate": "/Date(1685977560000-500)/",
"RequestId": "123456789"
}
CreateBatch Response Example
Log the following information from the CreateBatchResponse for use in subsequent requests:
- "SecurityToken"
- "Batch Number"
- "Batch Reference"
- "Events"
- "Status"
- "StatusDescription"
- "TotalAmount"
- "TotalCount"
{
"RequestId": "123456789",
"Result": 1,
"ResultCode": null,
"ResultMessage": null,
"ValidationResults": [],
"Credentials": {
"SecurityToken": "String Content"
},
"Batch": {
"BatchNumber": "3d070b56-c241-432f-8656-189ecfe57aef",
"BatchReference": "B:P7XJ1V1",
"Events": [
{
"Date": "/Date(1706718440840-0600)/",
"Description": "Opened"
}
],
"LocationName": "Mobile Consumer Capture",
"Status": "BatchStatus05",
"StatusDescription": "Open For Scanning",
"TotalAmount": 0,
"TotalCount": 0
}
}
Adding/Viewing a Check Deposit Item in a Batch
Step 5: Send Add Item Request
Send an AddItem Request
- This request creates/adds an item into an open batch.
- The "BatchReference" refers to the unique "BatchID" for the open batch. It must be extracted from the "Create Batch Request" response.
- The "AccountReference" is the number associated with the account to deposit the item into. This value was previously pulled in the "GetAccountsRequest" above.
- The "Memo" field is an optional field for the depositor to provide deposit reference information. Example: Memo Line from check.
AddItem Request Example.
{
"__type": "AddItemRequest:#JackHenry.Eps.Mobile.RDA",
"Credentials": {
"SecurityToken":"String Content",
"PhoneKey":"1"
},
"BatchReference":"String Content",
"AccountReference":"String Content",
"Amount":12678967.54,
"FrontImage":"String Content",
"RearImage":"String Content",
"Memo": "Test Deposit",
"RequestId": "123456789",
"RequestDate": "/Date(1685977560000-500)/"
}
AddItem Response Example
Log the following information from the AddItemResponse for use in subsequent requests:
- "SecurityToken"
- "Batch Number"
- "Batch Reference"
- "ItemReference"
- "Events"
- "Status"
- "StatusDescription"
- "Amount"
{
"RequestId": null,
"Result": 1,
"ResultCode": null,
"ResultMessage": null,
"ValidationResults": [],
"Credentials": {
"SecurityToken": "String Content"
},
"CheckFaceInfo": {
"AccountNumber": "String Content",
"Amount": 5.00,
"CheckNumber": "10006",
"RoutingNumber": "123456789"
},
"Item": {
"AccountName": "Checking (0099)",
"AccountReferenceID": "String Content",
"Amount": 5.0000,
"BatchReference": "B:P7XJ1V1",
"Events": [
{
"Date": "/Date(1706718858853-0600)/",
"Description": "Check Decision Performed"
},
{
"Date": "/Date(1706718858853-0600)/",
"Description": "Created"
}
],
"IQAStatus": "Nothing",
"ItemReference": "I:7VYW0G5",
"Memo": null,
"ProcessingStatus": null,
"ProcessingStatusDescription": null,
"Status": "ItemStatus04",
"StatusDescription": "Created",
"TransactionReferenceNumber": null
}
}
Step 6: Send Get Items Request (Optional)
Send a GetItems Request
- This is an optional step to pull items that have been added into a batch using the "Batch Reference" value.
GetItems Request Example
{
"__type": "GetItemsRequest:#JackHenry.Eps.Mobile.RDA",
"BatchReference": "String Content",
"Credentials": {
"SecurityToken":"String Content",
"PhoneKey":"1"
},
"RequestDate": "/Date(1685977560000-500)/",
"RequestId": "123456789"
}
GetItems Response Example
Log the following information from the GetItemsResponse for use in subsequent requests:
- For more information on Item Status Descriptions, see the "Item []" link.
- "SecurityToken"
- "Batch Number"
- "Batch Reference"
- "ItemReference"
- "Events"
- "Status"
- "StatusDescription"
- "Amount"
- "ItemReference"
- "TransactionReferenceNumber"
{
"RequestId": null,
"Result": 1,
"ResultCode": null,
"ResultMessage": null,
"ValidationResults": [],
"Credentials": {
"SecurityToken": "String Content"
},
"Items": [
{
"AccountName": "Checking (0099)",
"AccountReferenceID": "String Content",
"Amount": 0.0000,
"BatchReference": "B:P7XJ1V1",
"Events": [
{
"Date": "/Date(1706718834237-0600)/",
"Description": "Rejected"
},
{
"Date": "/Date(1706718834080-0600)/",
"Description": "Created"
}
],
"IQAStatus": "Nothing",
"ItemReference": "I:T0YW0G5",
"Memo": null,
"ProcessingStatus": null,
"ProcessingStatusDescription": null,
"Status": "ItemStatus09",
"StatusDescription": "Rejected",
"TransactionReferenceNumber": null
},
{
"AccountName": "Trex Checking (0099)",
"Amount": 5.0000,
"BatchReference": "B:P7XJ1V1",
"Events": [
{
"Date": "/Date(1706718858853-0600)/",
"Description": "Check Decision Performed"
},
{
"Date": "/Date(1706718858853-0600)/",
"Description": "Created"
}
],
"IQAStatus": "Nothing",
"ItemReference": "I:7VYW0G5",
"Memo": null,
"ProcessingStatus": null,
"ProcessingStatusDescription": null,
"Status": "ItemStatus04",
"StatusDescription": "Created",
"TransactionReferenceNumber": null
}
]
}
Delete item from batch (Optional)
Send an UpdateItem (Delete) Request
- This is an optional step to remove/delete an item from an open batch using the "Item Reference" value.
- You will want to include the
UpdateItemCriteriaDeleteItemto designate the delete parameter.
UpdateItem (Delete) Request Example
{
"__type": "UpdateItemRequest:#JackHenry.Eps.Mobile.RDA",
"Criteria": {
"__type": "UpdateItemCriteriaDeleteItem:#JackHenry.Eps.Mobile.RDA",
"ItemReference": "String Content"
},
"Credentials": {
"__type": "TokenCredentials:#JackHenry.Eps.Mobile.RDA",
"SecurityToken": "{{securityToken}}"
},
"RequestDate": "/Date(1685977560000-500)/",
"RequestId": "123456789"
}
UpdateItem (Delete) Response Example
{
"__type":"UpdateItemResponse:#JackHenry.Eps.Mobile.RDA",
"Item":
{
"__type":"Item:#JackHenry.Eps.Mobile.RDA",
"ItemReference":"String Content",
"BatchReference":"String Content",
"TransactionReferenceNumber":"String Content",
"Status":"String Content",
"StatusDescription":"String Content",
"ProcessingStatus":"String Content",
"ProcessingStatusDescription":"String Content",
"Amount":12678967.54,
"IQAStatus":"String Content",
"Events":
[
],
"AccountName":"String Content",
"AccountReferenceID": "String Content",
"Memo":"String Content",
}
}
Closing the Batch and Logging Out
Step 7: Send Update Batch Criteria Close Request
Send an UpdateBatch (Close) Request
- This step closes the open batch for processing. Once this is completed, the ability to add or remove an item will be closed.
- You will want to include the
UpdateBatchCriteriaCloseBatchto designate the close parameter.
UpdateBatch (Close) Request Example
{
"__type": "UpdateBatchRequest:#JackHenry.Eps.Mobile.RDA",
"Credentials": {
"SecurityToken":"String Content",
"PhoneKey":"1"
},
"Criteria": {
"__type": "UpdateBatchCriteriaCloseBatch:#JackHenry.Eps.Mobile.RDA",
"BatchReference": "String Content"
},
"RequestDate": "/Date(1685977560000-500)/",
"RequestId": "123456789"
}
UpdateBatch Close Response Example
Log the following information from the UpdateBatchResponse for use in subsequent requests:
- "SecurityToken"
- "Batch Number"
- "Batch Reference"
- "ItemReference"
- "Events"
- "Status"
- "StatusDescription"
- "Amount"
- "ItemReference"
- "TransactionReferenceNumber"
{
"RequestId": "123456789",
"Result": 1,
"ResultCode": null,
"ResultMessage": null,
"ValidationResults": [],
"Credentials": {
"SecurityToken": "String Content"
},
"Batch": {
"BatchNumber": "3d070b56-c241-432f-8656-189ecfe57aef",
"BatchReference": "B:P7XJ1V1",
"Events": [
{
"Date": "/Date(1706731703510-0600)/",
"Description": "Closed"
},
{
"Date": "/Date(1706718859027-0600)/",
"Description": "Updated"
},
{
"Date": "/Date(1706718834237-0600)/",
"Description": "Rejected items in batch"
},
{
"Date": "/Date(1706718440840-0600)/",
"Description": "Opened"
}
],
"LocationName": "Mobile Consumer Capture",
"Status": "BatchStatus08",
"StatusDescription": "Submitted",
"TotalAmount": 5.0000,
"TotalCount": 1
}
}
Step 8: Send Log Out Request
Send a Logout Request
- This method is used to log out the user’s session token. Once the token is logged out, it cannot be used again.
Logout Request Example
{
"__type": "LogoutRequest:#JackHenry.Eps.Mobile.RDA",
"Credentials": {
"SecurityToken":"String Content",
"PhoneKey":"1"
},
"RequestDate": "/Date(1685977560000-500)/",
"RequestId": "123456789"
}
Logout Response Example
Log the following information from the UpdateBatchResponse for use in subsequent requests:
{
"RequestId": "123456789",
"Result": 1,
"ResultCode": null,
"ResultMessage": null,
"ValidationResults": [],
"Credentials": {
"SecurityToken": "String Content"
}
}
Handling Errors and Failed Requests
Not all requests will be successful, so we will cover a couple of common error messages you should be ready to handle.
- RDA AuthenticateSSO Failure - This can happen for multiple reasons, the most common being a mismatched hash in the request, a timestamp that is out of sync, or the user is not enrolled. For any scenario other than a user who is not enrolled, please reach out through your normal support channels for assistance and refer to the
RDA Authenticate Guidein the RDA web service API Guides.
"Code" : "Auth-1001",
"Message" : "Authentication failed"
- RDA AuthenticateSSO Invalid Hash Length Failure – This error response is returned if the hash being sent in the request is an invalid length. Check to make sure you are using the proper hashing algorithm that is compatible for the request type, either SHA 256 or SHA 512.
"Code" : "Cred 1232",
"Message" : "Hash Length is Invalid"
Next steps
- Explore other Developer Guides - We have other guides to show how to leverage our APIs in other common use cases. If your situation or question is not covered in the current guide, consult another resource.
- Review the API Reference section - This guide is a starting point to show common use case scenarios for making successful deposits. Please review the
API Referencesection to see all API methods and their technical specifications. - Review
FAQandBest Practicesdocuments for general information for preperation.