Accounts
The Cross River operating system (COS) gives you many different account solutions through a suite of products types. You can open accounts for your customers in COS under any product type we define and configure together with you.
COS supports both transactional and non-transactional account solutions.
-
Transactional account
A transactional account allows the account holder to deposit or withdraw money from their account as much as they want as long as there are funds available. This is called a transaction
Moving funds from one account to another, and it always involves a debit of one account and a credit of another account, completed as a single operation.
-
Non-transactional account
Certain savings accounts are non-transactional, meaning that money can only move in or out of the account according to certain rules. These accounts are subject to the Federal Reserve Reg D regulations.
We support several transactional and non-transactional account product types so you can offer your customers different kinds of accounts based on your agreement with CR. Some of our products types include:
-
Demand deposit accounts:
-
Checking
-
Savings
-
Time deposit
-
-
Debit card
The product type determines the behaviors and configurations of these accounts. CR provides you with a Product ID for each account type that you want to offer your customers. You need this Product ID to create accounts. Speak to your Implementation or Relationship Manager for more details, including how to set up product types for your customers.
Demand deposit accounts (DDAs)
A demand deposit account means that an account owner can withdraw their funds whenever they want with no restrictions or penalties.
You can open and manage demand deposit accounts for your customers, such as checking and savings, using our DDA APIs. DDA accounts are also referred to as Master accounts.
DDA account numbers

Deposit account numbers are 10 digits in length and follow this format:
2 [8 digit random number] [check digit]
All master deposit accounts within COS start with the number 2.
All accounts use a luhn check digit to validate the other digits in the account number. For more information on the luhn algorithm click here.
Once an account number has been created and assigned it cannot be reassigned to another customer.
Certificates of deposit (time deposit accounts)
Certificates of Deposit (CDs), or time deposits, are a special type of savings account. Once the predefined amount of money is deposited in a time deposit account within the predefined time frame, customers cannot add any more money and the account is locked. If the customer decides to withdraw the funds before the configured maturity date, they will pay a penalty fee of a set number of days of interest.
All time deposit products have a defined number of months that the account remains locked and an interest rate for accrual during this time period.
CR lets account holders open step-up or bump-up CDs, where the interest rate automatically increases after a set number of months. When CR configures the time deposit product for you, you can request the configuration to include up to 4 periods (rate increases). For example, you could ask for a 12-month CD product that can be bumped up every 3 months. Actual bump-ups are optional and must be requested. They do not happen automatically.
A penalty month is the maximum number of months that a penalty applies. Configuring penalty months as 12 would mean that if the money is withdrawn (account is closed) before 12 months have passed, (x) fee days would be withdrawn from the account as a penalty.
Fee days defines how many days of simple interest to assess as a penalty. Time deposits have a maximum of 2 penalty tiers.
General Ledgers
General Ledger (GL) accounts are internal accounts used for accounting purposes for internal reconciliation 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.
Transactions
A transaction 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 record

A newly created activity record has a Pending
status until the posting day closes during nightly settlement process. At this point, COS reorders the account activity records for statement purposes as described in your deposit account agreement. COS assigns a posting sequence number to each account activity record and changes the status to Posted. Once this is done, the activity is considered final and is not updated anymore.
The order of account activity on a given date is not necessarily the order that each activity happened.
Memo posts

A memo post is applied only to one side of a transaction, and may or may not affect the account available balance. A memo post might stay on an account for many days. When it expires 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

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):
{
"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": [
0,
0,
2700
],
"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

The transfer is a single 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": {
"transactionType":"Debit",
"accountType":"Deposit",
"masterAccountNumber":"1234567890",
"subAccountNumber":"1234567890",
"partnerId":"eaf67ca7-f8b8-4e7c-9bd8-a8ea00f53d64",
"productId":"f96bb66f-7afe-444d-96e8-a8eb00cfc1c9",
"result":{
"success":true,
"code":"OK"
}
},
"credit": {
"transactionType":"Credit",
"accountType":"Deposit",
"masterAccountNumber":"9999999999",
"subAccountNumber":"9999999999",
"partnerId":"eaf67ca7-f8b8-4e7c-9bd8-a8ea00f53d64",
"productId":"f96bb66f-7afe-444d-96e8-a8eb00cfc1c9",
"result": {
"success":true,
"code":"OK"
}
},
"transactionCode":"Account Transfer",
"amount":10000,
"description":"Transfer from 1234567890 to 9999999999",
"rail":"Internal",
"proposedAt":"2018-06-26T12:38:45-04:00",
"executedAt":"2018-06-26T12:38:47-04:00",
"lastModifiedAt":"2018-06-26T12:38:47.7228763-04:00"
}
Restrictions

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
POST https://sandbox.crbcos.com/core/v1/dda/accounts/200012345/restrictions
{
"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.
Statements
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. The document is retrievable as a PDF file.
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.

Ensure that your customers:
-
Understand the requirements and limitations
-
Have checking or savings accounts set up with Cross River.
-
Are enrolled for direct deposit with their employers. Once Early Direct Deposit is enabled, 1 to 2 pay cycles are usually necessary before Early Direct Deposit takes effect.

-
Your customer's employer instructs their bank or payroll agency to initiate payroll payment.
-
The employer’s bank sends an ACH file to the Federal Reserve.
-
The Federal Reserve sends the ACH file to Cross River.
-
Cross River settles funds to customer’s account on the same day the ACH file is received (up to 2 days before the effective date). A memo post* is added to the available balance. On the effective date, the memo post is replaced seamlessly by a full a transfer.
-
The customer can access funds upon settlement.
*Memo posts are generally used with debit cards, meaning the available balance drops. In this case, the available balance increases.

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.

Once early DD is enabled for you in the sandbox you can call the simulate API to generate an ACH that will match the EDD requirements.
Register for the Ach.Payment.ReceivedEarly
webhook.
Use the POST /v1/payments/simulated-inbound-originations
endpoint with these values for the following attributes:
-
serviceType
= standard -
secCode
= PPD
Cross River Account Management APIs
This table presents APIs we have described in detail.
Action |
API Call |
Description |
---|---|---|
Open a deposit account | POST /core/v1/dda/accounts
|
Creates a DDA account based on the product ID for that type of account |
Request early withdrawal of time deposit | POST /core/v1/dda/accounts/{accountNumber}/time-deposit/early-withdraw
|
Requests to withdraw the funds from a time deposit account before the account reaches maturity |
Request bump up of CD to higher interest rate | POST /core/v1/dda/accounts/{accountNumber}/time-deposit/bump-up
|
Increases the interest rate on a bump-up time deposit account to the configured bump-up rate |
Get time deposit (CD) account activity on a specific account | GET /core/v1/dda/accounts/{accountNumber}/time-deposit
|
Returns information about the account activity of a specific time deposit account |
|
Returns the projected penalty fee if you make an early withdrawal to an active time deposit account |