Skip to content

Custodial Accounts

All requests require clientID and developerAPIKey parameters for authentication.

Base URL: https://api-sandboxdash.norcapsecurities.com

Endpoints


POST /v3/createCustodyAccountRequest

This method is used to request a custodial account. This is the first step to opening a custodial account through North Capital Private Securities. The Custody Agreement Attestation (createCustodyAgreementAttestation) must be affirmatively recorded before the request can be made.

Parameters

Parameter Type Required Description
accountId string Yes Account ID that is generated by the API once an account is created (createAccount)

Example Request

curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/createCustodyAccountRequest
-d clientID=someclientid
-d developerAPIKey=somedeveloperkey
-d accountId=A12345

Response

Field Type Description
custodialAccountDetails array Array of custodial account request records (one element)
Field Type Description
accountId string Account ID generated by the API with createAccount
custAccStatus string Request status: Pending, Need More Info, Approved, Rejected, New Info Added
accountStatus string Status of the custody account: Pending, Open, Closed
custAccRequestID string Custodial Account Request Id
createdDate string Date and timestamp of the request
approvalStatus string Approval status of the underlying TAPI account (from createAccount)

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "custodialAccountDetails": [
    {
      "accountId": "A98780788",
      "custAccStatus": "Pending",
      "accountStatus": "Pending",
      "custAccRequestID": "yNHHDX2",
      "createdDate": "2024-11-22 16:22:10",
      "approvalStatus": "Pending"
    }
  ]
}

POST /v3/createCustodyAccountSupplement

This method is used to request a custodial account. This is the first step to opening a custodial account through North Capital Private Securities. This is specifically for IRA accounts.

Parameters

Parameter Type Required Description
accountId string Yes Account ID that is generated by the API once an account is created (createAccount)
appointmentOfInvestmentManager string No 1 - I/We wish to appoint an investment manager. Complete Part 1A 2 - No appointment at this time
proxyVotingPreferences string No 1 - Receive all proxy materials 2 - Send all proxy marterials to an investment manager 3 - Do not send proxy material
otherServices string No Please provide the details of the other services required.
methodOfContributionOrFunding string No 1 - Transfer Direct movement of assets from an IRA into this IRA 2 - Regular Contribution Includes catch-up contributions. 3 - Roth Conversion A taxable movement from a Traditional or Simple IRA into this Roth IRA. By selecting this transaction, you irrevocably designate this contribution as a conversion. 4 - Rollover Distribution from an IRA or eligible employersponsored retirement plan that is being deposited into this IRA. By selecting this transaction, you irrevocably designate this contribution as a rollover. 5 - SEP Contribution Contribution made under a SEP plan. SEP contributions are reported for the year in which the contribution is made
methodOfContributionTaxYear string No If "methodOfContributionOrFunding is option 2 - this is required to complete "Contribution for Tax Year 'YYYY'.
internationalAccountNumber string No If the account is an international account, please include the account number here.
bankFirmName1 string No Name of the bank/firm where the assets are currently held.
bankCountry1 string No Country of the bank/firm where the assets are currently held.
bankAccountName1 string No Name on the account where the assets are currently held.
bankAccountNumber1 string No Account number of the account where the assets are currently held.
bankFirmName2 string No Name of the bank/firm where the assets are currently held.
bankCountry2 string No Country of the bank/firm where the assets are currently held.
bankAccountName2 string No Name on the account where the assets are currently held.
bankAccountNumber2 string No Account number of the account where the assets are currently held.
maritalStatus string No 1 - Not married. 2 - Married If you designate a primary benefiicary other than or in addition to your spouse, spousal consent may be required.
mailingAddressLine1 string Yes Mailing Address Line 1
mailingAddressLine2 string No Mailing Address Line 2
mailingCity string Yes Mailing Address City
mailingState string Yes Mailing Address State
mailingZipCode string Yes Mailing Address Zip Code
mailingCountry string Yes Mailing Address Country

Example Request

curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/createCustodyAccountSupplement
-d clientID=someclientid
-d developerAPIKey=someclientid
-d accountId=someaccountid
-d proxyVotingPreferences=proxyVotingPreferences
-d otherServices=otherServices
-d methodOfContributionOrFunding=type
-d methodOfContributionTaxYear=some year
-d internationalAccountNumber=internationalAccountNumber
-d bankFirmName1=bankFirmName1
-d bankCountry1=bankCountry1
-d bankAccountName1=bankAccountName1
-d bankAccountNumber1=bankAccountNumber1
-d bankFirmName2=bankFirmName
-d bankCountry2=bankCountry
-d bankAccountName2=bankAccountName
-d bankAccountNumber2=bankAccountNumber
-d maritalStatus=1
-d mailingAddressLine1=Mailing Address Line 1
-d mailingAddressLine2=Mailing Address Line 2
-d mailingCity=Mailing Address City
-d mailingState=Mailing Address State
-d mailingZipCode=Mailing Address Zip Code
-d mailingCountry=Mailing Address Country

Response

Field Type Description
accountDetails object The stored custodial account supplement record
Field Type Description
accountId string Account ID that is generated by the API once an account is created (createAccount)
appointmentOfInvestmentManager string 1 or 2
proxyVotingPreferences string 1, 2, or 3
otherServices string Details of the other services required.
methodOfContributionOrFunding string 1, 2, 3, 4, or 5,
methodOfContributionTaxYear string YYYY
internationalAccountNumber string International account number
bankFirmName1 string Name of the bank/firm where the assets are currently held.
bankCountry1 string Country of the bank/firm where the assets are currently held.
bankAccountName1 string Account name of the account where the assets are currently held.
bankAccountNumber1 string Account number of the account where the assets are currently held.
bankFirmName2 string Country of the bank/firm where the assets are currently held.
bankCountry2 string Country of the bank/firm where the assets are currently held.
bankAccountName2 string Name of the bank/firm where the assets are currently held.
bankAccountNumber2 string Account number of the account where the assets are currently held.
maritalStatus string 1 - Not married. 2 - Married
mailingAddressLine1 string Mailing address
mailingAddressLine2 string Mailing address
mailingCity string Mailing city
mailingState string Mailing state
mailingZipCode string Mailing zip code
mailingCountry string Mailing country

Example Response

{
  "statusCode": "101",
  "statusDesc": "Account added successfully.",
  "accountDetails": {
    "accountId": "A3091454",
    "appointmentOfInvestmentManager": "2",
    "proxyVotingPreferences": "2",
    "otherServices": "",
    "methodOfContributionOrFunding": "4",
    "methodOfContributionTaxYear": "",
    "internationalAccountNumber": "",
    "bankFirmName1": "Bank of America",
    "bankCountry1": "US",
    "bankAccountName1": "",
    "bankAccountNumber1": "123456789",
    "bankFirmName2": "",
    "bankCountry2": "",
    "bankAccountName2": "",
    "bankAccountNumber2": "",
    "maritalStatus": "1",
    "mailingAddressLine1": "",
    "mailingAddressLine2": "",
    "mailingCity": "",
    "mailingState": "",
    "mailingZipCode": "",
    "mailingCountry": ""
  }
}

