API Documentation

Common Error Codes

The following are errors that can happen on any request to CorePro, depending on the request parameters, origin, intermediate network, etc. If present, these values will appear in the "errors" property of the envelope:

details

Code Message (en-US) HTTP Status Code Notes
50401 User is not authorized 401 Check your configuration for proper CorePro API Key and Secret values against those in CorePro Admin console. Existing ones may have expired.
50403 IP is not trusted 403 Check the IP of the request. If it is a valid IP, contact CorePro support to whitelist it.
50404 The requested resource was not found. 404 The route is invalid or is not supported in the version associated with your API Key.
50405 The requested HTTP method is not allowed. 405 The route accepts a different HTTP method - did you issue a POST when you should have issued a GET for a particular route?
50429 Rate limit exceeded 429 Too many requests within a certain timeslice for your API Key. Wait a small amount of time and retry the request. If this happens regularly, contact CorePro support to increase your rate limit (additional fee may be applied)
50500 Internal Server Error 500 CorePro is experiencing issues. Please share your requestId with CorePro support.
50501 Not Implemented 501 The route is invalid. Verify your code is calling a documented CorePro route.
50502 Bad Gateway 502 Network connectivity issues between your server and CorePro servers, or CorePro is down for maintenance. Investigate, and if issues persist, contact CorePro support.
50503 Service Unavailable 503 CorePro servers are unavailable. You will need to try your request later.
50504 Gateway Timeout 504 Network connectivity issues between your server and CorePro servers, or CorePro is down for maintenance. Investigate, and if issues persist, contact CorePro support.
50505 HTTP Version Not Supported 505 HTTP/1.1 must be specified when using CorePro. Change your code to issue HTTP/1.1 requests.
52998 Internal Server Error. Incident Id : {0} 500 This is the catch-all error number for an internal server error. Please contact support@corepro.io with the Incidient Id provided in the message.
58150 QualiFile service call error received. 500 The content of this error message may be replaced by the actual one received from the QualiFile service call.
59001 No VerificationFundsAccount configured for program {0} 400 Your program is configured incorrectly. Contact support@corepro.io
59002 No RetailClearingAccount configured for program {0} 400 Your program is configured incorrectly. Contact support@corepro.io
59003 No ProgramExternalAccount configured for program {0} 400 Your program is configured incorrectly. Contact support@corepro.io
59004 No BankIncomeAccount configured for program {0} 400 Your program is configured incorrectly. Contact support@corepro.io
59005 No RegDFeeAmtForExceedingMonthlyMax configured for program {0} 400 Your program is configured incorrectly. Contact support@corepro.io
59006 No RegDMonthlyTransWithdrawCountMax configured for program {0} 400 Your program is configured incorrectly. Contact support@corepro.io
59007 Internal to Internal transfer is disabled for program {0} 400 Your program is configured incorrectly. Contact support@corepro.io
59008 AllowedAccountTypeId is not configured properly for program {0} 400 Your program is configured incorrectly. Contact support@corepro.io
59009 Program {0} does not have recurring contributions enabled. 400 You are unable to do recurring contributions because it is disabled for your program.
59010 Program {0} is not configured to require external account verification. Call /externalAccount/create instead. 400 Call /externalAccount/create instead.
59011 Program {0} is configured to require external account verification. Call /externalAccount/initiate instead. 400 Call /externalAccount/initiate instead.
59012 Program {0} is missing a ProgramReport record for the given date range and program. 400 Your program is configured incorrectly. Contact support@corepro.io
59013 No ProgramClearingAccount configured for program {0} 400 Your program is configured incorrectly. Contact support@corepro.io
59014 No MiscellaneousAccount configured for program {0} 400 Your program is configured incorrectly. Contact support@corepro.io
59015 No GeneralJournalAccount configured for program {0} 400 Your program is configured incorrectly. Contact support@corepro.io
59016 No CashAccount configured for program {0} 400 Your program is configured incorrectly. Contact support@corepro.io
59017 No RetailExternalAccount configured for program {0} 400 Your program is configured incorrectly. Contact support@corepro.io
59018 No ProgramEcode.PercentToClient configured for program {0} 400 Your program is configured incorrectly. Contact support@corepro.io
59019 No ProgramEcode.PercentToCorePro configured for program {0} 400 Your program is configured incorrectly. Contact support@corepro.io
59020 Program {0} does not have account type {1} enabled. 400 Your program is configured incorrectly. Contact support@corepro.io
59102 No ProgramClearingAccount linked to ProgramExternalAccount {0} 400 Your program is configured incorrectly. Contact support@corepro.io
59103 All card numbers are already allocated for Program {0}. 400 Your program is configured incorrectly. Contact support@corepro.io
59900 Could not convert {0} to {1}: {2}. Path '{3}', line {4}, position {5}. 400 Invalid value passed in for a JSON property. The value could not be converted to the proper type. {0} = JSON type, {1} = destination type, {2} = value, {3} = property name, {4} = line number, {5} = character position. e.g.: "Could not convert string to decimal: 11..04. Path 'recurringContributionAmount', line 9, position 42."
59901 Invalid JavaScript property identifier character: {0}. Path '{1}', line {2}, position {3}. 400 Property name is missing opening quote character ('"'). {0} = property name, {1} = line number, {2} = character position. e.g.: "Invalid JavaScript property identifier character: ". Path 'targetDate', line 13, position 7."
59902 Expected ':' but got: {0}. Path '{1}', line {2}, position {3}. 400 Property name is missing closing quote character ('"'). {0} = first character of property name, {1} = property name, {2} = line number, {3} = character position. e.g.: "Expected ':' but got: S. Path 'targetDate', line 13, position 11."
59903 Invalid character after parsing property name. Expected ':' but got: =. Path '{0}', line {1}, position {2}. 400 Attempting to use "=" instead of ":" to separate property name and its value. {0} = property name (typically the name of the previous property, not the one with the issue), {1} = line number, {2} = character position. e.g.: "Invalid character after parsing property name. Expected ':' but got: =. Path 'tag', line 11, position 18."
59904 Error reading {0}. Unexpected token: StartArray. Path '{1}', line {2}, position {3}. 400 Passed an array value to a property which is not an array. {0} = destination type, {1} = property name, {2} = line number, {3} = character position. e.g.: "Error reading string. Unexpected token: StartArray. Path 'tag', line 10, position 11."
59905 Error parsing NaN value. Path '{0}', line {1}, position {2}. 400 Attempting to pass null for a property value, but using an invalid casing (such as NULL or Null). {0} = property name, {1} = line number, {2} = character position. e.g.: "Error parsing NaN value. Path 'tag', line 10, position 10."
59906 After parsing a value an unexpected character was encountered: ;. Path '{0}', line {1}, position {2}. 400 Attempting to use a semicolon (;) where a comma (,) should be used. {0} = property name, {1} = line number, {2} = character position. e.g.: "After parsing a value an unexpected character was encountered: ;. Path 'customerId', line 2, position 22."
59949 (Message varies) 400 A generic JSON parsing error occurred. See message for details. i.e. The JSON payload is not structured properly in some way.
59950 Unexpected end when deserializing object. Path '{0}', line {1}, position {2}. 400 Closing curly brace ("}") is missing in JSON payload. {0} = property name, {1} = line number, {2} = character position. e.g.: "Unexpected end when deserializing object. Path 'type', line 15, position 1."
59951 Error converting value "{0}" to type '{1}'. Path '', line {2}, position {3}. 400 Opening curly brace ("}") is missing in JSON payload. {0} = first property name in payload, {1} = (varies, ignore), {2} = line number, {3} = character position. e.g.: "Error converting value \"customerId\" to type 'CorePro.Business.Account'. Path '', line 2, position 15."
59952 Value for property '{0}' is not formatted as a valid ISO-8601 DateTime. Example value=2015-01-31T22:43:21.123+00:00 400 The value for the property is not formatted as an ISO-8601 date. e.g.: "Value for property 'targetDate' is not formatted as a valid ISO-8601 DateTime. Example value=2015-01-31T22:43:21.123+00:00"
59953 Value for property '{0}' is not formatted as a valid boolean. Valid values=true,false 400 The value for the property is not formatted as a boolean value. e.g.: "Value for property 'isCloseable' is not formatted as a valid boolean. Valid values=true,false"
59954 Value for property '{0}' is not formatted as a valid decimal (precision up to 2). Example value=1234.56 400 The value for the property is not formatted as a decimal value. e.g.: "Value for property 'targetAmount' is not formatted as a valid decimal (precision up to 2). Example value=1234.56"
59955 Value for property '{0}' is not formatted as a valid decimal (precision up to 11). Example value=1234.56789012345 400 The value for the property is not formatted as a decimal value. e.g.: "Value for property 'interestRateMonthly' is not formatted as a valid decimal (precision up to 2). Example value=1234.56789012345"
59956 Value for property '{0}' is not acceptable. Specifics: {1} 400 The value for the property could not be cast properly. e.g.: "Value for property 'customerId' is not acceptable. Specifics: Input string '12548a' is not a valid integer. Path 'customerId', line 2, position 23."
59957 Missing a closing curly brace. Specifics: {0} 400 JSON payload is missing a closing curly brace. e.g.: "Missing a closing curly brace. Unexpected end when deserializing object. Path 'type', line 12, position 1."
59958 Missing an opening curly brace. Specifics: {0} 400 JSON payload is missing an opening closing curly brace. e.g.: "Missing an opening curly brace. Specifics: Error converting value "customerId" to type 'CorePro.Business.Account'. Path '', line 2, position 15."
59999 (Message varies) 400 A generic JSON deserialization error occurred. See message for details. i.e. The JSON payload is not structured properly in some way.
60001 Customer id {0} is invalid. 400 Provide a valid customerId in the request
60002 Customer id {0} is inactive. 400 An inactive customer cannot perform any actions in CorePro. Redirect the user to a page informing them of this.
60003 Customer id {0} is not in a verified status. 400 An unverified customer cannot perform any actions in CorePro (except call /customer/verify). Redirect the user to a page informing them of this.
60004 Customer id {0} is locked. 400 An locked customer cannot perform any actions in CorePro. Redirect the user to a page informing them of this.
60005 Customer id {0} is marked as deceased. 400 An deceased customer cannot perform any actions in CorePro. Redirect the user to a page informing them of this.

