The CR system offers the ability to create subledgers instantly and on-demand. A subledger can be linked to any existing deposit account, also known as the master account.


Subledger API Endpoints

In subledger API endpoints, subaccounts is used instead of subledgers. For instance, GET/v1/dda/subaccounts.

In the CR system, subledgers are a first class citizen. All transactions first go through a subledger, followed by the master account. Each master account has what is called an implicit subledger, which is automatically created and maintained. The implicit subledger accounts for the portion of the balance which is directly attributed to the master account's activity. The CR system does this by giving it the same account number as the master.

With the use of an implicit subledger, master account subledgers always sum to the balance of the master account. It is virtually impossible for your master account and subledger to be out of balance.

The master account implicit balance can go negative. This would occur in situations where more funds are attributed to other subledgers than the master account directly. It is the responsibility of the partner to maintain and reconcile the subledger system.


Real-Time Subledger
The subledger and master account balances are updated atomically and never out of sync. Funds posted to a subaccount are immediately available


Subledger account numbers

Like all account numbers, subledger account numbers are globally unique within the bank. Subledger numbers are 12 digits and follow this format:

3 [10 digit random number] [check digit]

All subledger account numbers in COS start with 3.

In theory, it is possible to create millions of sub accounts under a single master account.


Account Check Digit
All accounts use a luhn check digit to validate the other digits in the account number. For more information on the luhn algorithm go here.

Example of a subledger

Subledger types

Opening subledgers

General Ledgers

General Ledger (GL) accounts are internal accounts used for accounting purposes for internal reconciliationClosed Being sure that all the numbers add up as they should and that we know where all the funds are.. COS processes each transaction through a GL account. A GL account must reconcile to zero (0) at the end of the day.

Although GL accounts are meant for CR-partner reconciliation, there are times when you might want to open a GL account for external purposes. For example, if you handle payroll deposits for a customer, you may need to overdraw on an account to be able to send salaries to the customers before the employer’s funds have been deposited into your account. A regular account can’t be overdrawn, but this GL can serve as the account that can be overdrawn.


A transactionClosed Moving funds from one account to another in COS always involves a debit of one account and a credit of another account, completed as a single atomic (simple) operation. Both sides of the transaction must happen for it to be considered completed. If, for example, the debit account does not have enough money to cover the transaction, the credit operation will not complete.

This makes sure that accounts are never out of balance and makes tracking where the money is much easier.

Account activity

Similar to transactions, account activity tracks money movement for a given account. However, unlike transactions, an activity record is linked to exactly one account. So every transaction creates two account activity records. Account activity records also keep track of more than just moving the money from one account to another.

New activity records start with a status of Pending. They stay pending until the posting day closes. At this point during the settlement process, all the account activity records for each account are listed in a new order, credits before debits. COS assigns a posting sequence number to each account activity record a posting sequence number assigned, inserts the running balances, and changes the status Posted. Once this is done, the activity is considered final and is not updated anymore.

Memo posts

You can think of a memo post as a temporary transaction. It tells the system something about the account—usually that some money will be coming in or going out. A memo post is one sided, and may or may not affect the account available balance. A memo post might stay on an account for many days. When it's not needed anymore it falls off and, if necessary, the information in it becomes a permanent transaction.

For example, when you pay for gas with a debit card, COS puts a memo post on your account until the transaction completes. When the charge is captured and finalized, the memo post falls off and is converted to a transaction showing the actual amount spent at the gas station.

An example of an "informational" memo post is with an inbound ACH credit. When CR receives an instruction from the Federal Reserve about an inbound ACH credit, we put a memo post on the account right away even though the effective date of the actual transfer might not be until the following day. The job of this memo post is to tell the account holder that there is going to be some change to their account in the future.

Posting exceptions

A posting exception is like an account activity record, except it only happens when one side of a transaction fails authorization. For example, if the debit side of a transaction fails due to insufficient funds in the account, COS creates a posting exception record on that account. COS does not put a posting exception on the credit side of the transaction because it did not fail in this example.

Availability schedules

Certain credit transactions post with an availability schedule. These schedules give instructions about the amount of the full transaction that will be available on each day after posting. These days until all the funds are available are also called the clearing window.The schedule appears on both the transaction and account activity records. It appears as a array (list) of dollar amounts, where each element of the array represents a posting day.

For example, the following illustrates how an ACH pull transaction may look with a 2-day clearing schedule (lines 15-18):