POST /v3/createCustodyAgreementAttestation

This method is used to record when a party attests to North Capital account terms and conditions.

Parameters

Parameter Type Required Description
accountId string Yes Account ID that is generated by the API once an account is created (createAccount).
isAttested boolean Yes true (accepted)
documentUrl string Yes URL for attestation document

Example Request

curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/createCustodyAgreementAttestation
-d clientID=someclientid
-d developerAPIKey=somedeveloperkey
-d accountId=A2624258
-d isAttested=true
-d documentUrl=https://example.com

Response

Field Type Description
attestation object attestation details
Field Type Description
accountId string Account ID that has attested
isAttested boolean 1 = true, the party has attested
documentUrl string URL for attestation
createdDate string Date and timestamp of the attestation

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "attestation": {
    "accountId": "A98780730",
    "isAttested": "1",
    "documentUrl": "https://example.com",
    "createdDate": "2024-11-26 17:05:16"
  }
}

POST /v3/createCustodyFundDisbursement

This method requests a disbursement (withdrawal) of funds from a custody account. ACH disbursements send funds to the external bank account linked to the TAPI account; wire disbursements send funds to the bank identified by bankId and bankAccountId. The disbursement is created in a pending state.

Parameters

Parameter Type Required Description
accountId string Yes Account ID generated from createAccount
amount string Yes Amount of funds to be transferred
type string Yes Type options: ach, wire_domestic, wire_international
bankId string No Required for wire transfers only.
bankAccountId string No Required for wire transfers only.
additionalDetails string No Open text field to provide any additional instructions required to successfully send the wire transfer

Example Request

curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/createCustodyFundDisbursement
-d clientID=someclientid
-d developerAPIKey=somedeveloperkey
-d accountId=someaccountid
-d amount=22.23
-d type=wire_domestic
-d bankId=122100024
-d bankAccountId=123456789

Response

Field Type Description
custodyFundDisbursement object The created disbursement request. See fields below.

Response Fields

Field Type Description
requestId string (UUID) Unique disbursement request identifier.
accountId string TAPI Account ID the disbursement is drawn from.
amount string Disbursement amount, with two decimal places.
type string Transfer type. One of ach, wire_domestic, wire_international.
bankId string | null Destination bank/routing identifier (wire transfers); null for ACH.
bankAccountId string | null Destination bank account identifier (wire transfers); null for ACH.
additionalDetails string | null Additional instructions provided on the request; null when not provided.
status string Disbursement status. One of pending, processing, on_hold, approved, rejected, scheduled, in_review, completed, terminated, failed, reopened. Newly created disbursements start at pending.
createdDate string Date and timestamp the disbursement was created.
updatedDate string Date and timestamp the disbursement was last updated.

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "custodyFundDisbursement": {
    "requestId": "a49a68b7-f0ab-45b5-ac07-6ed555259d27",
    "accountId": "A3110006",
    "amount": "1.20",
    "type": "wire_domestic",
    "bankId": "122100024",
    "bankAccountId": "123456789",
    "additionalDetails": null,
    "status": "pending",
    "createdDate": "2024-12-10 23:29:13",
    "updatedDate": "2024-12-10 23:29:13"
  }
}

POST /v3/createCustodyFundMove

This method initiates a fund move (deposit) into a custody account by debiting the external bank account linked to the supplied TAPI account. The deposit is created in a Pending state and is submitted to the bank for ACH processing at 6:00 PM Eastern Time each business day. The amount is limited based on the client's risk assessment and per-transaction ACH cap.

Parameters

Parameter Type Required Description
accountId string Yes Account ID that is generated by the API once an account is created (createAccount)
amount string Yes The amount to be debited from the external account. The amount is limited based on client risk assessment and is capped at $100,000.00
description string No Description of the fund move

Example Request

curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/createCustodyFundMove
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d accountId=985742
-d amount=10000.50
-d description=Example Transaction

Response

Field Type Description
custodyTransaction object The created fund move transaction. See fields below.

Response Fields

Field Type Description
accountId string TAPI Account ID the deposit was initiated for.
bankName string | null Name of the external bank, when available.
amount string Amount of the fund move (decimal string).
accountNumber string External bank account number (decoded). Empty string when not exposed.
routingNumber string External bank routing number (decoded).
accountName string Name on the external bank account.
referenceNumber string API-generated reference number identifying this fund move.
description string Description provided on the request.
approvalStatus string Internal approval state. Pending for live transactions; TEST ENTRY when the external account uses a test nickname.
status string Fund move (fundStatus) state. One of Pending, Submitted, Settled, Returned, Voided, Declined. Newly created fund moves start at Pending.
routingNumberStatus string Routing number verification result (e.g. Verified).
errors string Error detail associated with the transaction; empty string when none.
createdDate string Date and timestamp the fund move was created.
updatedDate string Date and timestamp the fund move was last updated.

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "custodyTransaction": {
    "accountId": "A3110006",
    "bankName": null,
    "amount": "7.000000",
    "accountNumber": "",
    "routingNumber": "011001726",
    "accountName": "",
    "referenceNumber": "339846456",
    "description": "",
    "approvalStatus": "Pending",
    "status": "Pending",
    "routingNumberStatus": "Verified",
    "errors": "",
    "createdDate": "2024-12-10 22:49:06",
    "updatedDate": "2024-12-10 22:49:06"
  }
}

POST /v3/createCustodyPartySupplement

This method is used to add additional fields that may be required in order to open a custodial account through North Capital Private Securities.

Parameters