External Account

CorePro allows customers to transfer funds to/from their existing checking and savings accounts at any financial institution within the US and its territories. These are referred to as "externalAccount" objects in CorePro vernacular.

Only one external account is allowed.

  • If the existing external account is archived, a new external account still cannot be created via the CorePro API. To add a new external account after archiving an existing one, it must be reviewed by a CSR and created via the CorePro Admin console. This is a fraud prevention mechanism.

A program can be configured to automatically create all external accounts in a Verified status. This is typically used when the client is in control of the external account itself -- e.g. prepaid card.

Otherwise a program can be configured to require customers to verify ownership of the external bank accounts prior to use via the following process:

If Verification Type is None or Any:

  1. /externalAccount/create is called - status of account is Verified. No further action is needed.

If Verification Type is TrialDeposits or Any:

  1. /externalAccount/initiate is called - status of account is Unverified (i.e. pending verification)
  2. CorePro initiates two small deposits and a single offsetting withdrawal on the external account. Amounts are random, but will fall between $0.01 and $0.49 inclusive.

    In the Sandbox environment, one amount is hardcoded to 0.18 and the other is 0.28. Since no ACH files are actually being sent to an external bank in the Sandbox environment, no funds are actually transferred.

  3. At a later date, the customer logs onto your site and enters the amounts that were placed on the external account
  4. /externalAccount/verify is called with the amounts
  5. If the amounts are valid then the status of the account is set to Verified
    • If verification attempts fail 3 or more times, status of the account is set to VerifyLocked
    • If verification time limit has been exceeded, status of the account is set to Expired
    • If manual intervention by a CSR happens prior to verification, status of account may be set to Denied

