Checks API

Let's take a closer look at some of the core features of the Checking API:

Depositing a Payment

Depositing a check is one of the most common task associated with checks. Here we see a check for $1000.00 being deposited to a COS client account.

POST /v1/payments
{
  "accountNumber": "2028340459",
  "payeeName": "Peter Griffin",
  "checkNumber": "0012",
  "payerRoutingNumber": "021214273",
  "payerAccountNumber": "23456784519",
  "amount": "1000",
  "frontImage": base64 string,
  "backImage": base64 string,
  "purpose": "string"
}

Here's the response after a check is deposited. An ID is generated and can be used later to view or modify the check deposit.

{
  "id": "00000000-0000-0000-0000-000000000000",
  "accountNumber": "2028340459",
  "referenceId": "12345",
  "paymentType": "Forward",
  "checkType": "Standard",
  "direction": "Outbound",
  "status": "Created",
  "source": "Api",
  "posting": "Pending",
  "postingCode": "string",
  "clientBatchId": "00000000-0000-0000-0000-000000000000",
  "clientBatchSequence": 0,
  "fedBatchId": "00000000-0000-0000-0000-000000000000",
  "fedBatchSequence": 0,
  "coreTransactionId": "00000000-0000-0000-0000-000000000000",
  "originalPaymentId": "00000000-0000-0000-0000-000000000000",
  "customerId": "00000000-0000-0000-0000-000000000000",
  "payerRoutingNumber": "021214273",
  "payerAccountNumber": "23456784519",
  "payeeName": "Peter Griffin",
  "checkNumber": "0012",
  "bofdRoutingNumber": "021214273",
  "sequenceNumber": "string",
  "amount": 10000,
  "returnCode": "string",
  "hasFrontImage": true,
  "hasBackImage": true,
  "isRedeposit": false,
  "policy": "Standard",
  "schedule": [
    0
  ],
  "createdAt": "2021-03-22T21:14:02.139Z",
  "processedAt": "2021-03-22T21:14:02.139Z",
  "completedAt": "2021-03-22T21:14:02.139Z",
  "postedAt": "2021-03-22T21:14:02.139Z",
  "wasReturned": false,
  "purpose": "antiques",
  "productId": "00000000-0000-0000-0000-000000000000",
  "partnerId": "00000000-0000-0000-0000-000000000000",
  "lastModifiedAt": "2021-03-22T21:14:02.139Z"
}

Availability Policies

Availability of funds from a deposited check are based on rules mandated by the Federal Reserve specifically under Regulation CC. Regulation CC controls how long a bank can hold funds based on various types of deposits. For example, for new accounts that have been open for less than 30 days a check be put on hold for as long as nine days while a cash deposit should be available on the first business day after the day of deposit. Practically speaking, banks frequently make funds available sooner than what Regulation CC requires. It's important to understand check processing and how Regulation CC (12 CFR 229) laws effect availability of funds. Learn more about Regulation CC

PUT /v1/payments/{id}/policy

{
  "policy": "OnUs"
}

In the example shown above, the policy chosen is "OnUs". An "OnUs" is a type of check that is drawn from the same bank, or a branch thereof. See: more about Policy Types. Partners have the ability to change the deposit schedule, allowing them to either provide a better customer experience (i.e. making funds available sooner for a high value customer) or minimize losses (i.e. delaying availability for a check that may likely be returned). For additional information on how to change the availability policy of a check deposit, see this page.

Cancel a Check Deposit

There are times when a check deposit will need to be cancelled. An example would be to prevent a loss on an account where check kiting activity has been identified. A check deposit can be cancelled by using its id with the POST /v1/payments/{id}/cancel endpoint. You can only cancel a check if the payment hasn't already been processed.

https://sandbox.crbcos.com/Checks/v1/payments/00000000-0000-0000-0000-000000000000/cancel

View Check Images

Partners can view the images of checks by using the GET /v1/payments/{id}/images/{view} endpoint, which will return the Base64 encoded string of the check image.

https://sandbox.crbcos.com/Checks/v1/payments/00000000-0000-0000-0000-000000000000/images/Front

Payment Analysis