Parameter Type Required Description
partyId string Yes Party ID that is generated by the API once a party is created (createParty)
relationship string No The party's relationship to the account owner. Put "owner" if this is the account owner.
salutation string No The party's title. Enum: Mr., Mrs., Ms., Dr. Deprecated aliases: 1 (Mr.), 2 (Mrs.), 3 (Ms.), 4 (Dr.). The field is not validated, so any other value is stored as sent.
countryOfCitizenship string No Party's country of citizenship.
authorizedSigner string No Is this party the authorized signer for the account? Enum (case-insensitive): Yes, No. Deprecated aliases: 1 (Yes), 2 (No). Any other value stores an empty string.
controlPerson string No Is this party a control person for the account? Enum (case-insensitive): Yes, No. Deprecated aliases: 1 (Yes), 2 (No). Any other value stores an empty string.
politicallyExposedPerson string No Is this person considered a politically exposed person? Enum (case-insensitive): Yes, No. Deprecated aliases: 1 (Yes), 2 (No). Any other value stores an empty string.
politicallyExposedPersonDetails string No If the person selects "Yes" that they are a politically exposed person, then this field is required. Please provide the details of the politically exposed person.
beneficiaryType string No The beneficiary type, if this party is a beneficiary for the account. Enum: Spouse, Non-Spouse, Trust/Entity. Deprecated aliases: 1 (Spouse), 2 (Non-Spouse), 3 (Trust/Entity). The field is not validated, so any other value is stored as sent.
beneficiaryPercentage string No If this party is a beneficiary for the account, please provide the percentage. Stored as sent and not validated.
mailingAddressLine1 string No Mailing Address Line 1
mailingAddressLine2 string No Mailing Address Line 2
mailingCity string No Mailing Address City
mailingState string No Mailing Address State
mailingZipCode string No Mailing Address Zip Code
mailingCountry string No Mailing Address Country
publicCompany string No Is this party associated with a public company? Enum (case-insensitive, stored lowercase): Yes, No. Deprecated aliases: 1 (Yes), 2 (No). Any other value stores an empty string.
companyTicker string No Company Ticker if the party is associated with a public company
associatedFirm string No If the party is associated with a broker dealer, please indicate the name of the Associated Firm
createdIpAddress string No IP address recorded against the record

Example Request

curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/createCustodyPartySupplement
-d clientID=someclientid
-d developerAPIKey=somedeveloperKey
-d partyId=somepartyid
-d relationship=owner
-d salutation=Mr
-d countryOfCitizenship=citizenship
-d authorizedSigner=yes
-d controlPerson=yes
-d politicallyExposedPerson=yes
-d politicallyExposedPersonDetails=some details
-d beneficiaryType=Spouse
-d beneficiaryPercentage=100
-d mailingAddressLine1=address1
-d mailingAddressLine2=address2
-d mailingCity=city
-d mailingState=state
-d mailingZipCode=54321
-d mailingCountry=US
-d publicCompany=yes
-d companyTicker=test
-d associatedFirm=test

Response

Field Type Description
party details object The stored party details
Field Type Description
partyId string Party ID that is generated by the API once a party is created (createParty)
relationship string The party's relationship to the account owner, as sent
salutation string Mr., Mrs., Ms., Dr., or the value sent
countryOfCitizenship string Party's country of citizenship.
authorizedSigner string Yes, No, or an empty string
controlPerson string Yes, No, or an empty string
politicallyExposedPerson string Yes, No, or an empty string
politicallyExposedPersonDetails string Details of the politically exposed person
beneficiaryType string Spouse, Non-Spouse, Trust/Entity, or the value sent
beneficiaryPercentage string The percentage as sent
mailingAddressLine1 string Mailing Address Line
mailingAddressLine2 string Mailing Address Line
mailingCity string Mailing Address City
mailingState string Mailing Address State
mailingZipCode string Mailing Address Zip
mailingCountry string Mailing Address Country

Example Response

{
  "statusCode": "101",
  "statusDesc": "Party added successfully.",
  "party details": {
    "partyId": "P2726935",
    "relationship": "owner",
    "salutation": "Mr",
    "countryOfCitizenship": "citizenship",
    "authorizedSigner": "Yes",
    "controlPerson": "Yes",
    "politicallyExposedPerson": "Yes",
    "politicallyExposedPersonDetails": "some details",
    "beneficiaryType": "Spouse",
    "beneficiaryPercentage": "100",
    "mailingAddressLine1": "address1",
    "mailingAddressLine2": "address2",
    "mailingCity": "city",
    "mailingState": "state",
    "mailingZipCode": "54321",
    "mailingCountry": "US"
  }
}

A party can only have one supplement record. Calling this a second time for the same party returns statusCode 200 with Error(s) set to This partyId already added. — use updateCustodyPartySupplement to change an existing record.


GET /v3/custody/accounts/{id}/positions

Fetch the security positions held in a single custody account. The endpoint resolves the supplied TAPI account ID ({id}) to its underlying brokerage (custody) account and returns one aggregated row per security, where units is the net of all credit and debit security transactions for that security.

Permissions

This method requires the scope custody_account.read to be granted to the calling API key. The scope can be assigned by system admins through the API or Transact Portal.

Authorization

All requests require clientID and developerAPIKey parameters for authentication. The account must belong to one of the API keys owned by the authenticated client.

Path Parameters

Parameter Type Required Description
id string Yes TAPI Account ID (e.g. A12345) generated by createAccount. Resolved internally to the linked brokerage/custody account.

Response Fields

The positions array contains one entry per security held in the account.

Field Type Description
id string Security identifier (CUSIP or symbol) of the held security.
date string Date (YYYY-MM-DD) of the most recent security transaction for this security in the account.
units string Net number of units held: the sum of credit transaction units minus debit transaction units.

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "positions": [
    {
      "id": "02587DM96",
      "date": "2019-03-20",
      "units": "27"
    },
    {
      "id": "40434YGR2",
      "date": "2019-03-21",
      "units": "1"
    },
    {
      "id": "38148JA92",
      "date": "2019-03-22",
      "units": "1"
    },
    {
      "id": "DELL12",
      "date": "2019-03-20",
      "units": "10"
    }
  ]
}

GET /v3/custody/accounts/{id}/transactions

Fetch a list of custodian ledger transactions for the specified custody account. This is the authoritative record of cash activity: the status field reflects the custodian's settlement state (Pending, Settled, or Returned), and referenceNumber ties each transaction back to the originating fund move. Transactions are ordered by transaction date with the most recent at index zero.

Permissions

This method requires the scope custody_transaction.read to be granted to the calling API key. Transaction records are PII-high: unless the key holds the pii_high level for this scope, all but a base set of fields (including name) are redacted from the response.

This scope can be assigned by system admins through the API or Transact Portal.

Authorization

Header: Authorization: Bearer clientId:apiKey

Query Parameters

Parameter Type Default Description
offset integer 0 The row index at which to begin the query. Zero represents the first transaction in the list.
limit integer 10 The maximum number of transactions to return. Max value is 500.
deleted boolean false Include deleted transactions in response.
filter string (JSON) Filter results by specific fields (e.g. referenceNumber, status).

Response Fields