externalAccount Object

Represents a single externalAccount in CorePro.

details

Property Data Type
(length)
Description
externalAccountId integer The unique identifier for an externalAccount in CorePro. Will be returned on the /externalAccount/create or /externalAccount/initiate call.
customerId integer Customer who owns the external bank account
tag string (50) A caller-specified, immutable, unique identifier for this externalAccount. Must be unique within a given Program. Maximum length is 50 characters.
name string (50) Bank Name according to FDIC.
If your program has ACH via NACHA enabled, the routingNumber will be used to retrieve the actual NACHA bank name (via the Federal Reserve data file). If your program does not have ACH via NACHA enabled, whatever value you provide here will be stored verbatim.
routingNumber string (50) Routing Transit Number (RTN) is a nine-digit bank code used to identify a financial institution.
routingNumberMasked string (10) Last 4 digits of the routingNumber property value, preceded by 6 '*'. e.g.: ******1234
accountNumber string (15) The account number of this account at the external bank.
accountNumberMasked string (10) Last 4 digits of the accountNumber property value, preceded by 6 '*'. e.g.: ******1234
type string (50) Possible values include:
  • Prepaid
  • Savings
  • Checking
nickName string (50) A user-friendly name that can be displayed in place of the name property (which, if your program has ACH via NACHA enabled, will be automatically assigned the bank name returned by the Federal Reserve data file for the given routingNumber).
status string Possible values include:
  • Unverified
  • VerifyLocked
  • Verified
  • Denied
  • Expired
  • Archived
