Skip to main content

Check Deposits

Unit enables Check deposits using a standard Remote Deposit Capture (RDC) mechanism.

info

Unit uses a client side SDK (iOS, Android and mobile web) to allow you to take pictures of the check. The main benefit of the SDK is that it runs client side validations and provides the customer with immediate feedback on the image quality. Contact Unit to receive the Check Deposit SDKs.

Once a check deposit is created, and the check's images are uploaded, Unit will validate the images, process the check and credit the customer's deposit account if successful.

note

Check Deposit lifecycle may vary per bank partner. For more information and guidance, please contact Unit.

Create Check Deposit#

Creates a check deposit for an Account.

VerbPOST
Urlhttps://api.s.unit.sh/check-deposits
Required Scopecheck-deposits-write
Data TypecheckDeposit
Timeout (Seconds)5

Attributes#

NameTypeDescription
amountintegerThe check amount (in cents) to deposit.
descriptionstringDescription of the check deposit (maximum of 50 characters).
tagsobjectOptional. See Tags.
idempotencyKeystringOptional, but strongly recommended . See Idempotency.

Relationships#

NameTypeDescription
accountJSON:API RelationshipThe account receiving the check deposit.
Example Request:
curl -X POST 'https://api.s.unit.sh/check-deposits'-H 'Content-Type: application/vnd.api+json'-H 'Authorization: Bearer ${TOKEN}'--data-raw '{  "data": {    "type": "checkDeposit",    "attributes": {      "amount": 20000,      "description": "Check deposit"    },    "relationships": {      "account": {        "data": {          "type": "depositAccount",          "id": "10001"        }      }    }  }}'

Response#

Response is a JSON:API document.

201 Created#

FieldTypeDescription
dataCheckDepositThe requested resource after the operation was completed.
Example Response:
{  "data": {    "type": "checkDeposit",    "id": "1112",    "attributes": {      "createdAt": "2021-05-27T09:29:30.828Z",      "amount": 20000,      "description": "Check deposit",      "status": "AwaitingImages"    },    "relationships": {      "account": {        "data": {          "type": "account",          "id": "10001"        }      },      "customer": {        "data": {          "type": "customer",          "id": "10000"        }      }    }  }}

Check Deposit Status#

When you create a check deposit it will be created with an AwaitingImages status. You may track its progress using the status attribute or listening to relevant webhooks.

The possible status values are:

StatusDescription
AwaitingImagesThe check deposit was created. Waiting for the front-side and back-side images to be uploaded.
AwaitingFrontImageThe back-side image of the check was received. Waiting for the front-side image to be uploaded.
AwaitingBackImageThe front-side image of the check was received. Waiting for the back-side image to be uploaded.
PendingThe check deposit was created on the Unit ledger but was not yet processed. Check deposits with Pending status may be canceled by the originator.
PendingReviewThe check deposit is pending review by Unit.
RejectedThe check deposit was rejected (see reason for more details). Some rejections are immediate but some can take up to a couple of days.
ClearingThe check deposit was processed and the funds have been received by Unit, but the deposit account was not credited yet. The check deposit will stay clearing for a period of time as defined on the deposit product, for fraud risk mitigation reasons. It’s recommended that the physical check is kept securely until the end of the statement cycle.
SentThe check deposit was processed and the deposit account was credited. This is the final state for successful check deposits.
CanceledThe check deposit was canceled.
ReturnedThe check deposit was processed but the receiving bank was not able to complete the transfer (see reason for more details).
AwaitingCustomerConfirmationThe check deposit requires the customer's attention: either retaking the images or confirmation check deposit amount. If no action is captured within a 10 minutes window, the check deposit will automatically be Rejected. This status is not part of all check deposit's lifecycles and mainly depends on a bank partner.

Customer Confirmation Reasons#

Status ReasonRequired Action
Check amount could not be confirmed. Please review and re-enter amount.Update check amount
Review and confirm your signature endorsement is on back of check.Upload back side image
Review and confirm payer signature is on front of check.Upload front side image
Review and confirm that “For Mobile Deposit Only” is under signature endorsement on back of check.Upload back side image

Check Deposit Return Reasons#

Below is a list of some of the more common return reasons for check deposits.