Field Type Description
id string Custodian transaction identifier.
method string Processing method: ACH, Wire, Check, Transfer, or Fee. Casing is not normalized by the custodian, so compare case-insensitively.
date string (YYYY-MM-DD) Transaction date.
name string Customer name (PII; redacted without pii_high).
amountCents integer Transaction amount in cents. Always positive; use type for direction.
type string Direction of the cash movement: Credit (funds into the account) or Debit (funds out).
subtype string Cash transaction category from the custodian's configurable list (e.g. MMF - Purchase, MMF - Redemption). Not a fixed enumeration.
brokerageAccountId string Custodian brokerage account identifier.
notes string Free-form notes.
status string Settlement state: Pending (awaiting settlement), Settled (completed), or Returned (rejected/reversed). Only Settled transactions count toward the account's available cash balance.
referenceNumber string Reference number linking the transaction to the originating fund move (the value passed to createCustodyFundMove).
accountId string TAPI account identifier.
settledDate string (YYYY-MM-DD) Scheduled/actual settlement date. Settlement is keyed off this date, so it is known before status becomes Settled.
checkNumber string Check number, when method is Check.
deleted boolean Whether the transaction has been logically deleted (custodian virtualStatus of DELETED). Deleted rows are excluded unless deleted=true is passed.
createdDate string (YYYY-MM-DD HH:MM:SS) Record creation timestamp.
updatedDate string (YYYY-MM-DD HH:MM:SS) Record last-updated timestamp.
cashSendConfirmation string Cash send confirmation reference, when applicable.

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "barc_transactions": [
    {
      "id": "BT0001234",
      "method": "ACH",
      "date": "2025-02-12",
      "name": "John Investor",
      "amountCents": 150000,
      "type": "Credit",
      "subtype": "MMF - Purchase",
      "brokerageAccountId": "1042",
      "notes": "",
      "status": "Settled",
      "referenceNumber": "481724317",
      "accountId": "A07545866",
      "settledDate": "2025-02-14",
      "checkNumber": "",
      "deleted": false,
      "createdDate": "2025-02-12 17:11:17",
      "updatedDate": "2025-02-14 06:00:02",
      "cashSendConfirmation": ""
    }
  ],
  "pagination": {
    "totalRecords": 1,
    "startIndex": 0,
    "endIndex": 0
  }
}

GET /v3/custody/accounts

This endpoint retrieves a paginated list of custody account records owned by the authenticated client. Each record represents the custody (custodial account request) state for a TAPI account. It supports pagination and filtering.

Permissions

This method requires the scope custody_account.read to be granted to the calling API key; a key without it receives 403 permission denied. Custody account records are PII-high: unless the key holds the pii_high level for this scope, PII fields are redacted from the response rather than the request being denied.

Authorization

All requests require clientID and developerAPIKey parameters for authentication. Only custody accounts owned by the authenticated client's API keys are returned.

Query Parameters

Parameter Type Default Description
offset integer 0 The row index at which to begin the query. Zero represents the first record in the list.
limit integer 10 The maximum number of records to return. Max value is 500.
deleted boolean false Include deleted records in the response.
filter string (JSON) Filter results by specific fields (full-equality only).

Response Fields

The custody_accounts array contains one entry per custody account.

Field Type Description
accountId string TAPI Account ID (e.g. A00000003) the custody record belongs to.
requestId string Custodial account request ID (custAccRequestID).
status string Custody account request status. One of Pending, Need More Info, Approved, Rejected, New Info Added.
relationship string | null Nature of the relationship (natureOfRelationship); null when not set.
restrictedStatus string Whether the account is restricted. One of Yes, No.
restrictedReason string | null Reason the account is restricted. One of Missing Data, Acceptance of Terms, KYC/AML, Suitability, or null when not restricted.
principalReviewBy string Principal who reviewed the request (custprincipalReviewedBy); empty string when none.
approvalDate string Date and timestamp the request was approved (custApprovalDate).
notes string Free-text notes on the custody account.
createdDate string Date and timestamp the record was created.
updatedDate string Date and timestamp the record was last updated.

Pagination

Field Type Description
totalRecords integer Total number of matching records.
startIndex integer Zero-based index of the first record returned.
endIndex integer Zero-based index of the last record returned.

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "custody_accounts": [
    {
      "accountId": "A00000003",
      "requestId": "1BIBe0V",
      "status": "Approved",
      "relationship": null,
      "restrictedStatus": "No",
      "restrictedReason": null,
      "principalReviewBy": "",
      "approvalDate": "2025-02-12 17:11:18",
      "notes": "",
      "createdDate": "2025-02-12 17:11:17",
      "updatedDate": "2025-02-12 17:11:18"
    }
  ],
  "pagination": {
    "totalRecords": 1001,
    "startIndex": 0,
    "endIndex": 0
  }
}

GET /v3/custody/accounts/{id}

This endpoint retrieves a single custody account record by its TAPI Account ID. The response object uses the same fields as the list endpoint, returned under the custody_account key. Returns a 404 if no matching custody account is found for the authenticated client.

Permissions

This method requires the scope custody_account.read to be granted to the calling API key; a key without it receives 403 permission denied. Custody account records are PII-high: unless the key holds the pii_high level for this scope, PII fields are redacted from the response rather than the request being denied.

Authorization

All requests require clientID and developerAPIKey parameters for authentication. The account must be owned by one of the authenticated client's API keys.

Path Parameters

Parameter Type Required Description
id string Yes TAPI Account ID (e.g. A00000003) of the custody account to retrieve.

Response Fields

Field Type Description
accountId string TAPI Account ID the custody record belongs to.
requestId string Custodial account request ID (custAccRequestID).
status string Custody account request status. One of Pending, Need More Info, Approved, Rejected, New Info Added.
relationship string | null Nature of the relationship (natureOfRelationship); null when not set.
restrictedStatus string Whether the account is restricted. One of Yes, No.
restrictedReason string | null Reason the account is restricted. One of Missing Data, Acceptance of Terms, KYC/AML, Suitability, or null when not restricted.
principalReviewBy string Principal who reviewed the request (custprincipalReviewedBy); empty string when none.
approvalDate string Date and timestamp the request was approved (custApprovalDate).
notes string Free-text notes on the custody account.
createdDate string Date and timestamp the record was created.
updatedDate string Date and timestamp the record was last updated.

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "custody_account": {
    "accountId": "A00000003",
    "requestId": "1BIBe0V",
    "status": "Approved",
    "relationship": null,
    "restrictedStatus": "No",
    "restrictedReason": null,
    "principalReviewBy": "",
    "approvalDate": "2025-02-12 17:11:18",
    "notes": "",
    "createdDate": "2025-02-12 17:11:17",
    "updatedDate": "2025-02-12 17:11:18"
  }
}

GET /v3/custody/positions

Fetch the aggregated security positions across every custody account owned by the authenticated client. The endpoint collects all custodial accounts belonging to the client's API keys, resolves them to their brokerage accounts, and returns one aggregated row per security where units is the net of all credit and debit security transactions across those accounts.

Permissions

This method requires the scope custody_account.read to be granted to the calling API key. The scope can be assigned by system admins through the API or Transact Portal.

Authorization