statusDate datetime The date the status last changed
lastModifiedDate datetime

Date when the object was last altered in any way

nocCode string (10) Notification of Change code.
isActive boolean

Deprecated. Replaced by status = Archived

isLocked boolean Denotes if this externalAccount is locked, typically caused by fraud prevention mechanisms or manual intervention via the Admin console. Note other flags such as Status=Verified must also be set before a customer can perform any functions.
lockedDate datetime Denotes the last time isLocked was set to true. Example format: 2014-01-01T00:00:00.000+00:00
lockedReason string (255) The reason isLocked was set to true. Freeform.
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.

archive

Archives an external account, meaning it can not be used in future transfers. An external account cannot be archived while it has pending transactions.

Note: This is a one-way function; once an external account is archived, it cannot be "unarchived".

POST /externalAccount/archive

Request Body Parameters

customerId Required Customer ID (returned when customer originally created)
externalAccountId Required External Account ID (returned when external account was originally created)

Response Data

externalAccountId ExternalAccount ID of the external account. This external account will no longer be returned via /externalAccount/list, /externalAccount/get, or /externalAccount/getbytag.

Error Codes

Code Message (en-US) Notes
1-60000 Any "Common Error Code" may occur. See Common Error Codes
62501 Invalid external account id '{0}'.
62502 Unable to deactivate an external account that is not in a Verified status.
62503 Unable to deactivate an external account for a customer who has a pending transaction or any account with a non-zero balance.
62505 Unable to archive as there are outstanding transactions.
62506 Unable to archive an external account whose status is {0}.

Example

Request
POST /externalAccount/archive
Authorization: Basic PutBase64TokenHere
{
    "externalAccountId": 12,
    "customerId": 456
}
Response
200
{
    "status":200,
    "errors": []
}

create

Creates a new external account. Functions properly only if your Program is configured with External Account Verification Type set to None or Any.

POST /externalAccount/create

Request Body Parameters

customerId Required Customer ID (returned when customer originally created)
routingNumber Required unless type is Prepaid The routing number of the external account. If you have NACHA enabled, the name property (i.e. bank name for this routing number) will be automatically assigned the value return by the Federal Reserve data file.

NOTE for Sandbox Environment: If you have NACHA enabled, a "magic value" of 123456789 for the routingNumber property may be used for testing purposes. This will set the name to COREPRO SANDBOX BANK.

accountNumber Required unless type is Prepaid The account number of the external account
firstName Required unless type is Prepaid OR lastName has been specified The first name of the person associated with the external account
lastName Required unless type is Prepaid OR firstName has been specified The last name of the person associated with the external account
type Required Accepted values are:
  • Prepaid
  • Checking*
  • Savings*