GET /v1/payments/{id}/analysis
{
  "analysis": {
    "data": {
      "accepted": true,
      "processingStatus": "Passed",
      "requestStatus": "Succeeded",
      "processingId": "dfeb2604-8b93-49f6-bbe3-84fa99d7add4",
      "iqaMessage": "IQAGOOD",
      "transactionStatusCode": 0,
      "transactionId": 508567,
      "groupName": "Cross River Group",
      "organizationName": "Cross River",
      "submissionDate": "2021-09-09T07:35:33.7421852-04:00",
      "flexibleFields": {},
      "readFields": [
        {
          "name": "MICR",
          "value": "d314074269dc28293886c1237",
          "confidence": 1000
        },
        {
          "name": "CheckRoutingNumber",
          "value": "123456789"
        },
        {
          "name": "CheckAccountNumber",
          "value": "423651472"
        },
        {
          "name": "CheckNumber",
          "value": "101"
        },
        {
          "name": "RecognizedAmount",
          "value": "1.00",
          "confidence": 984
        }
      ],
      "testResults": [
        {
          "checkSide": "Front",
          "name": "MICR Confidence",
          "value": "Passed",
          "threshold": 500,
          "confidence": 1000
        },
        {
          "checkSide": "Front",
          "name": "Amounts Match",
          "value": "Passed",
          "threshold": 500,
          "confidence": 984
        },
        {
          "checkSide": "Front",
          "name": "Front Focus",
          "value": "Passed",
          "threshold": 350,
          "confidence": 1000
        },
        {
          "checkSide": "Back",
          "name": "Back Focus",
          "value": "Passed",
          "threshold": 100,
          "confidence": 262
        },
        {
          "checkSide": "Front",
          "name": "Shadow on Image",
          "value": "Passed",
          "threshold": 851,
          "confidence": 1000
        },
        {
          "checkSide": "Back",
          "name": "Shadow on Image",
          "value": "Passed",
          "threshold": 851,
          "confidence": 1000
        },
        {
          "checkSide": "Front",
          "name": "Contrast of Image",
          "value": "Passed",
          "threshold": 401,
          "confidence": 1000
        },
        {
          "checkSide": "Back",
          "name": "Contrast of Image",
          "value": "ManualReview",
          "threshold": 401,
          "confidence": 340
        },
        {
          "checkSide": "Front",
          "name": "Cut Corners",
          "value": "Passed",
          "threshold": 751,
          "confidence": 1000
        },
        {
          "checkSide": "Back",
          "name": "Cut Corners",
          "value": "Passed",
          "threshold": 751,
          "confidence": 1000
        },
        {
          "checkSide": "Front",
          "name": "Image Too Small",
          "value": "Passed",
          "threshold": 501,
          "confidence": 1000
        },
        {
          "checkSide": "Back",
          "name": "Image Too Small",
          "value": "Passed",
          "threshold": 501,
          "confidence": 1000
        },
        {
          "checkSide": "Front",
          "name": "Darkness",
          "value": "Passed",
          "threshold": 401,
          "confidence": 863
        },
        {
          "checkSide": "Back",
          "name": "Darkness",
          "value": "Passed",
          "threshold": 401,
          "confidence": 839
        },
        {
          "checkSide": "Front",
          "name": "View Angle",
          "value": "Passed",
          "threshold": 701,
          "confidence": 970
        },
        {
          "checkSide": "Back",
          "name": "View Angle",
          "value": "Passed",
          "threshold": 701,
          "confidence": 967
        },
        {
          "checkSide": "Front",
          "name": "Rotation Angle",
          "value": "Passed",
          "threshold": 701,
          "confidence": 991
        },
        {
          "checkSide": "Back",
          "name": "Rotation Angle",
          "value": "Passed",
          "threshold": 701,
          "confidence": 998
        },
        {
          "checkSide": "Front",
          "name": "Folded Or Torn Corner",
          "value": "Unknown",
          "threshold": 0,
          "confidence": 0
        },
        {
          "checkSide": "Back",
          "name": "Folded Or Torn Corner",
          "value": "Unknown",
          "threshold": 0,
          "confidence": 0
        },
        {
          "checkSide": "Front",
          "name": "Folded Or Torn Edge",
          "value": "Unknown",
          "threshold": 0,
          "confidence": 0
        },
        {
          "checkSide": "Front",
          "name": "Folded Or Torn Edge",
          "value": "Unknown",
          "threshold": 0,
          "confidence": 0
        },
        {
          "checkSide": "Front",
          "name": "Excessive Skew",
          "value": "Unknown",
          "threshold": 0,
          "confidence": 0
        },
        {
          "checkSide": "Back",
          "name": "Excessive Skew",
          "value": "Unknown",
          "threshold": 0,
          "confidence": 0
        },
        {
          "checkSide": "Front",
          "name": "Piggyback Document",
          "value": "Unknown",
          "threshold": 0,
          "confidence": 0
        },
        {
          "checkSide": "Back",
          "name": "Piggyback Document",
          "value": "Unknown",
          "threshold": 0,
          "confidence": 0
        },
        {
          "checkSide": "Front",
          "name": "Too Light",
          "value": "Unknown",
          "threshold": 0,
          "confidence": 0
        },
        {
          "checkSide": "Back",
          "name": "Too Light",
          "value": "Unknown",
          "threshold": 0,
          "confidence": 0
        },
        {
          "checkSide": "Front",
          "name": "Too Dark",
          "value": "Unknown",
          "threshold": 0,
          "confidence": 0
        },
        {
          "checkSide": "Back",
          "name": "Too Dark",
          "value": "Unknown",
          "threshold": 0,
          "confidence": 0
        },
        {
          "checkSide": "Front",
          "name": "Undersize Image",
          "value": "Unknown",
          "threshold": 0,
          "confidence": 0
        },
        {
          "checkSide": "Back",
          "name": "Undersize Image",
          "value": "Unknown",
          "threshold": 0,
          "confidence": 0
        },
        {
          "checkSide": "Front",
          "name": "Oversize Image",
          "value": "Unknown",
          "threshold": 0,
          "confidence": 0
        },
        {
          "checkSide": "Back",
          "name": "Oversize Image",
          "value": "Unknown",
          "threshold": 0,
          "confidence": 0
        },
        {
          "checkSide": "Front",
          "name": "Excessive Spot Noise",
          "value": "Unknown",
          "threshold": 0,
          "confidence": 0
        },
        {
          "checkSide": "Back",
          "name": "Excessive Spot Noise",
          "value": "Unknown",
          "threshold": 0,
          "confidence": 0
        },
        {
          "checkSide": "Back",
          "name": "Endorsement Presence",
          "value": "ManualReview",
          "threshold": 101,
          "confidence": 0
        },
        {
          "checkSide": "Front",
          "name": "Aspect Ratio Validation",
          "value": "Passed",
          "threshold": 900,
          "confidence": 998
        },
        {
          "checkSide": "Front",
          "name": "MICR Intrusion Detection",
          "value": "Passed",
          "threshold": 100,
          "confidence": 1000
        },
        {
          "checkSide": "Front",
          "name": "Check Length",
          "value": "Unknown",
          "threshold": 0,
          "confidence": 0
        },
        {
          "checkSide": "Front",
          "name": "Check Height",
          "value": "Unknown",
          "threshold": 0,
          "confidence": 0
        },
        {
          "checkSide": "Front",
          "name": "Bitonal Image Size",
          "value": "Passed",
          "threshold": 500,
          "confidence": 1000
        },
        {
          "checkSide": "Back",
          "name": "Bitonal Image Size",
          "value": "Passed",
          "threshold": 500,
          "confidence": 1000
        }
      ]
    }
  },
  "id": "278801a3-042f-4963-ae68-ad9e00bf082a",
  "accountNumber": "2523350615",
  "referenceId": "C25277523IA4",
  "paymentType": "Forward",
  "checkType": "Standard",
  "direction": "Outbound",
  "status": "Pending",
  "source": "Api",
  "posting": "Authorized",
  "postingCode": "OK",
  "coreTransactionId": "a1208c1b-f3d6-45b7-8660-ad9e00bf082a",
  "memoPostId": "02444ecb-1bbb-4c9e-a8da-ad9e00bf082a",
  "originalPaymentId": "278801a3-042f-4963-ae68-ad9e00bf082a",
  "customerId": "81539818-c25c-4f5b-ac1f-ad9e00bef5b8",
  "payerRoutingNumber": "123456789",
  "payerAccountNumber": "423651472",
  "payeeName": "",
  "checkNumber": "101",
  "bofdRoutingNumber": "021214891",
  "sequenceNumber": "8844243179",
  "amount": 100,
  "currency": "usd",
  "micr": "d123456789dc223651472c1237",
  "recognizedAmount": 100,
  "iqaPassed": true,
  "hasFrontImage": true,
  "hasBackImage": true,
  "isRedeposit": true,
  "policy": "RedepositedCheck",
  "schedule": [
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    100
  ],
  "createdAt": "2021-09-09T07:35:31.55-04:00",
  "wasReturned": false,
  "depositBusinessDate": "210909",
  "productId": "95fec0a3-64ba-4b6e-a1ed-ad9e00bef6a1",
  "partnerId": "e0e835f0-ee60-4c65-bada-ad9e00bef422",
  "lastModifiedAt": "2021-09-09T07:35:34.3285628-04:00"
}

Learn More

📘

Checks API Reference