All requests require clientID and developerAPIKey parameters for authentication. Only custody accounts owned by the authenticated client's API keys are included.

Response Fields

The positions array contains one entry per security held across the client's custody accounts.

Field Type Description
id string Security identifier (CUSIP or symbol) of the held security.
date string Date (YYYY-MM-DD) of the most recent security transaction for this security.
units string Net number of units held: the sum of credit transaction units minus debit transaction units.

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "positions": [
    {
      "id": "02587DM96",
      "date": "2019-03-20",
      "units": "27"
    },
    {
      "id": "40434YGR2",
      "date": "2019-03-21",
      "units": "1"
    },
    {
      "id": "38148JA92",
      "date": "2019-03-22",
      "units": "1"
    },
    {
      "id": "DELL12",
      "date": "2019-03-20",
      "units": "10"
    }
  ]
}

GET /v3/custody/distributions

This endpoint retrieves a paginated list of custody distribution records. A distribution represents a fund movement out of a brokerage (custody) account to either a linked external bank account or to explicit banking details. Records are returned newest-first (ordered by creation time descending). It supports pagination and filtering.

Permissions

This method requires the scope custody_distribution.read to be granted to the calling API key; a key without it receives 403 permission denied. Distribution records are PII-high: unless the key holds the pii_high level for this scope, PII fields are redacted from the response rather than the request being denied. Creating distributions via the POST /v3/custody/distributions counterpart requires the custody_distribution.write scope. These scopes can be assigned by system admins through the API or Transact Portal.

Authorization

All requests require clientID and developerAPIKey parameters for authentication. The response includes only custody distributions owned by the authenticated client.

Query Parameters

Parameter Type Default Description
offset integer 0 The row index at which to begin the query. Zero represents the first record in the list.
limit integer 10 The maximum number of records to return. Max value is 500.
filter string (JSON) Filter results by specific fields (full-equality only).

Response Fields

The custody_distributions array contains one entry per distribution.

Field Type Description
id string (UUID) Unique distribution identifier.
submissionId string (UUID) Identifier shared by all distributions created in the same submission batch.
clientId string Client identifier that owns the distribution (PII; redacted without pii_high).
brokerageAccountId string Brokerage (custody) account the funds are distributed from.
amountCents integer Distribution amount in cents.
status string Distribution status. One of pending, processing, on_hold, approved, rejected, scheduled, in_review, completed, terminated, failed, reopened.
accountId string | null TAPI Account ID whose linked external bank account receives the funds (mutually exclusive with bankId/bankAccountId).
bankId string | null Bank/routing identifier when distributing to explicit banking details.
bankAccountId string | null Bank account identifier when distributing to explicit banking details.
transactionType string | null Transfer rail. One of ach, wire.
transactionMemo string | null Free-text memo for the transaction.
createdAt string (datetime) Timestamp the distribution was created.
updatedAt string (datetime) Timestamp the distribution was last updated.

Pagination

Field Type Description
totalRecords integer Total number of matching records.
startIndex integer Zero-based index of the first record returned.
endIndex integer Zero-based index of the last record returned.

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "custody_distributions": [
    {
      "id": "a1b2c3d4-5e6f-4a8b-9c0d-1e2f3a4b5c6d",
      "submissionId": "f0e1d2c3-b4a5-4968-8776-5a4b3c2d1e0f",
      "clientId": "someclientid",
      "brokerageAccountId": "BR000123",
      "amountCents": 25000,
      "status": "pending",
      "accountId": "A00000003",
      "bankId": null,
      "bankAccountId": null,
      "transactionType": "ach",
      "transactionMemo": "Quarterly distribution",
      "createdAt": "2025-02-12 17:11:17",
      "updatedAt": "2025-02-12 17:11:18"
    }
  ],
  "pagination": {
    "totalRecords": 100,
    "startIndex": 0,
    "endIndex": 0
  }
}

POST /v3/getCustodyAccountRequest

This method returns the current status of a custodial account request for the supplied TAPI account.

Parameters

Parameter Type Required Description
accountId string Yes Account ID that is generated by the API once an account is created (createAccount)

Example Request

curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getCustodyAccountRequest
-d clientID=someclientid
-d developerAPIKey=somedeveloperkey
-d accountId=A12716

Response

Field Type Description
custodialAccountDetails array Array of custodial account request records (one element). See fields below.

Response Fields

Field Type Description
accountId string TAPI Account ID the request belongs to.
custAccStatus string Custodial account request status. One of Pending, Need More Info, Approved, Rejected, New Info Added.
accountStatus string Custody account lifecycle status. One of Pending, Open, Closed.
custAccRequestID string Custodial account request ID.
restrictedStatus string Whether the account is restricted. One of Yes, No.
reasonForStatus string | null Reason the account is restricted. One of Missing Data, Acceptance of Terms, KYC/AML, Suitability, or null when not restricted.
createdDate string Date and timestamp the request was created.
approvalStatus string Approval status of the underlying TAPI account (from transact_account).

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "custodialAccountDetails": [
    {
      "accountId": "A3177046",
      "custAccStatus": "Pending",
      "accountStatus": "Pending",
      "custAccRequestID": "ROE6ovs",
      "restrictedStatus": "No",
      "reasonForStatus": null,
      "createdDate": "2025-01-03 21:07:24",
      "approvalStatus": "Approved"
    }
  ]
}

POST /v3/getCustodialDocuments

This method returns the statements and tax forms generated for a North Capital Private Securities custodial account. Each document URL is a short-lived presigned link (valid for approximately 5 minutes).

Parameters

Parameter Type Required Description
accountId string Yes Account ID that is generated by the API once an account is created (createAccount)

Example Request

curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getCustodialDocuments
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d accountId=accountId

Response

Field Type Description
accountDetails array Array of available documents for the account. See fields below.

Response Fields

Field Type Description
Document Type string Document classification. One of Statement, Corrected Statement, Tax Document.
Month string Month the document was generated (1-12). 0 for documents that are not month-specific (e.g. annual tax documents).
Year string Year the document was generated.
StatementURL string Short-lived presigned URL to download the document.

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "accountDetails": [
    {
      "Document Type": "Statement",
      "Month": "4",
      "Year": "2023",
      "StatementURL": "https://prodriaclientrepository.s3.amazonaws.com/...&X-Amz-Signature=..."
    }
  ]
}

POST /v3/getCustodyBalances

This method is used to get the Cash, Securities, and Total account values of a custody account.

Parameters

Parameter Type Required Description
accountId string Yes Account ID that is generated by the API once an account is created (createAccount)

Example Request

curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getCustodyBalances
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d accountId=accountId

Response