* - Your program must be configured to allow these values. Only programs that vet the external account via an approved mechanism outside of CorePro will be allowed to do this. If your program is not, you must follow the "External Account Verification is enabled" flow outlined above.

If in doubt of the proper value to pass for the type parameter for your particular situation, please consult the Social Money team.

name Optional If your program has ACH via NACHA enabled, the routingNumber provided will be used to retrieve the actual NACHA bank name (via the Federal Reserve data file). If your program does not have ACH via NACHA enabled, whatever value you provide here will be stored verbatim.

NOTE for Sandbox Environment: If you have NACHA enabled, a "magic value" of 123456789 for the routingNumber property may be used for testing purposes. This will set the name to COREPRO SANDBOX BANK.

nickName Optional If not supplied, will assume the same value as the name parameter.
tag Optional A program-wide unique identifier defined by the caller that is associated with this external account.
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

NOTE: There is a limit to the number of external accounts that may be created for a given customer. This limit is defined by the perUserExternalAccountCountMax property returned from /program/get. If the limit has been reached, another external account cannot be added via the CorePro API. There must be human intervention to validate the new external account, and it must be created via the CorePro Admin site. This is a fraud prevention mechanism.

The total number of external accounts for a customer is calculated as follows:

  • All with a status of Unverified, VerifyLocked, or Verified
  • All with a status of Archived AND tied to at least one transaction that has settled in the past 90 calendar days

Response Data

externalAccountId ExternalAccount ID of the new external account. This external account will be in a Verified status upon success of this call.

Error Codes

Code Message (en-US) Notes
1-60000 Any "Common Error Code" may occur. See Common Error Codes
62001 At most {0} external account(s) may be added.
62002 Invalid Type: '{0}'. Valid values are 'Prepaid', 'Checking', or 'Savings'.
62003 Tag {0} is already associated with another external account.
62004 External account archival limit reached for today.
62005 Either FirstName or LastName must be provided, preferrably both.
62006 Routing number is a required field.
62007 Account number is a required field.
69203 Routing number is a required field.

Example

Request
POST /externalAccount/create
Authorization: Basic PutBase64TokenHere
{
    "customerId":"456",
    "routingNumber":123456789,
    "accountNumber":343434,
    "type":"Checking",
    "nickname":"Sample Bank Checking"
}
Response
201
{
    "data":
    {
        "externalAccountId":"12"
    },
    "status":201,
    "errors":[]
}

deactivate

Deactivates an external account

Deprecated. Please use /externalAccount/archive instead.

get

Retrieve externalAccount information by the given customerId and externalAccountId

GET /externalAccount/get/{customerId}/{externalAccountId}

Request Parameters

customerId Required Customer ID (returned when customer originally created)
externalAccountId Required External Account ID (returned when external account was originally created)

Response Data

An externalAccount Object

Error Codes

Code Message (en-US) Notes
1-60000 Any "Common Error Code" may occur. See Common Error Codes
66201 Invalid external account id '{0}'.

Example

Request
GET /externalAccount/get/231/253
Authorization: Basic PutBase64TokenHere
Response
200
{
  "data": {
      "accountNumberMasked": "******9873",
      "customerId": 231,
      "customField1": "98723ASDF",
      "externalAccountId": 253,
      "firstName": "Brock",
      "isActive": true,
      "isLocked": false,
      "lastName": "Weaver",
      "lockedDate": "9999-12-31T23:59:59.999+00:00",
      "name": "PrepaidAbc",
      "nickName": "pp1",
      "routingNumberMasked": "******1234",
      "status": "Unverified",
      "statusDate": "2014-02-25T15:21:16.152-06:00",
      "tag": "tag12345",
      "type": "Savings"
  },
  "errors": [],
  "status": 200
}

getByTag

Retrieve externalAccount information by the given customerId and tag

GET /externalAccount/getByTag/{customerId}/{tag}

Request Parameters

customerId Required Customer ID (returned when customer originally created)
tag Optional A program-wide unique identifier defined by the caller that is associated with this external account.