Availability Schedule Example
      "id": "e25ff690-be93-469f-9915-aa9a011defbf",
      "transactionId": "c93978d3-3451-40a0-be01-aa9a011dec98",
      "traceNumber": "T192111321017433A",
      "status": "Pending",
      "transactionType": "Credit",
      "activityType": "External",
      "source": "Transaction",
      "masterAccountNumber": "2058112745",
      "subAccountNumber": "2058112745",
      "transactionCode": "Outgoing ACH",
      "description": "TEST ACH PULL PPD ID: 123 REF: A211P3HVG7KI",
      "rail": "Ach",
      "railId": "payment/eec1b00b-fcaf-4e91-a894-aa9a011d9366",
      "schedule": [
      "isClearing": true,
      "amount": 2700,
      "productId": "3c6d97f2-2666-44d9-b25d-a9a800d6c59d",
      "partnerId": "d6b4c661-b38a-46a3-8963-a9a40131eacf",
      "postingDate": "2019-07-30T00:00:00-04:00",
      "executedAt": "2019-07-30T13:21:01-04:00",
      "createdAt": "2019-07-30T13:21:03-04:00",
      "lastModifiedAt": "2019-07-30T13:21:03.7929693-04:00"

The ACH payment is for $27.00 total. The schedule attribute shows that $0 will be available immediately on day 1 and that also nothing will be available on day 2. On day 3 the full $27.00 is available. Items such as checks generally make partial funds available each day while the item clears.


Money amounts in API calls and responses are written without a period between the dollars and the cents.

In addition to the schedule attribute, for convenience the response includes an isClearing flag to show whether the item is still within the clearing window. In the above example, the flag switches to false on 8/1.

The schedule is enforced via one or more account holds relating to the item in clearing, correlated by the railId field. For example, the schedule above would be held as follows:


Hold Example

      "id": "866d8cde-e7cf-4bf3-897b-aa9a014d9b08",
      "masterAccountNumber": "2058112745",
      "subAccountNumber": "2058112745",
      "status": "Active",
      "reason": "Availability",
      "rail": "Ach",
      "railId": "payment/eec1b00b-fcaf-4e91-a894-aa9a011d9366",
      "amount": 2700,
      "createdAt": "2019-07-30T16:14:37-04:00",
      "expiresAt": "2019-07-31T00:00:00-04:00",
      "partnerId": "d6b4c661-b38a-46a3-8963-a9a40131eacf",
      "lastModifiedAt": "2019-07-30T16:14:37.287877-04:00"

Note that the hold expires at the close of business on 7/31, thus making the $27.00 available starting on the 8/1 posting day.

Interest accrual is not affected by availability schedules. Accrual will continue to start on the date of the credit regardless of any holds which are in place.

Book Transfers

A book transfer is an internal transfer of funds between two CR accounts under the same partner. The transfer is an atomic operation, which requires both a debit and credit account. The accounts can be either a master account or subledger, or any combination of the two. In this example, we transfer $100 from one account to another:


Sample Book Transfer Request

POST /core/v1/transfers
  "debitAccountNumber": "1234567890",
  "creditAccountNumber": "9999999999",  
  "amount": 10000

This transfer request will result in a transaction being created and executed:


Sample Transaction Response

  "id": "b954ba97-31d9-4c7e-b2b0-a90b00d0669b",
  "traceNumber": "T181771238453M77E",
  "status": "Complete",
  "debit": {    
  "credit": {
    "result": {
  "transactionCode":"Account Transfer",
  "description":"Transfer from 1234567890 to 9999999999",


Restrictions provide a mechanism to block certain transaction activity on an account. For example, if you wanted to block all ACH activity on an account, you could add a restriction which only applied to the ACH rail. If you then wanted to entirely freeze an account, where all activity was blocked, you could add a restriction which applied to all rails.

Partner vs. internal restrictions

As the name suggests, a Partner restriction is one that is applied by a Partner user. It is visible to all users and can be modified by both Partner and Internal users. By contrast an Internal restriction is one that is visible to Partner users, but cannot be modified or removed by them. For example, an internal Operations Team member may apply an Internal account freeze if they do not want it to be modified by the Partner.

This division between Partner restrictions and Internal restrictions also applies to holds.


Should I display restrictions to my customers?
Restrictions and holds may be sensitive in nature. Your Integration Manager (IM) will assist you with your questions on how best to handle customer support issues arising from restrictions or holds.

Restriction policies

Restriction policies are managed at the product level and define the types of transactions allowed for the program as a whole. Account level restrictions can be applied in addition to these. These policies are not managed by the partner and are configured by the Integration Team for your product.

Creating restrictions

Account restrictions work by defining a set of criteria in which the restriction applies to. For example, if we wanted to block all ACH debits over $100 to an account we would create a restriction like this:


Create Restriction Request

  "subAccountNumber": null,
  "appliesTo": "All",
  "rail": "Ach",
  "transactionType": "Debit",
  "otherAccountType": null,
  "amountThreshold": 10000,
  "transactionCode": null,
  "reason": "Restricted",
  "notes": "Optional notes here"

Null values indicate a wildcard that any value would match.


For each Deposit Account CR provides a monthly account statement. The statement contains all posted activity inclusive of the period start and end dates. The statement lists details according to the posting sequence of the account activity records.


After the statement is generated and all data has been finalized, CR might attach one or more documents to that record. A document is usually a downloadable PDF, but it could be another document type, such as a CSV file. The statement DocumentCount field indicates the number of documents attached to that statement. Documents may take time to generate, so expect potential delays between the data portion being generated and the associated documents becoming available.

Other Features

Tax document (1099) retrieval

The IRS requires Cross River to provide account holders with an IRS Form 1099 for interest earned on their accounts equal to or greater than $10.00. The CR system aggregates earnings information across each customer's accounts to ensure that a 1099 is only generated if that customer's earnings are $10.00 or more. You can retrieve 1099 forms either by API or using COS Explorer.

Early Direct Deposit (EDD)

What is Early Direct Deposit?

Traditional direct deposit means that, for example, when an employer deposits a paycheck, the deposit is posted to the customer account on the effective date. Early Direct Deposit gives customers who receive their paycheck through direct deposit access to their funds up to 2 days earlier than traditional direct deposit. Cross River settles funds upon receipt of the ACH file from the Federal Reserve rather than waiting to release them on the effective date.

By providing Early Direct Deposit, you benefit your customers by improving their cash flows, which could enable them to avoid overdrafts, pay down debt, and generally experience less financial stress.

By meeting customer preferences for quicker access to funds, you may encourage more engagement with your services. Earlier settlement of funds may also support greater debit card usage, potentially generating increased interchange revenue.

How is Early Direct Deposit enabled?

Reach out to your Relationship Manager. Once you sign a contract addendum, COS Ops enables Early Direct Deposit for your customers.


Be aware of the following limitations:

  • Early Direct Deposit is not guaranteed and depends on timely transfer of ACH files.

  • The customer's employer must initiate the payroll payment on time, and the employer’s bank or payroll agency must ensure delivery of ACH files to the Federal Reserve before the effective date.