Return ReasonDescription
Not Sufficient FundsCheck owner account does not have enough funds.
Uncollected Funds HoldThe funds are on hold at the paying bank.
Stop PaymentThe owner of the check requested their bank not honor the check.
Closed AccountCheck owner account is closed.
Frozen AccountCheck owner account is Frozen.
Unable to Locate AccountThe issuing bank was not able to locate the bank account.
Refer to MakerThere has been an issue with paying the check. Please refer to check owner.
Duplicate PresentmentThe check has already been deposited in the past.

Check Deposit Reject Reasons#

Below is a list of some of the more common rejection reasons for check deposits. This list is regularly updated as Unit continues to add more fraud prevention measures.

Reject ReasonDescriptionRequired Action
Altered / FictitiousCheck appears to have been altered or forged.
Suspected Counterfeit
Missing EndorsementEndorsement area is blank.Sign back of the check
Cannot read checkRetake photo of check. Ensure proper focus, good lighting and that all four corners are visible. If the issue persists
Date IssueA check is either undated, post-dated or stale-dated.Replace with a check with a valid date (date cannot be a future date, older than 6 months or outside of a "void by" date specified on the check.
Check has already been submittedThis check cannot be accepted again
Missing SignatureUnsigned by maker.
Beneficiary Name MismatchBeneficiary name does not match the customer name.Make sure the name on the check matches the one on the account.
Check processing failedPlease try again.
No check uploaded
Cannot read Account data on bottom of checkRetake photo of check. Ensure proper focus, good lighting and that all four corners are visible
Unable to read account information due to interference from signature or other markings.
Incomplete CheckAny of the required check elements are not visible, or if the customer did not upload both the front and back of the check.
Amount MismatchThe legal amount (written out) does not the match numeric amount or the amount entered by the customer when the check deposit was submitted.
Blank Check
Duplicate CheckCheck may have been deposited before.Please try a different check.
Partial EndorsementCheck is missing either endorsement signature or restrictive endorsement.
Session ExpiredThe allowed time frame for confirmation has passed. See Customer ConfirmationPlease try again.
Other

Get by Id#

Get a check deposit by id.

VerbGET
Urlhttps://api.s.unit.sh/check-deposits/{id}
Required Scopecheck-deposits
Timeout (Seconds)5

Query Parameters#

NameTypeDefaultDescription
includestring(empty)Optional. A comma-separated list of related resources to include in the response. Related resources include: customer, account, transaction. See Getting Related Resources

Response#

Response is a JSON:API document.

200 OK#

FieldTypeDescription
dataCheck DepositCheckDeposit resource.
includedArray of DepositAccount or Customer or TransactionArray of resources requested by the include query parameter.
curl -X GET 'https://api.s.unit.sh/check-deposits/100' \-H "Authorization: Bearer ${TOKEN}"

List#

List check deposit resources. Filtering, paging and sorting can be applied.

VerbGET
Urlhttps://api.s.unit.sh/check-deposits
Required Scopecheck-deposits
Timeout (Seconds)120

Query Parameters#

NameTypeDefaultDescription
page[limit]integer100Maximum number of resources that will be returned. Maximum is 1000 resources. See Pagination.
page[offset]integer0Number of resources to skip. See Pagination.
filter[accountId]string(empty)Optional. Filters the results by the specified account id.
filter[customerId]string(empty)Optional. Filters the results by the specified customer id.
filter[status]Check Deposit Status(empty)Optional. Filter by Check Deposit Status. Usage Example: filter[status][0]=PendingReview&filter[status][1]=AwaitingImages
filter[tags]Tags (JSON)(empty)Optional. Filter check deposits by Tags.
sortstringsort=-createdAtOptional. Leave empty or provide sort=createdAt for ascending order. Provide sort=-createdAt (leading minus sign) for descending order.
includestring(empty)Optional. A comma-separated list of related resources to include in the response. Related resources include: customer, account, transaction. See Getting Related Resources
curl -X GET 'https://api.s.unit.sh/check-deposits?page[limit]=20&page[offset]=10' \-H "Authorization: Bearer ${TOKEN}"

Response#

Response is a JSON:API document.

200 OK#

FieldTypeDescription
dataArray of Check DepositArray of check deposit resources.
includedArray of DepositAccount or Customer or TransactionArray of resources requested by the include query parameter.
Example Response:
{  "data": [    {      "type": "checkDeposit",      "id": "112",      "attributes": {        "createdAt": "2021-05-27T09:29:30.828Z",        "amount": 20000,        "description": "Check deposit",        "status": "AwaitingImages"      },      "relationships": {        "account": {          "data": {            "type": "account",            "id": "10001"          }        },        "customer": {          "data": {            "type": "customer",            "id": "10000"          }        }      }    },    {      "type": "checkDeposit",      "id": "233",      "attributes": {        "createdAt": "2021-05-27T10:49:23.287Z",        "amount": 10000,        "description": "Another check deposit",        "status": "AwaitingImages"      },      "relationships": {        "account": {          "data": {            "type": "account",            "id": "10001"          }        },        "customer": {          "data": {            "type": "customer",            "id": "10000"          }        }      }    }  ]}

Update#

Update a check deposit.

VerbPATCH
Urlhttps://api.s.unit.sh/check-deposits/:id
Required Scopecheck-deposits-write
Timeout (Seconds)5

Attributes#

NameTypeDescription
tagsobjectSee Updating Tags.

Response#

Response is a JSON:API document.

200 OK#

FieldTypeDescription
dataCheckDepositThe updated CheckDeposit resource.
Update check deposit:
curl -X PATCH 'https://api.s.unit.sh/check-deposits/:id'-H 'Content-Type: application/vnd.api+json'-H 'Authorization: Bearer ${TOKEN}'--data-raw '{  "data": {    "type": "checkDeposit",    "attributes": {      "tags": {        "by": "Richard Hendricks",        "id": "23033b64-38f8-4dbc-91a1-313ff0156d02"      }    }  }}'

Upload Front-Side Image#

Uploads a check front-side image file. Currently only jpeg file type is supported.

VerbPUT
Urlhttps://api.s.unit.sh/check-deposits/{checkDepositId}/front
Required Scopecheck-deposits-write
Timeout (Seconds)5
note

Maximum image size is 20mb.

Headers#

HeaderValue
Content-TypeAlways image/jpeg.

Response#

Response is a JSON:API document.

200 OK#

FieldTypeDescription
dataCheckDepositThe updated CheckDeposit resource.
curl --request PUT 'https://api.s.unit.sh/check-deposits/46/front' \--header 'Content-Type: image/jpeg' \--data-binary 'front.jpg'

Upload Back-Side Image#

Uploads a check back-side image file. Currently only jpeg file type is supported.

VerbPUT
Urlhttps://api.s.unit.sh/check-deposits/{checkDepositId}/back
Required Scopecheck-deposits-write
Timeout (Seconds)5
note

Maximum image size is 20mb.

Headers#

HeaderValue
Content-TypeAlways image/jpeg.

Response#

Response is a JSON:API document.

200 OK#

FieldTypeDescription
dataCheckDepositThe updated CheckDeposit resource.
curl --request PUT 'https://api.s.unit.sh/check-deposits/46/back' \--header 'Content-Type: image/jpeg' \--data-binary 'back.jpg'

Get front image by Id#

Get a check deposit front image by check deposit id.

VerbGET
Urlhttps://api.s.unit.sh/check-deposits/{id}/front
Required Scopecheck-deposits
Timeout (Seconds)5

Query Parameters#

NameTypeDefaultDescription

Response#

Response is a IMAGE:JPEG file.

200 OK / 302 Found#

Client should support following redirects

curl -X GET 'https://api.s.unit.sh/check-deposits/100/front' \-H "Authorization: Bearer ${TOKEN}"

Get back image by Id#

Get a check deposit back image by check deposit id.

VerbGET
Urlhttps://api.s.unit.sh/check-deposits/{id}/back
Required Scopecheck-deposits
Timeout (Seconds)5

Query Parameters#

NameTypeDefaultDescription

Response#

Response is a IMAGE:JPEG file.

200 OK / 302 Found#

Client should support following redirects

curl -X GET 'https://api.s.unit.sh/check-deposits/100/back' \-H "Authorization: Bearer ${TOKEN}"

Confirm details#

Confirms a check deposit details when it's in AwaitingCustomerConfirmation status

VerbPOST
Urlhttps://api.s.unit.sh/check-deposits/{id}/confirm
Required Scopecheck-deposits
Timeout (Seconds)5

Response#

Response is a JSON:API document.

200 OK#
curl -X POST 'https://api.s.unit.sh/check-deposits/100/confirm' \-H "Authorization: Bearer ${TOKEN}"