Transactions
Overview
A transaction in COS always involves a debit of one account and a credit of another account, completed as a single atomic operation. Both sides of the transaction must execute for it to be considered completed. If for example the debit account has insufficient funds, the credit operation will not complete.
This ensures accounts are never out of balance and makes following the movement of funds 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 for every one transaction, two account activity records are created. Account activity records also have a lifecycle beyond the initial money movement.
New activity records will be created with a status of Pending. They will stay pending throughout the day until the posting day closes. At this point during the settlement process, all the activity for each account will be reordered (credits before debits), a posting sequence number assigned, running balances inserted, and the status will transition to Posted. Once this process completes, the activity is considered final and no further updates will occur.
Memo Posts
Memo posts are essentially temporary transactions. They are one sided, and may or may not affect the account available balance. A memo post may remain on an account for several days. They will either be converted to a permanent transaction or simply be removed.
An example of when a memo post would be applied is with a debit card authorization at a gas station. When the charge is captured and finalized, the memo post would fall off and be converted to a transaction indicating the actual amount spent at the gas station.
An example of when an "informational" memo post would be used is with an inbound ACH credit. This would be applied when we receive the instruction from the Federal Reserve, however the effective date may not be until the following day. The memo post here would simply be applied to notify the customer of pending activity that will soon be applied to their account.
Posting Exceptions
A posting exception is similar to an account activity record, however it is only generated when one side of a transaction fails authorization. For example, the debit side of a transaction may fail due to insufficient funds. At this point a posting exception record would be created. Note that the credit side of the transaction would not have a posting exception since it did not fail in this example.
Availability Schedules
Certain credit transactions will post with an availability schedule. These schedules dictate the amount of the full transaction that will be available on each day after posting. The schedule will appear on both the transaction and account activity records. It is expressed as an array 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:
{
"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 field indicates $0 will be available immediately on day 1, and also indicates nothing will be available on day 2. Then on day 3 the full $27.00 will be made available. Items such as checks generally make partial funds available each day while the item clears.
In addition to the schedule field, for convenience an isClearing flag is made available to indicate whether the item is still within the clearing window. In the above example, the flag would switch 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:
{
"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.
Updated almost 3 years ago