Field Type Description
custodyBalances array Array of custody account balances and intents (one entry per account)
Field Type Description
accountId string Account the request is being made against
fundMoveIntents number The total amount of intended deposits (fund movements into the account), in decimal dollars. Deposits that have been registered with the payment processor but have not been submitted to the bank for processing.
disbursementIntents number The total amount of intended withdrawals (disbursements from the account), in decimal dollars. Withdrawals that have been registered with the payment processor but have not been processed nor initiated.
cashAvailableBalance number The available cash balance of all settled transactions in the account, in decimal dollars.
cashTotalBalance number The total cash balance in the account, including any pending transactions, in decimal dollars.
securitiesPosition number The total value of securities held in the account, in decimal dollars.

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "custodyBalances": [
    {
      "accountId": "A50648187",
      "fundMoveIntents": 200000000,
      "disbursementIntents": 1000,
      "cashAvailableBalance": 261266.75,
      "cashTotalBalance": 262290.2,
      "securitiesPosition": 16810
    }
  ]
}

POST /v3/getCustodyCashTransactions

This method returns the paginated cash transaction history (deposits, withdrawals, fees, and other cash activity) for a custody account. Withdrawals/debits are returned as negative amounts. Results are ordered by transaction date, most recent first.

Parameters

Parameter Type Required Description
accountId string Yes Account ID that is generated by the API once an account is created (createAccount)
offset integer No The row index at which to begin the query. Zero represents the first transaction in the list. Defaults to 0.
limit integer No The maximum number of transactions to return. Defaults to 10. Max value is 500.

Example Request

curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getCustodyCashTransactions
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d accountId=accountId
-d offset=0
-d limit=10

Response

Field Type Description
brokerageTransactions array Array of cash transactions. See fields below.
pagination object Pagination metadata.

Response Fields

Each entry in brokerageTransactions:

Field Type Description
id string Brokerage transaction identifier (brokerage_transaction_id).
date string Transaction date (YYYY-MM-DD).
name string Customer / counterparty name on the transaction.
notes string Free-text notes on the transaction.
status string Transaction status (e.g. Pending, Settled).
referenceNumber string Reference number associated with the transaction.
settledDate string Date the transaction settled (YYYY-MM-DD), or 0000-00-00 if not yet settled.
createdDate string Date and timestamp the transaction was created.
updatedDate string Date and timestamp the transaction was last updated.
amount string Signed cash amount; debits (fund_move = Debit) are returned as negative values.

Pagination

Field Type Description
totalRecords integer Total number of matching transactions.
startIndex integer Zero-based index of the first transaction returned.
endIndex integer Zero-based index of the last transaction returned.

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "brokerageTransactions": [
    {
      "id": "CT000021436",
      "date": "2024-10-03",
      "name": "Chelsea Elting",
      "notes": "TEST",
      "status": "Settled",
      "referenceNumber": "339846456",
      "settledDate": "0000-00-00",
      "createdDate": "2024-10-03 18:31:44",
      "updatedDate": "0000-00-00 00:00:00",
      "amount": "100.00"
    },
    {
      "id": "CT000021437",
      "date": "2024-10-03",
      "name": "Chelsea Elting",
      "notes": "TESTING",
      "status": "Settled",
      "referenceNumber": "417184939",
      "settledDate": "0000-00-00",
      "createdDate": "2024-10-03 18:35:57",
      "updatedDate": "0000-00-00 00:00:00",
      "amount": "-5.37"
    }
  ],
  "pagination": {
    "totalRecords": 2,
    "startIndex": 0,
    "endIndex": 1
  }
}

POST /v3/getCustodyFundMove

Get information about a custody fund move intent (deposit)

Parameters

Parameter Type Required Description
referenceNumber string Yes Reference Number that is generated by the API once fund move is completed (fundCustodyAccount)

Example Request

curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getCustodyFundMove
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d accountId=accountId
-d referenceNumber=somereferencenumber

Response

Field Type Description
custodyTransaction object The fund move transaction. See fields below.

Response Fields

Field Type Description
accountId string TAPI Account ID the fund move belongs to.
bankName string | null Name of the external bank, when available.
amount string Amount of the fund move (decimal string).
accountNumber string External bank account number (decoded). Empty string when not exposed.
routingNumber string External bank routing number (decoded).
accountName string Name on the external bank account.
referenceNumber string API-generated reference number identifying this fund move.
description string Description provided on the request.
approvalStatus string Internal approval state.
status string Fund move (fundStatus) state. One of Pending, Submitted, Settled, Returned, Voided, Declined.
routingNumberStatus string Routing number verification result (e.g. Verified).
errors string Error detail associated with the transaction; empty string when none.
createdDate string Date and timestamp the fund move was created.
updatedDate string Date and timestamp the fund move was last updated.

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "custodyTransaction": {
    "accountId": "A3110006",
    "bankName": null,
    "amount": "7.000000",
    "accountNumber": "",
    "routingNumber": "011001726",
    "accountName": "",
    "referenceNumber": "339846456",
    "description": "",
    "approvalStatus": "approved",
    "status": "Pending",
    "routingNumberStatus": "Verified",
    "errors": "",
    "createdDate": "2024-12-10 22:49:06",
    "updatedDate": "2024-12-10 22:49:06"
  }
}

POST /v3/getCustodyFundMoves

Get the list of custody fund move intents for a given custody account

Parameters

Parameter Type Required Description
accountId string No Account ID that is generated by the API once an account is created (createAccount)

Example Request

curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getCustodyFundMoves
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d accountId=accountId

Response

Field Type Description
custodyTransactions array Array of fund move transactions. Each entry carries the same fields as the custodyTransaction object returned by getCustodyFundMove.
pagination object Pagination metadata.

Pagination

