Account
An account is a bank account belonging to exactly one customer and managed by CorePro.
To correlate a specific account in CorePro to a specific account item in your system, use the tag
property.
An account is in contrast to an External Account which is managed by a different financial institution.
An account can be converted to a joint account by simply granting access to additional customers. There is no other distinction in CorePro API between an "account" and a "joint account" outside the concept of multiple customers having access to an account.
account Object
Represents a single account in CorePro. A single customer can have several accounts.
details
Property | Data Type (length) |
Description |
---|---|---|
accountId |
integer | The unique identifier for an account. |
customerId |
integer | The unique identifier for the customer who owns the account. |
tag |
string (50) | A caller-specified, unique identifier for this account. Must be unique within a given Program. Maximum length is 50 characters. |
name |
string (50) | A caller-specified, user-friendly name for this account. Must be unique within a given Customer. Maximum length is 50 characters. |
accountNumber |
string (15) | Account number of the bank account. Generated at creation time. NOTE: Is emitted only if isSensitiveInfoVisible = true Needs enabled by Q2. |
accountNumberMasked |
string (15) | Masked version of the Account number of the bank account. e.g. ********1234 |
routingNumber |
string (15) | Routing Transit Number (RTN) is a nine-digit bank code used to identify the financial institution where bank account is held. Read-only. NOTE: Is emitted only if isSensitiveInfoVisible = true Needs enabled by Q2. |
routingNumberMasked |
string (15) | Masked version of the Routing number of the bank account. e.g. ********1234 |
status |
string (50) |
Possible values include:
|
type |
string (50) |
The type of the product associated with the account through
|
productId |
integer |
The unique identifier of the product which this account is associated with. Configured products can be found on the |
createdDate |
datetime | Date the account was created |
closedDate |
datetime | Date the account was closed |
accountBalance |
decimal |
Total balance of account, including funds that have holds placed on them. Represents all settled transactions to date. This is the balance used for interest accrual calculations, if this is an interest-bearing account. |
availableBalance |
decimal |
Balance available for immediate withdrawal.
Settling a transaction for a DDA account will typically credit the |
pendingBalance |
decimal |
Balance of pending deposit transactions. When a pending deposit transaction settles, it will debit this balance. Deposit transactions which settle immediately will never affect this balance. |
isPrimary |
boolean | True if this is the primary account for this customer. Read-only. Automatically set at account creation time. |
isCloseable |
boolean | True if this is the account can be closed via /account/close . This property is assignable only at account creation time (cannot be updated). |
isLocked |
boolean | True if this account is locked. Read-only. The account can be locked via the API, Admin Console or an automated process only. |
lockTypeCode |
string (3) |
The type of lock. Possible values include:
|
lockReasonTypeCode |
string (3) |
The reason the lock was applied to the account. Possible values include:
|
legalName1 |
string (100) | The first legal name used to identify the account. |
legalName2 |
string (100) | A secondary legal name used to identify the account. |
regDWithdrawalCount |
integer | Count of withdrawals on a Savings product with RegD Fee enabled for current month. Increments per withdrawal transaction and if needed, based on product configuration, will create a single Fee transaction at month-end. |
The following set of properties are all releated to Joint Accounts. There is no special process for converting a "normal" account to a joint account. Once an account has more than one customer with access to it, it is considered a joint account. See the following routes for controlling access to an account: |
||
totalCustomers |
integer | The total number of customers with some type of access to the account. |
isJointAccount |
boolean |
|
primaryCustomerId |
integer | Denotes the customer considered the primary owner for the account. By default, this is the |
isPrimaryCustomer |
boolean | True if the customerId passed in the route matches the |
accessTypeCode |
string (10) |
The type of access the customerId passed in the route has to the account. Possible values include:
|
customerPriority |
integer |
The priority of ownership the customer has for the account. Primary owner always has a Lower numbers indicate higher priority of ownership. Upon death of the primary owner, the joint account ownership will shift to the account owner with a This can be set only by calling /account/editAccess to add or remove a customer from an account. |
lastModifiedDate |
datetime | Date when the object was last altered in any way (excluding the balance properties -- see |
balanceLastModifiedDate |
datetime | Date when any of |
All properties beginning with recurringContribution require the program to have Recurring Contributions enabled. This is an optional feature that requires an additional subscription fee.If your program does not have this enabled and recurringContributionType is specified as a valid value other than None or empty string when calling /account/create or /account/update, runtime error 59009 will occur.
|
||
recurringContributionType |
string (50) |
The frequency with which recurring contributions occur. If omitted on a create, None is assumed. Valid values include:
|
recurringContributionAmount |
decimal | The amount to contribute on a recurring basis. |
recurringContributionFromExternalAccountId |
integer | The externalAccountId from which funds will be transferred on a recurring basis. Refers to an externalAccount object. |
recurringContributionStartDate |
datetime | The earliest date on which future recurring contributions should start. Note if the day specified is less than or equal to "tomorrow", the first recurring contribution will occur the following period. So if today is the 8th and a value between 1 and 9 is specified, the first recurring contribution will happen the following period. If a value between 10 and 28 is specified, the first recurring contribution will happen during the current period. The value for the day portion of the date must be between 1 and 28. |
recurringContributionEndDate |
datetime | The earliest date on which future recurring contributions should end. Must be greater than the recurringContributionStartDate . If recurringContributionEndDate is in the past, effectively this effectively disables recurring contributions. i.e. same behavior as though recurringContributionType = None . |
recurringContributionNextDate |
datetime | The date the next recurring contribution is scheduled to occur. This property is read-only, but setting recurringContributionStartDate causes this date to change. |
globalAccountAccessEnabled |
boolean | True for an account which can pull or push funds from all external accounts in the program. This property is read-only, assignable only by CorePro or a bank user. |
The following are all completely optional properties. |
||
targetAmount |
decimal | The amount the customer wants the availableAmount to reach. |
targetDate |
datetime | The date the customer would like the targetAmount to be reached. |
targetMetDate |
datetime | The first date the availableAmount reached or exceeded the targetAmount . Since a customer may withdraw funds then deposit more funds without closing an account, it is possible to surpass the targetAmount multiple times. However, the targetMetDate is updated only on the first time, not on the second or any subsequent times. |
targetMetPercent |
decimal | The percent of progress towards reaching the targetAmount . Essentially availableBalance / targetAmount . Rounded to 2 decimals of precision. |
category |
string (50) | The category to which this account belongs. Freeform. Useful for grouping and trending in reports. |
subCategory |
string (50) | The subcategory to which this account belongs. Freeform. Useful for grouping and trending in reports. |
customField1 |
string (50) | A property for holding client-defined data. There is no business logic in CorePro for a custom field. |
customField2 |
string (50) | A property for holding client-defined data. There is no business logic in CorePro for a custom field. |
customField3 |
string (50) | A property for holding client-defined data. There is no business logic in CorePro for a custom field. |
customField4 |
string (50) | A property for holding client-defined data. There is no business logic in CorePro for a custom field. |
customField5 |
string (50) | A property for holding client-defined data. There is no business logic in CorePro for a custom field. |
close
Closes an account.
If the account balance is greater than 0 or any interest is owed on this account, then those amounts are calculated and a transaction is implicitly created with the sum of those amounts being credited into the given closeToAccountId
.
That transaction's tag
property is also assigned the value in the transactionTag
property, if specified.
POST /account/close
Request Body Parameters
customerId |
Required | Customer ID (returned when customer originally created) |
accountId |
Required | The accountId of the account to close. |
closeToAccountId |
The * If there is a balance on this account OR this is an interest-bearing account and interest is owed, |
|
transactionTag |
Optional | A program-wide unique identifier supplied by the caller that is to be associated with the transaction created to move any funds out of the account being closed. |
NOTE: The properties returned from this call are completely different than all other /account routes. It does not return an account object. It returns details of the account closure process that could be useful.
Response Data
customerId |
Customer ID (returned when customer originally created) | |
accountId |
The accountId of the account to close. |
|
closeToAccountId |
The accountId of the account or the externalAccountId of the externalAccount where any funds in the closing account are to be transferred. |
|
transactionId |
A program-wide unique identifier created by CorePro that represents the transaction used to move the remaining funds to the closeToAccountId account. |
|
transactionTag |
A program-wide unique identifier supplied by the caller that is to be associated with the transaction created to move any funds from the closing account. | |
closingBalanceAmount |
The balance of the account at close time prior to any interest being paid. | |
interestPaidAmount |
The amount of interest paid at time of close. | |
totalClosingAmount |
The total amount of funds transferred to the given closeAccountId at time of close. NOTE: closingBalanceAmount + interestPaidAmount will equal totalClosingAmount , unless Backup Withholding is enabled for that customer. If Backup Withholding is enabled, its amount is 28% of total interest earned, meaning the interestPaidAmount returned in that case is 72% of total interest earned. |
|
isClosedToExternalAccount |
true if the closeToAccountId was an external account. false otherwise. |
Error Codes
Code | Message (en-US) | Notes |
1-60000 | Any "Common Error Code" may occur. | See Common Error Codes |
65901 | Invalid account id '{0}'. | |
65902 | Invalid closing account id '{0}'. | |
65903 | Transaction with tag '{0}' already exists. | |
65904 | Closing account id '{0}' is deactivated. | |
65905 | Closing account id '{0}' is not yet verified. | |
65906 | Closing account id '{0}' is not open. | |
65907 | Account id '{0}' and close to account id '{1}' cannot be the same. | |
65908 | Cannot close an account with pending transactions or funds on hold. | |
65909 | Cannot close an account with a negative balance. | |
65910 | Account id '{0}' is not allowed to be closed. | The isCloseable flag is set to true for this account, preventing the close from succeeding. To force a close, use the CorePro Admin console to perform this functionality. |
65911 | Invalid close to account id '{0}'. | |
65912 | CloseToAccountId {1} does not match Cash account configured for program '{0}'. | |
65913 | Account id '{0}' is already pending closure. | |
65914 | Account id '{0}' is already closed. | |
65916 | Customer id '{0}' has insufficient privileges to close account id '{1}'. | |
65917 | Customer id '{0}' has insufficient privileges to deposit funds into account id '{1}'. | |
65918 | Account id '{0}' is still associated with card id '{1}'. Call /card/removeAccount to disassociate, then retry your request. | |
65920 | Invalid NetAccountValue of {0}. Contact support. |
Example
Request
POST /account/close Authorization: Basic PutBase64TokenHere
{ "customerId": 33, "accountId" : 80, "closeToAccountId" : 27, "transactionTag" : "oiwjo28c" }
Response
200
{ "data": { "accountId": 80, "closeToAccountId" : 27, "transactionId" : 23894723, "transactionTag" : "oiwjo28c", "closingBalanceAmount" : 32.98, "interestPaidAmount" : 0.82, "totalClosingAmount" : 33.80, "isClosedToExternalAccount" : true }, "errors": [], "status": 200 }
create
Create a new account for a customer
POST /account/create
Request Body Parameters
customerId |
Required | Customer ID (returned when customer originally created) |
name |
Required | The name to apply to this account. |
productId |
Required | The unique identifier of the product which this account is associated with. Configured products can be found on the For backwards compatibility this will default to the program's original product's productId associated with the supplied |
type |
Optional |
Deprecated; use Prepaid , Checking , Savings , or ForBenefitOf . However, each program defines which type(s) of account that are actually allowed for that particular program.
|
targetDate |
Optional | The date by which the customer wants this account to reach the given targetAmount. |
isCloseable |
Optional |
This flag determines if the account can be closed via
Defaults to |
category |
Optional | Freeform text which can be used to categorize accounts, useful for analytics. |
subcategory |
Optional | Freeform text which can be used to further subcategorize accounts, useful for analytics. |
tag |
Optional | A program-wide unique identifier supplied by the caller to associate with the new account. |
recurringContributionType |
Optional | Accepted values are "None", "BiWeekly", and "Monthly". Applicable only if the program has opted into the recurring contribution feature set. |
recurringContributionAmount |
Required if recurringContributionType is any value except None |
Amount to deposit each recurring contribution period. Applicable only if the program has opted into the recurring contribution feature set. |
recurringContributionFromExternalAccountId |
Required if recurringContributionType is any value except None |
External account from which recurring contributions are withdrawn. Applicable only if the program has opted into the recurring contribution feature set. |
recurringContributionStartDate |
Required if recurringContributionType is any value except None |
Date to start the first recurring contribution period. Applicable only if the program has opted into the recurring contribution feature set. |
recurringContributionEndDate |
Required if recurringContributionType is any value except None |
Date to end the last recurring contribution period. Applicable only if the program has opted into the recurring contribution feature set. |
customField1 |
Optional | Any value up to 50 characters in length |
customField2 |
Optional | Any value up to 50 characters in length |
customField3 |
Optional | Any value up to 50 characters in length |
customField4 |
Optional | Any value up to 50 characters in length |
customField5 |
Optional | Any value up to 50 characters in length |
Response Data
The accountId of the new account Object | .
Note the given
Error Codes
Code | Message (en-US) | Notes |
1-60000 | Any "Common Error Code" may occur. | See Common Error Codes |
61002 | An account with the name '{0}' already exists. | |
61003 | Name is a required field. | |
61004 | Account must be specified with a Type of '{0}'. | |
61005 | Tag '{0}' is already associated with another account. | |
61006 | Recurring contribution type '{0}' is invalid. Valid values are: 'None', 'BiWeekly', and 'Monthly'. | |
61007 | Recurring contribution type '{0}' is invalid. Valid values are: 'None', 'BiWeekly', and 'Monthly'. | |
61008 | A recurring contribution amount must be at least {0:C}. | |
61009 | External account id '{0}' for the recurring contribution is invalid. | |
61010 | A monthly recurring contribution must be scheduled to start between the 1st and the 28th of the month. | |
61011 | A recurring contribution start date must occur before its end date. | |
61012 | A recurring contribution start date must be specified. | |
61013 | Maximum number of accounts for this customer has been reached. | One or more accounts must be closed before new accounts can be opened. |
61014 | Customer status is '{0}'. To create an account, customer status must be Verified or ManualReview. | |
61015 | Target amount can not exceed {0:C}. | |
61016 | A maximum of '{0}' open accounts are allowed. | |
61017 | Recurring contribution amount must be between {0:C} and {1:C}. | |
61018 | Only one account can be created while a customer is in ManualReview. | |
61019 | Account Number '{0}' must be numeric. | |
61020 | Account Number '{0}' is already in use. |
Example
Request
POST /account/create Authorization: Basic PutBase64TokenHere
{ "customerId": 1591244, "isCloseable": true, "name": "Primary Checking", "productId": 1589156, "recurringContributionType": "None", "type": "Checking" }
Response
201
{ "data": { "accessTypeCode": "FULL", "accountBalance": 0.0, "accountId": 1591247, "accountNumber": "102929", "accountNumberMasked": "*************2929", "availableBalance": 0.0, "balanceLastModifiedDate": "2019-03-12T09:25:15.139-05:00", "category": "", "createdDate": "2019-03-12T09:25:14.981-05:00", "customerId": 1591244, "customerPriority": 1, "customField1": "", "customField2": "", "customField3": "", "customField4": "", "customField5": "", "externalProgramTag": "", "interestApr": 0.00797081568, "interestApy": 0.00800000000, "isCloseable": true, "isJointAccount": false, "isPrimary": true, "isPrimaryCustomer": true, "lastModifiedDate": "2019-03-12T09:25:15.045-05:00", "legalName1": "", "legalName2": "", "name": "Primary Checking", "pendingBalance": 0.0, "primaryCustomerId": 1591244, "productId": 1589156, "recurringContributionType": "None", "regDWithdrawalCount": 0, "routingNumber": "123456789", "routingNumberMasked": "*****6789", "status": "Open", "subCategory": "", "tag": "", "targetAmount": 0.0, "targetMetPercent": 0.0, "tier": 1, "tierDescription": "Tier1, $0.00->$2,500.00", "tierMaximumAmount": 2500.0, "tierMinimumAmount": 0.0, "totalCustomers": 1, "type": "Checking" }, "errors": [], "requestId": "9f0e65e3-5426-4dc7-8ba8-30165c8178ab", "status": 200 }
editAccess
Edit the access type for a given customer with respect to a given account
Adding a customer to or removing a customer from an account is also performed via this route. To remove, pass NONE
as the accessTypeCode
.
POST /account/editaccess
Request Parameters
customerId |
Required | A customer ID already associated with the account that has an existing access type of FULL |
accountId |
Required | The accountId of the relevant account |
targetCustomerId |
Required | The customer ID whose access type is being edited |
accessTypeCode |
Required |
The type of access customerId has to accountId .
Possible values include:
|
customerPriority |
Optional | The priority of the customer on this account. If not specified, will be given the lowest priority. If a priority higher than the current maximum on the account is specified, the priority will be defaulted to a value equal to the maximum priority plus one. |
Response Data
The revised version of the accountAccess object. |
Error Codes
Code | Message (en-US) | Notes |
1-60000 | Any "Common Error Code" may occur. | See Common Error Codes |
108201 | CustomerId {0} must retain FULL access type until another customer is assigned as the Primary Customer for accountId {1}. | An account's primary customer must always have FULL access |
108202 | CustomerId {0} cannot elevate its own access type on accountId {1} to {2}. | Specify a customerId with FULL access to the account to elevate privileges for targetCustomerId . |
108204 | CustomerId {0} must have access type of FULL on accountId {1} to alter access for TargetCustomerId {2} to {3}. | Specify a customerId with FULL access to the account to alter the privileges for targetCustomerId . |
108205 | Invalid TargetCustomerId {0}. | |
108206 | TargetCustomerId {0} is in a status of {1} and account access can be altered only to NONE. | |
108207 | AccessTypeCode was left blank and is a required field. Valid code values are FULL, RDONLY, or NONE. | |
108208 | AccessTypeCode {0} is invalid. Valid code values are FULL, RDONLY, or NONE. | |
108209 | NewCustomerPriority {0} is invalid. Please enter an integer greater than 0. |
Example
Request
POST /account/editaccess Authorization: Basic PutBase64TokenHere
{ "accessTypeCode": "FULL", "accountId": 1587427, "customerId": 1587412, "targetCustomerId": 1587417, "customerPriority": 2 }
Response
200
{ "data": { "accessTypeCode": "FULL", "accountId": 1587427, "customerId": 1587412, "isPrimaryCustomer": false, "targetCustomerId": 1587417, "customerPriority": 2 }, "errors": [], "requestId": "a0a705ec-5a23-45d2-8d2f-4ad4f3425934", "status": 200 }
get
Retrieve a single account for the given customerId and accountId
Note: When you provide an invalid identifier (id,tag, or emailAddress), all routes ending with /get
returns 400 (Bad Request).
GET /account/get/{customerId}/{accountId}
Request Parameters
customerId |
Required | Customer ID (returned when customer was created) |
accountId |
Required | Account ID (returned when the account was created) |
Response Data
An account Object |
Error Codes
Code | Message (en-US) | Notes |
1-60000 | Any "Common Error Code" may occur. | See Common Error Codes |
66001 | Invalid account id '{0}'. |
Example
Request
GET /account/get/1591244/1591247 Authorization: Basic PutBase64TokenHere
Response
200
{ "data": { "accessTypeCode": "FULL", "accountBalance": 0.0, "accountId": 1591247, "accountNumber": "102929", "accountNumberMasked": "*************2929", "availableBalance": 0.0, "balanceLastModifiedDate": "2019-03-12T09:25:15.139-05:00", "category": "", "createdDate": "2019-03-12T09:25:14.981-05:00", "customerId": 1591244, "customerPriority": 1, "customField1": "", "customField2": "", "customField3": "", "customField4": "", "customField5": "", "externalProgramTag": "", "globalAccountAccessEnabled": false, "interestApr": 0.00797081568, "interestApy": 0.00800000000, "isCloseable": true, "isJointAccount": false, "isPrimary": true, "isPrimaryCustomer": true, "lastModifiedDate": "2019-03-12T09:25:15.045-05:00", "legalName1": "", "legalName2": "", "name": "Primary Checking", "pendingBalance": 0.0, "primaryCustomerId": 1591244, "productId": 1589156, "recurringContributionType": "None", "regDWithdrawalCount": 0, "routingNumber": "123456789", "routingNumberMasked": "*****6789", "status": "Open", "subCategory": "", "tag": "", "targetAmount": 0.0, "targetMetPercent": 0.0, "tier": 1, "tierDescription": "Tier1, $0.00->$2,500.00", "tierMaximumAmount": 2500.0, "tierMinimumAmount": 0.0, "totalCustomers": 1, "type": "Checking" }, "errors": [], "requestId": "065cf8c2-7b0e-42d4-ba88-bdd78611c849", "status": 200 }
getByTag
Retrieve a single account for the given customerId and tag
Note: When you provide an invalid identifier (id,tag, or emailAddress), all routes ending with /getByTag
returns 400 (Bad Request).
GET /account/getByTag/{customerId}/{tag}
Request Parameters
customerId |
Required | Customer ID (returned when customer was created) |
tag |
Required | A program-wide unique identifier supplied by the caller at account creation time. |
Response Data
An account Object |
Error Codes
Code | Message (en-US) | Notes |
1-60000 | Any "Common Error Code" may occur. | See Common Error Codes |
65801 | Tag must be specified. | |
66101 | Tag '{0}' does not exist or is not tied to customer {1}. |
Example
Request
GET /account/getByTag/231/tagabc Authorization: Basic PutBase64TokenHere
Response
200
{ "data": { "accountBalance": 0.0000, "accountId": 234, "accountNumber": "00000000000000097", "accountNumberMasked": "*************0097", "availableBalance": 0.0000, "category": "", "closedDate": "9999-12-31T23:59:59.999+00:00", "createdDate": "2014-02-24T16:49:25.465-06:00", "customerId": 231, "customField1": "ABCD", "globalAccountAccessEnabled": false, "isCloseable": false, "name": "Savings", "routingNumber": "8675309", "status": "Open", "subCategory": "", "tag": "tagabc", "type": "Prepaid" }, "errors": [], "status": 200 }
list
Retrieve all accounts for the given customerId. Accounts in a status of Closed
may disappear from this list after a period of time no shorter than 32 days.
GET /account/list/{customerId}
Request Parameters
customerId |
Required | Customer ID (returned when customer was created) |
Response Data
A list of account Objects |
Error Codes
Code | Message (en-US) | Notes |
1-60000 | Any "Common Error Code" may occur. | See Common Error Codes |
Example
Request
GET /account/list/231 Authorization: Basic PutBase64TokenHere
Response
200
{ "data": [ { "accountBalance": 0.0000, "accountId": 234, "accountNumber": "00000000003200097", "accountNumberMasked": "*************0097", "availableBalance": 0.0000, "category": "", "closedDate": "9999-12-31T23:59:59.999+00:00", "createdDate": "2014-02-24T16:49:25.465-06:00", "customerId": 231, "customField1": "ABCD", "globalAccountAccessEnabled": false, "isCloseable": false, "isPrimary" : true, "name": "Savings", "recurringContributionFromExternalAccountId": 0, "recurringContributionStartDate": "2014-02-01T00:00.000-06:00", "recurringContributionType": "None", "routingNumber": "8675309", "status": "Open", "subCategory": "", "tag": "tagabc", "type": "Prepaid" }, { "accountBalance": 0.0000, "accountId": 275, "accountNumberMasked": "*************0130", "availableBalance": 0.0000, "closedDate": "9999-12-31T23:59:59.999+00:00", "createdDate": "2014-02-25T16:19:22.472-06:00", "customerId": 231, "customField1": "ABCD", "globalAccountAccessEnabled": false, "isCloseable" : true, "isPrimary" : false, "name": "Brocko Testo2", "recurringContributionFromExternalAccountId": 0, "recurringContributionStartDate": "2014-02-01T00:00.000-06:00", "recurringContributionType": "None", "status": "Open", "tag": "test2", "targetAmount": 560.0000, "targetDate": "2017-12-31T00:00:00.000-06:00", "type": "Savings" } ], "errors": [], "status": 200 }
listAccess
Retrieve all customers associated with the given accountId
. Excludes any customers with an access type of NONE
.
GET /account/listaccess/{customerId}/{accountId}
Request Parameters
customerId |
Required | Customer ID (returned when customer was created) |
accountId |
Required | Account ID (returned when account was created) |
Response Data
A list of accountAccess Objects |
Error Codes
Code | Message (en-US) | Notes |
1-60000 | Any "Common Error Code" may occur. | See Common Error Codes |
108501 | CustomerId {0} has insufficient privileges ({1}) to list access types on accountId {2}. FULL access is required. | Given customerId needs read access to the given accountId to see privileges. |
108502 | AccountId is a required parameter. |
Example
Request
GET /account/listaccess/1587412/1587427 Authorization: Basic PutBase64TokenHere
Response
200
{ "data": [ { "accessTypeCode": "FULL", "accountId": 1587427, "accountName": "A-412", "accountNumber": "101010", "accountNumberMasked": "*************1010", "accountTag": "", "customerId": 1587412, "customerPriority": 1, "customerTag": "2016-06-29bw4", "emailAddress": "2016-06-25_b@no.com", "firstName": "John", "isPrimaryCustomer": true, "lastName": "Smith", "middleName": "", "primaryCustomerId": 1587412, "routingNumber": "111222333", "routingNumberMasked": "*****2333", "suffix": "" }, { "accessTypeCode": "FULL", "accountId": 1587427, "accountName": "A-412", "accountNumber": "101010", "accountNumberMasked": "*************1010", "accountTag": "", "customerId": 1587417, "customerPriority": 2, "customerTag": "2016-06-29bw5", "emailAddress": "2016-06-25_b@no.com", "firstName": "John", "isPrimaryCustomer": false, "lastName": "Smith", "middleName": "", "primaryCustomerId": 1587412, "routingNumber": "111222333", "routingNumberMasked": "*****2333", "suffix": "" } ], "errors": [], "requestId": "cbc24d85-220b-485c-bfb0-bfd13642fc65", "status": 200 }
update
Update account information
POST /account/update
Request Body Parameters
customerId |
Required | Customer ID (returned when customer was created) |
accountId |
Required | Account ID for the account (returned when account was created) |
name |
Required | The name to apply to this account. |
productId |
Optional |
The unique identifier of the product which this account is associated with. Configured products can be found on the For backwards compatibility this will default to the program's original product's productId associated with the supplied |
targetAmount |
Optional | The amount the customer wants this account to reach. |
targetDate |
Optional | The date by which the customer wants this account to reach the given targetAmount. |
targetMetDate |
N/A | This property can only be updated indirectly by depositing funds into the account by calling /transfer/create or submitting a Bulk Transfer Request File . |
targetMetPercent |
N/A | This property can only be updated indirectly by depositing funds into the account by calling /transfer/create or submitting a Bulk Transfer Request File . |
isCloseable |
N/A | This property cannot be updated. To close an account with isCloseable =false , it must be done via the Admin console. |
category |
Optional | Freeform text which can be used to categorize accounts, useful for analytics. |
subcategory |
Optional | Freeform text which can be used to further subcategorize accounts, useful for analytics. |
tag |
Optional | A program-wide unique identifier supplied by the caller to associate with the new account. |
recurringContributionType |
Optional | Accepted values are:
Applicable only if the program has opted into the recurring contribution feature set. |
recurringContributionAmount |
Required if recurringContributionType in the request or currently stored for that account is any value except None . |
Amount to deposit each recurring contribution period. Applicable only if the program has opted into the recurring contribution feature set. |
recurringContributionFromExternalAccountId |
Required if recurringContributionType in the request or currently stored for that account is any value except None . |
External account from which recurring contributions are withdrawn. Applicable only if the program has opted into the recurring contribution feature set. |
recurringContributionStartDate |
Required if recurringContributionType in the request or currently stored for that account is any value except None . |
Date to start the first recurring contribution period. Applicable only if the program has opted into the recurring contribution feature set. |
recurringContributionEndDate |
Required if recurringContributionType in the request or currently stored for that account is any value except None . |
Date to end the last recurring contribution period. Applicable only if the program has opted into the recurring contribution feature set. |
customField1 |
Optional | Any value up to 50 characters in length |
customField2 |
Optional | Any value up to 50 characters in length |
customField3 |
Optional | Any value up to 50 characters in length |
customField4 |
Optional | Any value up to 50 characters in length |
customField5 |
Optional | Any value up to 50 characters in length |
Response Data
An account Object |
Error Codes
Code | Message (en-US) | Notes |
1-60000 | Any "Common Error Code" may occur. | See Common Error Codes |
61101 | Invalid AccountId: {0} | |
61102 | An account with the name '{0}' already exists. | |
61103 | Recurring contribution type '{0}' is invalid. Valid values are:
|
|
61104 | Recurring contribution type '{0}' is invalid. Valid values are:
|
|
61105 | A recurring contribution amount must be at least {0:C}. | |
61106 | External account id '{0}' for the recurring contribution is invalid. | |
61107 | Tag '{0}' is already associated with another account. | |
61108 | A recurring contribution must be scheduled to start between the 1st and the 28th of the month. | |
61109 | A recurring contribution start date must occur before its end date. | |
61110 | Target date must be in the future. | |
61111 | Account '{0}' is closed and cannot be updated. | |
61112 | Account Number '{0}' must be numeric. | |
61113 | Account Number '{0}' is already in use. | |
61114 | Target amount can not exceed {0:C}. | |
61115 | Recurring contribution amount must be between {0:C} and {1:C}. | |
61116 | A recurring contribution start date must be specified. | |
61117 | Insufficient privileges to change account number. | |
61118 | Customer id '{0}' has insufficient privileges to edit account id '{1}'. | |
61119 | Customer id '{0}' has insufficient privileges to credit account id '{1}', and therefore cannot schedule recurring contributions for it. | |
61120 | Customer id '{0}' has insufficient privileges on account id '{1}' to reassign the primary customer id to '{2}'. |
Example
Request
POST /account/update Authorization: Basic PutBase64TokenHere
{ "accountId": 319809, "customerId": 241680, "name": "New Car Goal" }
Response
200
{ "data": { "accessTypeCode": "FULL", "accountBalance": 7.96, "accountId": 319809, "accountNumber": "268528", "accountNumberMasked": "*************8528", "availableBalance": 7.96, "balanceLastModifiedDate": "2018-01-31T16:36:15.405-06:00", "category": "", "createdDate": "2017-09-14T13:52:07.029-05:00", "customerId": 241680, "customerPriority": 240, "customField1": "", "customField2": "", "customField3": "", "customField4": "", "customField5": "", "externalProgramTag": "", "globalAccountAccessEnabled": false, "interestApr": 0.00846420000, "interestApy": 0.00850000000, "isCloseable": true, "isJointAccount": true, "isPrimary": false, "isPrimaryCustomer": false, "lastModifiedDate": "2019-06-17T11:06:05.226-05:00", "legalName1": "", "legalName2": "", "name": "New Car Goal", "pendingBalance": 0.0, "primaryCustomerId": 324151, "productId": 348780, "recurringContributionType": "None", "regDWithdrawalCount": 0, "routingNumber": "073923033", "routingNumberMasked": "*****3033", "status": "Open", "subCategory": "", "tag": "", "targetAmount": 7853.0, "targetDate": "2019-12-31T00:00:00.000-06:00", "targetMetPercent": 0.0, "tier": 1, "tierDescription": "Savings interest rate", "tierMaximumAmount": 999999999.99, "tierMinimumAmount": -999999999.99, "totalCustomers": 238, "type": "Savings" }, "errors": [], "requestId": "1f19549d-54ed-4e81-9e21-c6af78f60e55", "status": 200 }
lock
Temporarily locks an account. Will apply a lockTypeCode
of CST
or SYS
on success. Will remain in effect until it is reversed by calling /account/unlock
.
POST /account/lock
Request Body Parameters
customerId |
Required | Customer ID (the customerId associated with the account) |
accountId |
Required | Account ID (returned when account was originally created) |
lockTypeCode |
Required |
Possible values include:
|
lockReasonTypeCode |
Required |
Possible values include:
|
Response Data
A account object |
The account will have a lockTypeCode and lockReasonTypeCode upon successful completion of this call. The account is locked and funds transfer cannot take place. |
Error Codes
Code | Message (en-US) | Notes |
1-60000 | Any "Common Error Code" may occur. | See Common Error Codes |
61201 | Must specify a valid lockReasonTypeCode. Valid values include UNK, FRD, ADM, TMP, FRZ. | |
61202 | Customer id {0} has insufficient privileges to lock account id {1}. | |
61203 | Invalid Account Lock Type Code {0}. Valid values include CST and SYS. | |
61204 | Invalid Account Lock Reason Type Code {0}. Values include UNK, FRD, ADM, TMP, FRZ. | |
61205 | AccountId {0} is in a status of {1} and cannot be locked. | |
61206 | AccountId {0} has been locked by the System and cannot be unlocked by a customer. | |
61207 | Account Lock feature is disabled for program {0}. Cannot lock. | |
61208 | AccountId {0} has been marked as suspected fraudulent and cannot be changed by a customer. |
Example
Request
POST /account/lock Authorization: Basic PutBase64TokenHereaccount
{ "accountId":319809, "customerId":324151, "lockTypeCode": "CST", "lockReasonTypeCode": "TMP" }
Response
200
{ "data": { "accessTypeCode": "FULL", "accountBalance": 0.0, "accountId": 319809, "accountNumber": "1101111", "accountNumberMasked": "*************1111", "availableBalance": 0.0, "balanceLastModifiedDate": "2019-12-12T10:44:20.184-06:00", "category": "", "createdDate": "2019-12-12T10:44:20.094-06:00", "customerId": 324151, "customerPriority": 1, "customField1": "", "customField2": "", "customField3": "", "customField4": "", "customField5": "", "externalProgramTag": "", "interestApr": 0.00000000000, "interestApy": 0.00000000000, "isCloseable": true, "isJointAccount": false, "isLocked": true, "isPrimary": true, "isPrimaryCustomer": true, "lastModifiedDate": "2019-12-12T10:44:20.154-06:00", "legalName1": "", "legalName2": "", "lockReasonTypeCode": "TMP", "lockTypeCode": "CST", "name": "My Savings Account", "pendingBalance": 0.0, "primaryCustomerId": 324151, "productId": 14, "recurringContributionType": "None", "regDWithdrawalCount": 0, "routingNumber": "01111111", "routingNumberMasked": "01111111", "sourceLinks": [], "status": "Open", "subCategory": "", "tag": "", "targetAmount": 0.0, "targetLinks": [], "targetMetPercent": 0.0, "tier": 1, "tierDescription": "Tier 1", "tierMaximumAmount": 9999999999.99, "tierMinimumAmount": 0.0, "totalCustomers": 1, "type": "Savings" }, "errors": [], "requestId": "cded7067-f377-46ca-ba89-3f21c079d189", "status": 200 }
unlock
Unlocks an account. Can be reversed by calling /account/lock
.
The following matrix details when this call will succeed or fail.
Current LockTypeCode |
Current LockReasonTypeCode |
Result |
---|---|---|
CST |
UNK - Unknown |
Unlocked Successfully |
CST |
TMP - Temporary |
Unlocked Successfully |
CST |
FRZ - Freeze |
Unlocked Successfully |
CST |
ADM - Administrative |
Unlocked Successfully |
CST |
FRD - Suspected Fraud |
Unlock Fails - Suspected Fraud lock can not be unlocked by CST |
SYS |
TMP FRD FRZ ADM |
Unlock Fails - SYS Lock Type cannot be unlocked by CST |
CST = Customer Applied SYS = System Applied
|
POST /account/unlock
Request Body Parameters
customerId |
Required | Customer ID (the customerId or CustomerId associated with the account) |
accountId |
Required | Account ID (returned when account was originally created) |
Response Data
An account object |
The account will have a lockTypeCode of UNL upon successful completion of this call. The account is unlocked and ready for transfers to take place. |
Error Codes
Code | Message (en-US) | Notes |
1-60000 | Any "Common Error Code" may occur. | See Common Error Codes |
61301 | Invalid AccountId {0} or CustomerId {1}. | |
61302 | AccountId {0} has been locked by an Administrator or an automated process. Cannot unlock. | |
61303 | AccountId {0} has been marked as suspected fraudulent. Cannot unlock. | |
61304 | Account Unlock feature is disabled for program {0}. Cannot unlock. |
Example
Request
POST /account/unlock Authorization: Basic PutBase64TokenHere
{ "accountId":319809, "customerId":324151 }
Response
200
{ "data": { "accessTypeCode": "FULL", "accountBalance": 0.0, "accountId": 319809, "accountNumber": "1101111", "accountNumberMasked": "*************1111", "availableBalance": 0.0, "balanceLastModifiedDate": "2019-12-12T10:44:20.184-06:00", "category": "", "createdDate": "2019-12-12T10:44:20.094-06:00", "customerId": 324151, "customerPriority": 1, "customField1": "", "customField2": "", "customField3": "", "customField4": "", "customField5": "", "externalProgramTag": "", "interestApr": 0.00000000000, "interestApy": 0.00000000000, "isCloseable": true, "isJointAccount": false, "isLocked": false, "isPrimary": true, "isPrimaryCustomer": true, "lastModifiedDate": "2019-12-12T10:44:20.154-06:00", "legalName1": "", "legalName2": "", "lockReasonTypeCode": "UNK", "lockTypeCode": "UNL", "name": "My Savings Account", "pendingBalance": 0.0, "primaryCustomerId": 324151, "productId": 14, "recurringContributionType": "None", "regDWithdrawalCount": 0, "routingNumber": "01111111", "routingNumberMasked": "01111111", "sourceLinks": [], "status": "Open", "subCategory": "", "tag": "", "targetAmount": 0.0, "targetLinks": [], "targetMetPercent": 0.0, "tier": 1, "tierDescription": "Tier 1", "tierMaximumAmount": 9999999999.99, "tierMinimumAmount": 0.0, "totalCustomers": 1, "type": "Savings" }, "errors": [], "requestId": "cded7067-f377-46ca-ba89-3f21c079d189", "status": 200 }