Response Data

An externalAccount Object

Error Codes

Code Message (en-US) Notes
1-60000 Any "Common Error Code" may occur. See Common Error Codes
66301 Tag '{0}' does not exist or is not tied to customer {1}.

Example

Request
GET /externalAccount/getByTag/231/tag12345
Authorization: Basic PutBase64TokenHere
Response
200
{
  "data": {
      "accountNumberMasked": "******9873",
      "customerId": 231,
      "customField1": "98723ASDF",
      "externalAccountId": 253,
      "firstName": "Brock",
      "isActive": true,
      "isLocked": false,
      "lastName": "Weaver",
      "lockedDate": "9999-12-31T23:59:59.999+00:00",
      "name": "PrepaidAbc",
      "nickName": "pp1",
      "routingNumberMasked": "******1234",
      "status": "Unverified",
      "statusDate": "2014-02-25T15:21:16.152-06:00",
      "tag": "tag12345",
      "type": "Savings"
  },
  "errors": [],
  "status": 200
}

initiate

Initiates a new external account. Functions properly only if your Program is configured with External Account Verification Type set to TrialDeposits or Any.

In the sandbox environment, if you have NACHA enabled, a "magic value" of 123456789 for the routingNumber property may be used for testing purposes. This will set the name to COREPRO SANDBOX BANK.

POST /externalAccount/initiate

Request Body Parameters

customerId Required Customer ID (returned when customer originally created)
routingNumber Required The routing number of the external account. If your program has ACH via NACHA enabled, the name property (i.e. the NACHA bank name for this routing number) will be automatically assigned the value return by the Federal Reserve data file.

NOTE for Sandbox Environment: If you have NACHA enabled, a "magic value" of 123456789 for the routingNumber property may be used for testing purposes. This will set the name to COREPRO SANDBOX BANK.

accountNumber Required The account number of the external account
firstName Required The first name of the person associated with the external account
lastName Required The last name of the person associated with the external account
type Required Accepted values are:
  • Checking
  • Savings
name Optional If your program has ACH via NACHA enabled, the routingNumber provided will be used to retrieve the actual NACHA bank name (via the Federal Reserve data file). If your program does not have ACH via NACHA enabled, whatever value you provide here will be stored verbatim.

NOTE for Sandbox Environment: If you have NACHA enabled, a "magic value" of 123456789 for the routingNumber property may be used for testing purposes. This will set the name to COREPRO SANDBOX BANK.

nickName Optional If not supplied, will assume the same value as the name parameter.
tag Optional A program-wide unique identifier defined by the caller that is associated with this external account.
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

NOTE: Only one external account may be created. If it is then deactivated, another external account still cannot be added via the CorePro API. There must be human intervention to validate the customer again and the second external account must be created via the CorePro Admin site. This is a fraud prevention mechanism.

NOTE FOR SANDBOX ONLY: To enable easier testing, all trial deposit amounts in the Sandbox environment will be 0.18 and 0.28, and /externalAccount/verify can be called immediately. However, in production, a request to /externalAccount/verify must be sent at a later date to allow time for the ACH process to happen at the external bank.

Response Data

externalAccountId ExternalAccount ID of the new external account. Upon success, two trial deposits will have been made to the external account. Those deposits are performed via ACH, so the customer will be unable to verify them immediately. You will need to allow the customer to visit at a later date and supply the verification amounts, then call /externalAccount/verify. This external account will be in a Unverified status upon success of this call.

Error Codes

Code Message (en-US) Notes
1-60000 Any "Common Error Code" may occur. See Common Error Codes
62601 Invalid Type: '{0}'. Valid values are 'Checking' or 'Savings'.
62602 An external bank account with nickname '{0}' already exists.
62603 Name is a required field.
62604 FirstName is a required field.
62605 LastName is a required field.
62606 Routing number is a required field.
62607 Account number is a required field.
62608 Tag {0} is already associated with another external account.
62609 At most {0} external account(s) may be added.
62610 Routing Number '{0}' is invalid.
62611 External account archival limit reached for today.
69203 Routing number is a required field.
69205 Routing number lookup failed. {0}
69206 Routing number {0} must be numeric.