Field Type Description
totalRecords integer Total number of matching fund moves.
startIndex integer Zero-based index of the first fund move returned.
endIndex integer Zero-based index of the last fund move returned.

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "custodyTransactions": [
    {
      "accountId": "A3110006",
      "bankName": null,
      "amount": "7.000000",
      "accountNumber": "",
      "routingNumber": "011001726",
      "accountName": "",
      "referenceNumber": "339846456",
      "description": "",
      "approvalStatus": "approved",
      "status": "Pending",
      "routingNumberStatus": "Verified",
      "errors": "",
      "createdDate": "2024-12-10 22:49:06",
      "updatedDate": "2024-12-10 22:49:06"
    },
    {
      "accountId": "A3110006",
      "bankName": null,
      "amount": "0.000000",
      "accountNumber": "",
      "routingNumber": "011001726",
      "accountName": "",
      "referenceNumber": "417184939",
      "description": "",
      "approvalStatus": "approved",
      "status": "Pending",
      "routingNumberStatus": "Verified",
      "errors": "",
      "createdDate": "2024-12-03 21:56:24",
      "updatedDate": "2024-12-03 21:56:24"
    },
    {
      "accountId": "A3110006",
      "bankName": null,
      "amount": "0.000000",
      "accountNumber": "",
      "routingNumber": "011001726",
      "accountName": "",
      "referenceNumber": "916079744",
      "description": "",
      "approvalStatus": "approved",
      "status": "Pending",
      "routingNumberStatus": "Verified",
      "errors": "",
      "createdDate": "2024-12-03 21:47:21",
      "updatedDate": "2024-12-03 21:47:21"
    },
    {
      "accountId": "A3110006",
      "bankName": null,
      "amount": "100.000000",
      "accountNumber": "MTExMTIyMjIzMzMzMDAwMA==",
      "routingNumber": "MDExMDAxNzI2",
      "accountName": "Chelsea Elting",
      "referenceNumber": "879361244",
      "description": "",
      "approvalStatus": "approved",
      "status": "SETTLED",
      "routingNumberStatus": "Verified",
      "errors": "",
      "createdDate": "2024-11-26 17:06:53",
      "updatedDate": "2024-12-03 21:09:38"
    },
    {
      "accountId": "A3110006",
      "bankName": null,
      "amount": "51.250000",
      "accountNumber": "MTExMTIyMjIzMzMzMDAwMA==",
      "routingNumber": "MDExMDAxNzI2",
      "accountName": "Chelsea Elting",
      "referenceNumber": "520284442",
      "description": "investment in ABC",
      "approvalStatus": "approved",
      "status": "Voided",
      "routingNumberStatus": "Verified",
      "errors": "",
      "createdDate": "2024-10-18 19:13:16",
      "updatedDate": "2024-11-04 23:21:17"
    }
  ],
  "pagination": {
    "totalRecords": 5,
    "startIndex": 0,
    "endIndex": 4
  }
}

POST /v3/getCustodyFundsDisbursement

This method is used to get the current Fund Move Status for Custody fund moves.

Parameters

Parameter Type Required Description
filter string No filter by parameters such as {"requestId":"",accountId":""}
offset integer No The row index at which to begin the query. Zero represents the first record in the list. Defaults to 0.
limit integer No The maximum number of records to return. Defaults to 10.

Example Request

curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getCustodyFundsDisbursement
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid

Response

Field Type Description
custodyFundDisbursements array Array of disbursement requests. See fields below.
pagination object Pagination metadata.

Response Fields

Field Type Description
requestId string (UUID) Unique disbursement request identifier.
accountId string TAPI Account ID the disbursement is drawn from.
amount string Disbursement amount, with two decimal places.
type string Transfer type. One of ach, wire_domestic, wire_international.
bankId string | null Destination bank/routing identifier (wire transfers); empty or null for ACH.
bankAccountId string | null Destination bank account identifier (wire transfers); empty or null for ACH.
additionalDetails string | null Additional instructions provided on the request.
status string Disbursement status. One of pending, processing, on_hold, approved, rejected, scheduled, in_review, completed, terminated, failed, reopened.
createdDate string Date and timestamp the disbursement was created.
updatedDate string Date and timestamp the disbursement was last updated.

Pagination

Field Type Description
totalRecords integer Total number of matching records.
startIndex integer Zero-based index of the first record returned.
endIndex integer Zero-based index of the last record returned.

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "custodyFundDisbursements": [
    {
      "requestId": "baca4059-e3af-43a4-a86b-4838c91be975",
      "accountId": "A98780730",
      "amount": "20.20",
      "type": "wire_domestic",
      "bankId": "122100024",
      "bankAccountId": "12345688",
      "additionalDetails": "",
      "status": "pending",
      "createdDate": "2024-11-26 20:51:40",
      "updatedDate": "2024-11-26 20:52:43"
    },
    {
      "requestId": "953cfa35-37c2-4360-b2ed-78db9fb8b331",
      "accountId": "A98780730",
      "amount": "20.20",
      "type": "ach",
      "bankId": "",
      "bankAccountId": "",
      "additionalDetails": "",
      "status": "pending",
      "createdDate": "2024-11-26 17:23:05",
      "updatedDate": "2024-11-26 17:23:05"
    },
    {
      "requestId": "002717a3-a612-4e94-b517-3f4dbd79b523",
      "accountId": "A98780730",
      "amount": "20.20",
      "type": "ach",
      "bankId": "",
      "bankAccountId": "",
      "additionalDetails": "test",
      "status": "pending",
      "createdDate": "2024-11-26 15:45:51",
      "updatedDate": "2024-11-26 15:45:51"
    }
  ],
  "pagination": {
    "totalRecords": 3,
    "startIndex": 0,
    "endIndex": 2
  }
}

POST /v3/updateCustodialAccountRequest

This method is used to update the status of an existing custody account request (requestCustodyAccount) when new information has been added. You must update the status to "New Info Added" in order to initiate a re-review of the account.

Parameters

Parameter Type Required Description
custAccRequestID string Yes Request ID Generated by the createCustodyAccountRequest method
custAccRequestStatus string Yes Custody Account status. One of Pending, New Info Added. Set to New Info Added to initiate a re-review of the account.
notes string No Notes
updatedIpAddress string No IP Address associated with the updateCustodialAccountRequest method call

Example Request

curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/updateCustodialAccountRequest
-d clientID=someclientid
-d developerAPIKey=somedeveloperkey
-d custAccRequestID=hut67yt
-d custAccRequestStatus=New Info Added
-d notes=Need Info
-d updatedIpAddress=10.0.0.1

Response

Field Type Description
custodialAccountDetails array Array of custodial account request records (one element)

Response Fields

Field Type Description
accountId string TAPI Account ID the request belongs to.
custAccStatus string Custodial account request status after the update.
accountStatus string Custody account lifecycle status. One of Pending, Open, Closed.
custAccRequestID string Custodial account request ID.
createdDate string Date and timestamp the request was created.

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "custodialAccountDetails": [
    {
      "accountId": "A43969",
      "custAccStatus": "New Info Added",
      "accountStatus": "Pending",
      "custAccRequestID": "ttsUaKo",
      "createdDate": "2018-10-06 07:24:52"
    }
  ]
}

POST /v3/updateCustodyFundMove

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
referenceNumber string Yes Reference Number that is generated by the API once an fund custodial Account is initiated ( createCustodyFundMove )
status string Yes Set value to "void" to update the pending ACH transaction. 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.

Example Request

curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/updateCustodyFundMove
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d referenceNumber=313889266
-d status=void

Response

Field Type Description
custodyTransaction object Custody transaction details

Example Response

{
  "statusCode": "101",
  "statusDesc": "Ok",
  "custodyTransaction": {
    "accountId": "A3110006",
    "bankName": null,
    "amount": "7.000000",
    "accountNumber": "",
    "routingNumber": "011001726",
    "accountName": "",
    "referenceNumber": "339846456",
    "description": "",
    "approvalStatus": "approved",
    "status": "void",
    "routingNumberStatus": "Verified",
    "errors": "",
    "createdDate": "2024-12-10 22:49:06",
    "updatedDate": "2024-12-10 23:20:06"
  }
}

