ACH Transfers
All requests require clientID and developerAPIKey parameters for authentication.
Base URL: https://api-sandboxdash.norcapsecurities.com
Endpoints
POST /v3/createExternalAccount
Note: Use the linkExternalAccount endpoint unless you have a specific use case and authorization to use this one. This method is only to be used in conjunction with an independent Plaid integration.
This method is used to add information to an Account (createAccount) for an external bank account which an ACH transfer can be initiated from. Only one external account can be created for an account. External accounts can have funds debited from them (externalFundMove).
Parameters
| Parameter | Type | Required | Description |
types | string | Yes | External Bank Account Type: Account / Issuer |
accountId | string | Yes | Account ID that is generated by the API when an Account is created (createAccount). Required when types is Account |
issuerId | string | Yes | Issuer ID that is generated by the API when an Issuer is created (createIssuer). Required when types is Issuer |
ExtAccountfullname | string | Yes | Account Holder Full Name or Issuer Account Holder Full Name |
Extnickname | string | Yes | Nickname for the External Account (Special characters are not accepted in this field) |
ExtRoutingnumber | integer | Yes | External Bank Account - Routing Number |
ExtAccountnumber | integer | Yes | External Bank Account - Account Number |
ExtBankname | string | No | External Bank Account - Bank Name |
updatedIpAddress | string | Yes | IP Address associated with the createExternalAccount method call |
accountType | string | No | Account type Checking / Savings. By default Checking |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/createExternalAccount
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d types=Account
-d accountId=A20168
-d ExtAccountfullname=John Abraham
-d Extnickname=John Nick
-d ExtBankname=Union Bank
-d ExtRoutingnumber=34543534
-d ExtAccountnumber=1234567890
-d updatedIpAddress=10.0.0.115
Response
The details are returned under the key External Account Details when types is Account, or Issuer External Account Details when types is Issuer.
| Field | Type | Description |
accountId | string | Account ID (issuerId is returned instead when types is Issuer) |
ExtAccountfullname | string | External account full name |
Extnickname | string | External account nickname |
ExtRoutingnumber | string | External account bank routing number (base64-encoded) |
ExtAccountnumber | string | External account bank account number (base64-encoded) |
types | string | Type Account/Issuer |
accountType | string | Account type: Checking / Savings. (Default - Checking) |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"External Account Details": [
true,
[
{
"accountId": "A78129645",
"ExtAccountfullname": "Lauren Test",
"Extnickname": "Testing",
"ExtRoutingnumber": "MDUzMDAwMTk2",
"ExtAccountnumber": "MTAwMDAwMDA=",
"types": "Account",
"accountType": "Checking"
}
]
]
}
POST /v3/deleteExternalAccount
This method is used to delete a particular external bank account (createExternalAccount) that was created for an account (createAccount). The Account ID must be specified as a request parameter to delete the external account.
Parameters
| Parameter | Type | Required | Description |
types | string | Yes | Account |
accountId | string | Yes | Account ID or Issuer ID that is generated by the API when an Account is created (createAccount). |
Example Request
curl --request POST \
--url https://api-sandboxdash.norcapsecurities.com/v3/deleteExternalAccount \
--header 'content-type: application/json' \
--data '
{
"accountId": "A123456",
"types": "Account",
"clientID": "someClientID",
"developerAPIKey": "someDeveloperAPIKey"
}
'
Response
| Field | Type | Description |
accountId | string | Account ID |
Ext\_Status | string | External account status deleted or not |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"Account External Account Details": [
true,
[
{
"accountId": "A123456",
"Ext_status": "Deleted"
}
]
]
}
POST /v3/externalFundMove
Parameters
| Parameter | Type | Required | Description |
accountId | string | Yes | Account ID or Issuer ID that is generated by the API once an account (createAccount) or Issuer (createIssuer) is created |
offeringId | integer | Yes | Offering ID that is generated by the API once an offering is created (createOffering) |
tradeId | integer | Yes | Trade ID that is generated by the API once a trade is created (createTrade). A trade must be created before externalFundMove can be performed. |
NickName | string | Yes | Nickname given to the external account. This must match the Extnickname value in createExternalAccount. If using linkExternalAccount, Extnickname value can be retrieved via getExternalAccount |
amount | decimal | Yes | The amount to be debited from the external account. Limited to your environment maximum. |
description | string | Yes | Description of the fund move (Investment in [offering]) |
checkNumber | integer | Yes | Check number should be same as trade ID |
createdIpAddress | string | No | IP address associated with the externalFundMove method call |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/externalFundMove
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d accountId=985742
-d offeringId=97421
-d tradeId=7766362363632
-d NickName=Tester Jones
-d amount=10000.50
-d checkNumber=7766362363632
-d description=Example Transaction
-d createdIpAddress=10.0.0.9
Response
The response shape depends on the client's payment provider.
| Field | Type | Description |
TradeFinancialDetails | array | Returned when the payment provider is Tristate or Signature Bank. Array of fund move details |
investorExternalAccountDetails | object | Returned when the payment provider is USAEpay. Transaction result containing RefNum, Error, Result, and ResultCode |
Example Response (Tristate / Signature Bank)
{
"statusCode": "101",
"statusDesc": "Ok",
"TradeFinancialDetails": [
{
"accountId": "A49501",
"tradeId": "257528259",
"offeringId": "81272",
"totalAmount": "1000.000000",
"RefNum": "464266069",
"fundStatus": "Pending"
}
]
}
Example Response (USAEpay)
{
"statusCode": "101",
"statusDesc": "Ok",
"investorExternalAccountDetails": {
"RefNum": "464266069",
"Error": "",
"Result": "Approved",
"ResultCode": "A"
}
}
POST /v3/getAchPendingId
This method returns the pending Tristate ACH fund-move transactions for an account. It returns only records whose fundStatus is Pending — i.e. ACH debits that have been initiated (externalFundMove) but not yet settled or voided. If the account has no pending Tristate ACH records, the response returns statusCode 212 with no transaction array.
Parameters
| Parameter | Type | Required | Description |
accountId | string | Yes | Account ID or Issuer ID that is generated by the API once an Account (createAccount) or Issuer (createIssuer) is created |
Example Request
curl --request POST \
--url https://api-sandboxdash.norcapsecurities.com/v3/getAchPendingId \
--header 'content-type: application/json' \
--data '
{
"clientID": "someClientID",
"developerAPIKey": "someDeveloperAPIKey",
"accountId": "A12345"
}
'
Response
Returns the matching pending Tristate ACH transactions in the investorExternalAccountDetails array. Each element contains the following fields:
| Field | Type | Description |
accountId | string | Account ID the transaction belongs to |
tradeId | string | Trade ID associated with the fund move |
offeringId | string | Offering ID the trade is invested in |
Bankname | string | Name of the external bank the funds are debited from |
totalAmount | decimal | Amount of the ACH debit |
Accountnumber | string | External bank account number (base64-encoded) |
Routingnumber | string | External bank ABA routing number (base64-encoded) |
Accountfullname | string | Account holder's full name on the external bank account |
transactionstatus | string | Tristate transaction approval state. Values: Pending, Approved |
routingNumberStatus | string | Routing number verification state. Value: Verified |
fundStatus | string | Settlement status of the fund move. Always Pending for records returned by this method |
createdDate | string | Timestamp the transaction was created |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"investorExternalAccountDetails": [
{
"accountId": "A1543842",
"tradeId": "257528259",
"offeringId": "81272",
"Bankname": "America First Credit Union",
"totalAmount": "1000.000000",
"Accountnumber": "MTExMTIyMjIzMzMzMTExMQ==",
"Routingnumber": "MDIxNTMxMzIz",
"Accountfullname": "Test Account Name",
"transactionstatus": "Pending",
"routingNumberStatus": "Verified",
"fundStatus": "Pending",
"createdDate": "2024-05-01 10:15:00"
}
]
}
POST /v3/getExternalAccount
Parameters
| Parameter | Type | Required | Description |
types | string | Yes | Account / Issuer |
accountId | string | Yes | Account Id that is generated by the API when an Account is created (createAccount). Required when types is Account |
issuerId | string | Yes | Issuer Id that is generated by the API when an Issuer is created (createIssuer). Required when types is Issuer |
Example Request
curl --request POST \
--url https://api-sandboxdash.norcapsecurities.com/v3/getExternalAccount \
--header 'content-type: application/json' \
--data '
{
"clientID": "someClientID",
"developerAPIKey": "someDeveloperAPIKey",
"accountId": "A12345",
"types": "Account"
}
'
Response
| Field | Type | Description |
accountId | string | Account ID generated by the API (issuerId is returned instead when types is Issuer) |
statusDesc | object | External account details |
statusDesc.AccountName | string | Account holder's full name on the external bank account |
statusDesc.AccountNickName | string | Nickname for the external account |
statusDesc.AccountRoutingNumber | string | External bank ABA routing number (decoded, plaintext) |
statusDesc.AccountNumber | string | External bank account number (decoded, plaintext) |
statusDesc.accountType | string | Account type: Checking / Savings |
statusDesc.updatedDate | string | Timestamp the external account was last updated |
statusDesc.createdDate | string | Timestamp the external account was created. Not returned when types is Issuer |
Example Response
{
"statusCode": "101",
"accountId": "A1543842",
"statusDesc": {
"AccountName": "Test Account Name",
"AccountNickName": "Plaid Saving - America First Credit Union",
"AccountRoutingNumber": "021531323",
"AccountNumber": "1111222233331111",
"accountType": "Savings",
"updatedDate": "0000-00-00 00:00:00",
"createdDate": "2022-10-26 23:10:39"
}
}
POST /v3/getExternalFundMove
This method is used to get the details and current status for an external fund move. The Account ID and Reference Number must be specified as a request parameter to get the external fund move details and current status.
Parameters
| Parameter | Type | Required | Description |
accountId | string | Yes | Account ID or Issuer ID that is generated by the API when an Account(createAccount) or Issuer(createIssuer) is created |
RefNum | integer | Yes | Reference Number that is generated by the API once an external fund move is initiated (externalFundMove) |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getExternalFundMove
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d accountId=A85742
-d RefNum=685427152
Response
| Field | Type | Description |
investorExternalAccountDetails | array | Returns the fund move details as an array |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"investorExternalAccountDetails": [
{
"accountId": "A49501",
"tradeId": "529293396",
"offeringId": "81272",
"Bankname": "Testing",
"totalAmount": "1000.000000",
"Accountnumber": "MTIzNDU2Nzg5MDAwMA==",
"Routingnumber": "MTIxMDAwMzU4",
"RefNum": "367253829",
"Accountfullname": "John Smith",
"transactionstatus": "Approved",
"routingNumberStatus": "Verified",
"fundStatus": "Submitted",
"errors": null,
"createdDate": "2018-09-19 08:57:04"
}
]
}
POST /v3/getExternalFundMoveHistory
This method is used to retrieve all the external fund move details for all ACH transactions that have been processed for a particular Account (createAccount)
Parameters
| Parameter | Type | Required | Description |
accountId | string | Yes | Account ID or Issuer ID that is generated by the API when an Account(createAccount) or Issuer(createIssuer) is created. |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getExternalFundMoveHistory
-d clientID=someclientid
-d developerAPIKey=somedeveloperkey
-d accountId=A77952
Response
| Field | Type | Description |
accountDetails | array | Array of external fund move details for an account that includes all information for the fund moves created for the matched account |
The fields in each element depend on the client's payment provider. Tristate / Signature Bank records contain the fields shown in the example below. USAEpay records instead contain accountId, offeringId, totalAmount, checknumber, Accountnumber, Routingnumber, description, refnum, fundStatus, and createdDate (no tradeId, Bankname, Accountfullname, transactionstatus, routingNumberStatus, or errors fields).
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"accountDetails": [
{
"accountId": "A49501",
"tradeId": "880696248",
"offeringId": "81272",
"Bankname": "Testing",
"totalAmount": "1000.000000",
"Accountnumber": "MTIzNDU2Nzg5MDAwMA==",
"Routingnumber": "MTIzNDU2Nzg5",
"RefNum": null,
"Accountfullname": "Testing",
"transactionstatus": "Approved",
"routingNumberStatus": "Verified",
"fundStatus": "Submitted",
"errors": null,
"createdDate": "2018-06-16 05:49:10"
},
{
"accountId": "A49501",
"tradeId": "623303227",
"offeringId": "44238",
"Bankname": "Testing",
"totalAmount": "5.000000",
"Accountnumber": "MTIzNDU2Nzg5MDAwMA==",
"Routingnumber": "MTIzNDU2Nzg5",
"RefNum": null,
"Accountfullname": "Testing",
"transactionstatus": "Pending",
"routingNumberStatus": "Verified",
"fundStatus": "Pending",
"errors": null,
"createdDate": "2018-07-06 11:35:45"
},
{
"accountId": "A49501",
"tradeId": "385938050",
"offeringId": "44238",
"Bankname": "Testing",
"totalAmount": "1.000000",
"Accountnumber": "MTIzNDU2Nzg5MDAwMA==",
"Routingnumber": "MTIzNDU2Nzg5",
"RefNum": null,
"Accountfullname": "Testing",
"transactionstatus": "Pending",
"routingNumberStatus": "Verified",
"fundStatus": "Pending",
"errors": null,
"createdDate": "2018-07-06 11:59:16"
}
]
}
POST /v3/getExternalFundMoveInfo
This method is used to get all information for an external fund move. The Account ID (createAccount) and Reference Number (included in the externalFundMove response) must be specified as a request parameter to get all external fund move information.
Parameters
| Parameter | Type | Required | Description |
accountId | string | Yes | Account ID or Issuer ID that is generated by the API when an Account(createAccount) or Issuer(createIssuer) is created |
RefNum | string | Yes | Reference Number that is generated by the API once an external fund move is initiated (externalFundMove) |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getExternalFundMoveInfo
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d RefNum=685427152
-d accountId=A12345
Response
| Field | Type | Description |
investorExternalAccountDetails | object | Returns the fund move status. For Tristate / Signature Bank clients this contains fundStatus and error. For USAEpay clients this is the USAEpay transaction status object |
ACHDetails | object | Returns the ACH details. For USAEpay clients the object contains accountId, accountName, clientName, providerName, createdDate, and offeringName (instead of issueName) |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"investorExternalAccountDetails": {
"fundStatus": "Returned",
"error": "101 - Settled Trade"
},
"ACHDetails": {
"accountId": "A3040386",
"fundStatus": "Returned",
"tradeId": "1001577983",
"createdDate": "2024-07-31 17:18:59",
"developerAPIKey": "somedeveloperkey",
"accountName": "John Smith's Account",
"clientName": "example client",
"clientId": "someclientid",
"issueName": "example offering"
}
}
POST /v3/linkExternalAccount
* This Method has third party fees associated with it that will be charged for each use. The cost to use this method is $1.80 each time the method is invoked. (Only applies in live API environment. Does not apply in the Sandbox Environment) *** This method is used to add an external account using Plaid. Only one external account can be created for an account. STEP ONE: Invoke the "LinkExternalAccount" API method from a web form using cURL. Failures will see the response with corresponding error codes. STEP TWO: Successful calls will provide the response as below : { "statusCode": "101", "statusDesc": "Ok", "AccountDetails":" https://api-sandboxdash.norcapsecurities.com/apiscript/plaid-link.php?params=[param_value] " } . STEP THREE: Get the content of the response and run it. You should see the Login widget on the webpage. Example PHP snippet : $res = json_decode($result); print_r(file_get_contents($res->accountDetails));
Parameters
| Parameter | Type | Required | Description |
accountId | string | Yes | Account ID generated by the API |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/linkExternalAccount
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d accountId=A12345
Response
| Field | Type | Description |
accountDetails | string | Response URL |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"accountDetails": " https://api-sandboxdash.norcapsecurities.com/apiscript/plaid-link.php?params=[param_value] "
}
POST /v3/requestForVoidACH
This method is used to update the pending ACH transaction to void. This can only be used on a transaction that is in a "Pending" status. "Pending" transactions are submitted for processing at 6:00 PM Eastern Time every business day.
Parameters
| Parameter | Type | Required | Description |
RefNum | integer | Yes | Reference Number that is generated by the API once an external fund move is initiated (externalFundMove) |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/requestForVoidACH
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d RefNum=313889266
Response
| Field | Type | Description |
investorExternalAccountDetails | string | Status Updated Successfully |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"investorExternalAccountDetails": "Status Updated Successfully"
}
POST /v3/updateExternalAccount
This method is used to update fields related to a particular external account for an Account (createAccount). The Account ID must be specified as a request parameter to update the record.
Parameters
| Parameter | Type | Required | Description |
ExtAccountfullname | string | Yes | Account Holder Full Name or Issuer Account Holder Full Name |
Extnickname | string | Yes | Nickname for the external account |
types | string | Yes | Is this for an account or issuer account? |
accountId / issuerId | string | Yes | Account ID or Issuer ID that is generated by the API when an Account(createAccount) or Issuer(createIssuer) is created. |
ExtRoutingnumber | integer | Yes | External Bank Account - Routing Number |
ExtAccountnumber | integer | Yes | External Bank Account - Account Number |
updatedIpAddress | string | No | IP Address of the updateExternalAccount method call |
accountType | string | No | Account type Checking / Savings. By default Checking |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/updateExternalAccount
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d types=Account
-d accountid=A12345
-d ExtAccountfullname=John Abraham
-d Extnickname=John Nick
-d ExtRoutingnumber=34543534
-d ExtAccountnumber=1234567890
-d accountType=Checking
-d updatedIpAddress=10.0.0.115
Response
The details are returned under the key Account External Account Details when types is Account, or Issuer External Account Details when types is Issuer.
| Field | Type | Description |
accountId / issuerId | string | Account ID or Issuer ID that is generated by the API when an Account(createAccount) or Issuer(createIssuer) is created. |
ExtAccountfullname | string | Account Holder Full Name or Issuer Account Holder Full Name |
Extnickname | string | Nickname for the External Account |
ExtRoutingnumber | string | External Bank Account - Routing Number (base64-encoded) |
ExtAccountnumber | string | External Bank Account - Account Number (base64-encoded) |
types | string | Is this for an Account or Issuer Account? |
accountType | string | Account type Checking / Savings. By default Checking |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"Account External Account Details": [
true,
[
{
"accountId": "5705166",
"ExtAccountfullname": "John",
"Extnickname": "John account",
"ExtRoutingnumber": "MzQ1NDM1MzQ=",
"ExtAccountnumber": "MTIzNDU2Nzg5MA==",
"accountType": "Checking",
"types": "Account"
}
]
]
}
POST /v3/updateLinkExternalAccount
* This Method has third party fees associated with it that will be charged for each use. The cost to use this method is $1.80 each time the method is invoked. (Only applies in live API environment. Does not apply in the Sandbox Environment) *** This method is used to update an external account using Plaid. Only one external account can be created for an account
Parameters
| Parameter | Type | Required | Description |
accountId | string | Yes | Account ID generated by the API |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/updateLinkExternalAccount
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d accountId=A12345
Response
| Field | Type | Description |
accountDetails | string | Response URL |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"accountDetails": "https://api-sandboxdash.norcapsecurities.com/apiscript/plaid-link.php?params=[param_value]"
}
POST /v3/validateABARoutingNumber
This method is used to validate the routing number for an external account (createExternalAccount)
Parameters
| Parameter | Type | Required | Description |
routingNumber | integer | Yes | The Bank ABA routing number to be validated |
Example Request
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/validateABARoutingNumber
-d clientID=someclientid
-d developerAPIKey=somedeveloperkey
-d routingNumber=123456789
Response
| Field | Type | Description |
accountDetails | string | Routing number valid / invalid |
Example Response
{
"statusCode": "101",
"statusDesc": "Ok",
"accountDetails": "Valid routing number"
}