Example

Request
POST /externalAccount/initiate
Authorization: Basic PutBase64TokenHere
{
    "customerId":"456",
    "routingNumber":123456789,
    "accountNumber":343434,
    "type":"Checking",
    "nickname":"Sample Bank Checking"
}
Response
201
{
    "data":
    {
        "externalAccountId":"12"
    },
    "status":200,
    "errors":[]
}

list

List all external accounts for a given customer

GET /externalAccount/list/{customerId}

Request Parameters

customerId Required Customer ID (returned when customer was created)

Response Data

A list of externalAccount Objects

Error Codes

Code Message (en-US) Notes
1-60000 Any "Common Error Code" may occur. See Common Error Codes

Example

Request
GET /externalAccount/list/231
Authorization: Basic PutBase64TokenHere
Response
200
{
  "data": [
    {
      "accountNumberMasked": "******9873",
      "customerId": 231,
      "customField1": "234ASDF",
      "externalAccountId": 253,
      "firstName": "Brock",
      "isActive": true,
      "isLocked": false,
      "lastName": "Weaver",
      "lockedDate": "9999-12-31T23:59:59.999+00:00",
      "name": "PrepaidAbc",
      "nickName": "pp1",
      "routingNumberMasked": "******1234",
      "status": "Unverified",
      "statusDate": "2014-02-25T15:21:16.152-06:00",
      "tag": "tag12345",
      "type": "Savings"
    }
  ],
  "errors": [],
  "status": 200
}

update

Update externalAccount information

POST /externalAccount/update

Request Body Parameters

customerId Required Customer ID (returned when customer originally created)
externalAccountId Required External Account ID (returned when external account was originally created)
nickname Optional New nickname for the external account.
tag Optional New tag for the external account.
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

NOTE: No other values may be updated on an external account.

Response Data

externalAccountId ExternalAccount ID of the external account.

Error Codes

Code Message (en-US) Notes
1-60000 Any "Common Error Code" may occur. See Common Error Codes
62401 Another external account already exists with the nickname of '{0}'.
62402 Invalid external account id '{0}'.
62403 Tag '{0}' is already associated with another external account.

Example

Request
POST /externalAccount/update
Authorization: Basic PutBase64TokenHere
{
    "externalAccountId":"12",
    "customerId":"456",
    "nickName":"Big Bank Checking"
}
Response
200
{
    "data":
    {
        "externalAccountId":"12"
    },
    "status":200,
    "errors": []
}

verify

Verify an external account

POST /externalAccount/verify

Request Body Parameters

customerId Required Customer ID (returned when customer originally created)
externalAccountId Required External Account ID (returned when external account was originally created)
amount1 Required Value of one of the trial deposit amounts automatically performed at external account create time
amount2 Required Value of the other trial deposit amount automatically performed at external account create time

Response Data

externalAccountId ExternalAccount ID of the external account. The external account will be in a status of Verified upon successful completion of this call. Transfers may then be made using this external account.

Error Codes

Code Message (en-US) Notes
1-60000 Any "Common Error Code" may occur. See Common Error Codes
62201 Invalid ExternalAccountId '{0}'.
62202 External account is in a Locked status. Unable to verify.
62203 External account is in a Denied status. Unable to verify.
62204 External account has already been verified.
62205 Verification period expired on '{0}'.
62206 Maximum number of failed attempts exceeded. Verification has been locked.
62207 Given amounts do not match what is on record. {0} attempt(s) remaining.
62301 Another external account already exists with the nickname of '{0}'.
62302 Invalid external account id '{0}'.

Example

Request
POST /externalAccount/verify
Authorization: Basic PutBase64TokenHere
{
    "externalAccountId":12,
    "customerId":456,
    "amount1":0.24,
    "amount2":0.14
}
Response
200
{
    "data":
    {
        "externalAccountId":"12"
    },
    "status":200,
    "errors":[]
}

Ready to start a conversation?

Email Us