POST /v3/updateCustodyPartySupplement

This method is used to update the additional fields that may be required in order to open a custodial account through North Capital Private Securities.

Parameters

Parameter Type Required Description
partyId string Yes Party ID that is generated by the API once a party is created (createParty)
relationship string No The party's relationship to the account owner. Put "owner" if this is the account owner.
salutation string No The party's title. Enum: Mr., Mrs., Ms., Dr. Deprecated aliases: 1 (Mr.), 2 (Mrs.), 3 (Ms.), 4 (Dr.). The field is not validated, so any other value is stored as sent.
countryOfCitizenship string No Party's country of citizenship.
authorizedSigner string No Is this party the authorized signer for the account? Enum (case-insensitive): Yes, No. Deprecated aliases: 1 (Yes), 2 (No). Any other value stores an empty string.
controlPerson string No Is this party a control person for the account? Enum (case-insensitive): Yes, No. Deprecated aliases: 1 (Yes), 2 (No). Any other value stores an empty string.
politicallyExposedPerson string No Is this person considered a politically exposed person? Enum (case-insensitive): Yes, No. Deprecated aliases: 1 (Yes), 2 (No). Any other value stores an empty string.
politicallyExposedPersonDetails string No If the person selects "Yes" that they are a politically exposed person, then this field is required. Please provide the details of the politically exposed person.
beneficiaryType string No The beneficiary type, if this party is a beneficiary for the account. Enum: Spouse, Non-Spouse, Trust/Entity. Deprecated aliases: 1 (Spouse), 2 (Non-Spouse), 3 (Trust/Entity). The field is not validated, so any other value is stored as sent.
beneficiaryPercentage string No If this party is a beneficiary for the account, please provide the percentage. Stored as sent and not validated.
mailingAddressLine1 string No Mailing Address Line 1
mailingAddressLine2 string No Mailing Address Line 2
mailingCity string No Mailing Address City
mailingState string No Mailing Address State
mailingZipCode string No Mailing Address Zip Code
mailingCountry string No Mailing Address Country
publicCompany string No Is this party associated with a public company? Enum (case-insensitive, stored lowercase): Yes, No. Deprecated aliases: 1 (Yes), 2 (No). Any other value stores an empty string.
companyTicker string No Company Ticker if the party is associated with a public company
associatedFirm string No If the party is associated with a broker dealer, please indicate the name of the Associated Firm
createdIpAddress string No IP address recorded against the record

Example Request

curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/updateCustodyPartySupplement
-d clientID=someclientid
-d developerAPIKey=somedeveloperKey
-d partyId=somepartyid
-d relationship=owner
-d salutation=Mr
-d countryOfCitizenship=citizenship
-d authorizedSigner=yes
-d controlPerson=yes
-d politicallyExposedPerson=yes
-d politicallyExposedPersonDetails=some details
-d beneficiaryType=Spouse
-d beneficiaryPercentage=100
-d mailingAddressLine1=address1
-d mailingAddressLine2=address2
-d mailingCity=city
-d mailingState=state
-d mailingZipCode=54321
-d mailingCountry=US
-d publicCompany=yes
-d companyTicker=test
-d associatedFirm=test

Response

Field Type Description
party details object The identifiers of the updated record

Fields omitted from the request keep their stored values. If the party has no supplement record, the response is statusCode 200 with Error(s) set to This partyId is not added in addCustodyPartySupplement. — the error text names the deprecated alias addCustodyPartySupplement, not the current endpoint.

Example Response

{
  "statusCode": "101",
  "statusDesc": "Party updated successfully.",
  "party details": {
    "clientID": "someclientid",
    "developerAPIKey": "XXXXXXXXXXXXXXX",
    "partyId": "P43256"
  }
}

POST /v3/getCustodyPartySupplement

This method is used to retrieve the additional fields stored for a party through createCustodyPartySupplement.

Parameters

Parameter Type Required Description
partyId string Yes Party ID that is generated by the API once a party is created (createParty)

Example Request

curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getCustodyPartySupplement
-d clientID=someclientid
-d developerAPIKey=somedeveloperKey
-d partyId=somepartyid

Response

Field Type Description
party details object The stored party details

The response carries the stored values for every field accepted by createCustodyPartySupplement, plus partyType (Individual or Entity). salutation is returned as primappTitle. developerAPIKey is masked.

Example Response

{
  "statusCode": "200",
  "statusDesc": "Ok",
  "party details": {
    "clientID": "someclientid",
    "developerAPIKey": "XXXXXXXXXXXXXXX",
    "partyId": "P2726935",
    "partyType": "Individual",
    "primappTitle": "Mr.",
    "relationship": "owner",
    "countryOfCitizenship": "usa",
    "authorizedSigner": "Yes",
    "controlPerson": "No",
    "politicallyExposedPerson": "No",
    "politicallyExposedPersonDetails": "",
    "beneficiaryType": "Spouse",
    "beneficiaryPercentage": "100",
    "mailingAddressLine1": "123 Testing Way",
    "mailingAddressLine2": "",
    "mailingCity": "Orem",
    "mailingState": "UT",
    "mailingZipCode": "84097",
    "mailingCountry": "usa",
    "publicCompany": "no",
    "companyTicker": "",
    "associatedFirm": ""
  }
}

If the party has no supplement record, the response is statusCode 200 with Error(s) set to This partyId is not added in addCustodyPartySupplement. — the error text names the deprecated alias addCustodyPartySupplement, not the current endpoint.


POST /v3/deleteCustodyPartySupplement

This method is used to delete the additional fields stored for a party. The record is soft deleted and a new supplement can be created for the same party afterwards.

Parameters

Parameter Type Required Description
partyId string Yes Party ID that is generated by the API once a party is created (createParty)
createdIpAddress string No IP address recorded against the deletion

Example Request

curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/deleteCustodyPartySupplement
-d clientID=someclientid
-d developerAPIKey=somedeveloperKey
-d partyId=somepartyid

Response

Field Type Description
party details object The identifiers of the deleted record

Example Response

{
  "statusCode": "101",
  "statusDesc": "Party deleted successfully.",
  "party details": {
    "clientID": "someclientid",
    "developerAPIKey": "XXXXXXXXXXXXXXX",
    "partyId": "P43256"
  }
}

Deleting a record that is already deleted returns statusCode 200 with Error(s) set to Party already deleted. If the party never had a supplement record, the response is statusCode 200 with Error(s) set to This partyId is not added in addCustodyPartySupplement. — the error text names the deprecated alias, not the current endpoint.