KYC / AML¶
All requests require clientID and developerAPIKey parameters for authentication.
Base URL: https://api-sandboxdash.norcapsecurities.com
Endpoints¶
POST /v3/deleteKycAmlPOST /v3/getKycAmlPOST /v3/getKycAmlResponsePOST /v3/performAmlPOST /v3/performKycAmlPOST /v3/performKycAmlBasicPOST /v3/requestKycAmlPUT /v3/updateKycAmlPOST /v3/updateKycAmlStatus
POST /v3/deleteKycAml¶
This method is used to delete KYC/AML details of a particular party from Transact API. The delete is a virtual delete. You will need to specify the Party ID as a request parameter to delete the details.
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
partyId | string | Yes | Party ID that is generated by the API when an individual party is created (createParty) |
Example Request¶
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/deleteKycAml
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d partyId=P12679
Response¶
Example Response¶
POST /v3/getKycAml¶
This method returns the current KYC and AML review status for a single party. Pass the Party ID (individual party) or Entity ID as a request parameter. The response reflects the latest status values stored on the party record; it does not re-run any verification.
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
partyId | string | Yes | Party ID (individual, e.g. P12345) or Entity ID (e.g. E12345) generated by the API when the party or entity was created (createParty / createEntity) |
Example Request¶
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getKycAml
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d partyId=P12345
Response¶
| Field | Type | Description |
|---|---|---|
statusCode | string | 101 on success |
statusDesc | string | Ok on success |
KYC Status | string | Current KYC review status of the party, echoed as stored on the party record. Typical values: Pending, Auto Approved, Disapproved, Manually Approved, Needs More Info, New Info Added |
Party Status | object | AML status detail for the party (see below) |
Party Status.PartyID | string | The Party ID or Entity ID echoed from the request |
Party Status.AML status | string | Current AML review status of the party, echoed as stored on the party record. Typical values: Pending, Auto Approved, Disapproved, Manually Approved, Needs More Info, New Info Added |
Party Status.AML date | string | Date the AML status was last set, formatted MM-DD-YYYY |
Example Response¶
{
"statusCode": "101",
"statusDesc": "Ok",
"KYC Status": "Disapproved",
"Party Status": {
"PartyID": "P41331",
"AML status": "Auto Approved",
"AML date": "08-06-2018"
}
}
POST /v3/getKycAmlResponse¶
This method is used to get all information about an individual Party. The Party ID and type must be specified as a request parameter to get the party KYC AML information.
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
partyId | string | Yes | Party ID that is generated by the API once an individual party is created (createParty). |
type | string | Yes | Type (This will be either Basic, Enhanced or AML Only) |
Example Request¶
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/getKycAmlResponse
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d partyId=P79443
-d type=basic
Response¶
| Field | Type | Description |
|---|---|---|
kycamlDetails | object | Most recent stored KYC/AML response for the matched party and type |
createdAt | string | Timestamp the stored KYC/AML response was created; null when not recorded |
Example Response¶
{
"statusCode": "101",
"statusDesc": "Ok",
"createdAt": "2023-06-14 09:21:47",
"kycamlDetails": {
"statusCode": "101",
"statusDesc": "Ok",
"kyc": {
"response": {
"id-number": "3429150818",
"summary-result": {
"key": "id.success",
"message": "PASS"
},
"results": {
"key": "result.match",
"message": "ID Located"
},
"qualifiers": {
"qualifier": {
"key": "resultcode.zip.does.not.match",
"message": "ZIP Code Does Not Match"
}
},
"idnotescore": "0"
},
"kycstatus": "Auto Approved",
"amlstatus": "Auto Approved"
}
}
}
POST /v3/performAml¶
* This Method has third party fees associated with it that will be charged for each use. The cost to use this method is $0.15 each time the method is invoked. (Only applies in live API environment. Does not apply in the Sandbox Environment) *** Perform AML(Anti-Money Laundering) Checks for Entity Parties(createEntity).
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
partyId | string | Yes | Party ID or Entity ID that is generated by the API when an individual party or entity party is created (createParty / createEntity). |
Example Request¶
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/performAml
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d partyId=E12345
Response¶
| Field | Type | Description |
|---|---|---|
partyDetails | object | AML result detail (see below) |
partyDetails.response | object | Raw AML watch-list response from the verification provider |
partyDetails.amlStatus | string | Resulting AML status: Auto Approved (no watch-list match) or Disapproved (watch-list match) |
Example Response¶
{
"statusCode": "101",
"statusDesc": "Ok",
"partyDetails": {
"response": {
"id-number": "2180907751",
"restriction": {
"key": "global.watch.list.no.match",
"message": "Patriot Act - No Match"
}
},
"amlStatus": "Auto Approved"
}
}
POST /v3/performKycAml¶
* This Method has third party fees associated with it that will be charged for each use. The cost to use this method is $2.00 each time the method is invoked. (Only applies in live API environment. Does not apply in the Sandbox Environment) *** This method is used to perform KYC(Know Your Customer) checks and AML(Anti-Money Laundering) checks for Individual Parties Contact techsupport@northcapital.com to get instructions on how to test KYC/AML in our sandbox environment.
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
partyId | string | Yes | Party ID (e.g. P12345) generated by the API when an individual party is created (createParty), or Entity ID (e.g. E12345) generated when an entity is created (createEntity) |
Example Request¶
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/performKycAml
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d partyId=P12345
Response¶
The response shape depends on the party type.
For individual parties (created via createParty):
| Field | Type | Description |
|---|---|---|
kyc | object | KYC/AML result: raw provider response (including verification questions), plus resulting kycstatus and amlstatus |
For entity parties (created via createEntity, i.e. the party record carries an EIN), the kyc field is not returned. Instead:
| Field | Type | Description |
|---|---|---|
AML SCORE | object or integer | {"OFAC": "<watch-list score>"} when a watch-list score is returned; 0 when no score is available |
Example Response (individual party)¶
{
"statusCode": "101",
"statusDesc": "Ok",
"kyc": {
"response": {
"id-number": "3028167143",
"summary-result": {
"key": "id.success",
"message": "PASS"
},
"results": {
"key": "result.match",
"message": "ID Located"
},
"qualifiers": {
"qualifier": [
{
"key": "resultcode.address.does.not.match",
"message": "Address Does Not Match"
},
{
"key": "resultcode.street.number.does.not.match",
"message": "Street Number Does Not Match"
}
]
},
"idnotescore": "0",
"questions": {
"question": [
{
"prompt": "Between 1979 and 1980, in which State did you live?",
"type": "prior.residence.state.multiyear",
"answer": [
"NORTH DAKOTA",
"NEW YORK",
"NEBRASKA",
"None of the above"
]
},
{
"prompt": "What is the approximate square footage of the property at 222333 PEACHTREE PLACE?",
"type": "property.size",
"answer": [
"1,000 or less",
"1,001 - 1,500",
"1,501 - 2,000",
"2,001 - 2,500",
"Over 2,500",
"None of the above"
]
},
{
"prompt": "Which person is not a relative or someone that you know?",
"type": "person.not.known",
"answer": [
"SUSAN BROWN",
"PORTER SMITH",
"DAVID BROWN",
"None of the above"
]
},
{
"prompt": "At which of the following addresses have you lived?",
"type": "previous.address",
"answer": [
"3 CRESSING CT",
"4344 BACKTRAIL DR",
"1084 BPEACHTREE CT",
"None of the above"
]
},
{
"prompt": "In which city is ANY STREET?",
"type": "city.of.residence",
"answer": [
"ALMO",
"ATLANTA",
"MINOT",
"None of the above"
]
}
]
}
},
"kycstatus": "Auto Approved",
"amlstatus": "Auto Approved"
}
}
Example Response (entity party)¶
POST /v3/performKycAmlBasic¶
* This Method has third party fees associated with it that will be charged for each use. The cost to use this method is $0.85 each time the method is invoked. (Only applies in live API environment. Does not apply in the Sandbox Environment) *** This method is used to perform KYC(Know Your Customer) checks and AML(Anti-Money Laundering) checks for Individual Parties Contact techsupport@northcapital.com to get instructions on how to test KYC/AML in our sandbox environment.
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
partyId | string | Yes | Party ID that is generated by the API when an individual party is created(createParty) |
Example Request¶
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/performKycAmlBasic
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d partyId=P12345
Response¶
The response shape depends on the party type.
For individual parties (created via createParty):
| Field | Type | Description |
|---|---|---|
kyc | object | KYC/AML result: raw provider response, plus resulting kycstatus and amlstatus |
For entity parties (created via createEntity, i.e. the party record carries an EIN), the kyc field is not returned. Instead:
| Field | Type | Description |
|---|---|---|
AML SCORE | object or integer | {"OFAC": "<watch-list score>"} when a watch-list score is returned; 0 when no score is available |
Example Response (individual party)¶
{
"statusCode": "101",
"statusDesc": "Ok",
"kyc": {
"response": {
"id-number": "3298151570",
"summary-result": {
"key": "id.success",
"message": "PASS"
},
"results": {
"key": "result.match",
"message": "ID Located"
},
"qualifiers": {
"qualifier": [
{
"key": "resultcode.address.does.not.match",
"message": "Address Does Not Match"
},
{
"key": "resultcode.street.number.does.not.match",
"message": "Street Number Does Not Match"
}
]
},
"idnotescore": "0"
},
"kycstatus": "Auto Approved",
"amlstatus": "Auto Approved"
}
}
POST /v3/requestKycAml¶
*** This Method has fees associated with it that will be charged for each use. The cost to use this method is $25 each time the method is invoked on an individual party and $100 per level of entity verification. (Only applies in live API environment. Does not apply in the Sandbox Environment) *** This method is used to request that KYC & AML be manually verified. Can only be called once per Party ID. Please also see updateKycAmlStatus.
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
investorId | string | Yes | Party ID (e.g. P45698), Entity ID (e.g. E25874) or Account ID (e.g. A69854) generated by the API |
Example Request¶
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/requestKycAml
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d investorId=P12345
Response¶
| Field | Type | Description |
|---|---|---|
requestDetails | array | Array containing a single object with the investorId and the generated requestId |
Example Response¶
{
"statusCode": "101",
"statusDesc": "Ok",
"requestDetails": [
{
"investorId": "P12345",
"requestId": "9845687"
}
]
}
PUT /v3/updateKycAml¶
* This Method has third party fees associated with it that will be charged for each use. The cost to use this method is $1.02 each time the method is invoked. (Only applies in live API environment. Does not apply in the Sandbox Environment) *** This method is used to verify the KYC(Know Your Customer) Status, after the 'performKycAml' autocheck is done. This method will generate 5 followup questions which the user has 600 seconds to answer 3 out of the 5 correctly to pass.
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
partyId | string | Yes | Party ID that is generated by the API when an individual party is created (createParty) |
noOfqns | integer | Yes | Number of Questions |
idNumber | integer | Yes | ID Number generated when performKycAml is performed. |
type1 | string | Yes | First KYC Question (Generated by the third party provider) |
qns1 | string | Yes | First KYC Answer (Generated by the third party provider) |
type2 | string | Yes | Second KYC Question (Generated by the third party provider) |
qns2 | string | Yes | Second KYC Answer (Generated by the third party provider) |
type3 | string | Yes | Third KYC Question (Generated by the third party provider) |
qns3 | string | Yes | Third KYC Answer (Generated by the third party provider) |
type4 | string | Yes | Fourth KYC Question (Generated by the third party provider) |
qns4 | string | Yes | Fourth KYC Answer (Generated by the third party provider) |
type5 | string | Yes | Fifth KYC Question (Generated by the third party provider) |
qns5 | string | Yes | Fifth KYC Answer (Generated by the third party provider) |
Example Request¶
curl -k -X PUT https://api-sandboxdash.norcapsecurities.com/v3/updateKycAml
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d partyId=48587
-d noOfqns=5
-d idNumber=23265625
-d type1=current.county.b
-d qns1=ATLANTA
-d type2=city.of.residence
-d qns2=December 2006
-d type3=previous.address
-d qns3=2005
-d type4=alternate.names.phone
-d qns4=2-3 years
-d type5=residence.type
-d qns5=USA
Response¶
On success (questions answered correctly):
| Field | Type | Description |
|---|---|---|
Financial investor details | object | Result detail (see below) |
Financial investor details.partyId | string | ID for the Party |
Financial investor details.kycStatus | string | KYC Status of the Party; always Auto Approved on success |
Example Response¶
{
"statusCode": "101",
"statusDesc": "Ok",
"Financial investor details": {
"partyId": "P88531",
"kycStatus": "Auto Approved"
}
}
Failure Responses¶
When the verification provider reports the questions were answered incorrectly, the method returns HTTP 200 with:
| Field | Type | Description |
|---|---|---|
statusCode | string | 145 |
statusDesc | string | Error message from the verification provider |
idologyResponse | object | Provider result detail: idologyResult and the raw provider idologyResponse |
When the provider returns neither a pass nor a fail result (an error), the method returns HTTP 404 with statusCode 145 and the same idologyResponse object, without a statusDesc.
POST /v3/updateKycAmlStatus¶
This method is used only when performing a manual KYC/AML review (see requestKycAml). Calling it sets the KYC or AML status to New Info Added, notifying the North Capital review team that the requested documents have been uploaded to the party. Sending status Updated Review Requested instead initiates a fresh re-review of a party whose KYC/AML review was previously completed.
Note: this endpoint is served by the manual-review service rather than the core TAPI handlers, so its response payload may vary. The status envelope (
statusCode/statusDesc) is always returned; thepartyDetailspayload reflects the party's KYC/AML status after the update.
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
partyId | string | Yes | Party ID or Entity ID generated by the API when the party or entity was created (createParty / createEntity) |
type | string | Yes | Whether the update targets the KYC or the AML status |
status | string | Yes | New Info Added to flag an in-progress review (when the current status is Needs More Info), or Updated Review Requested to request a new re-review |
Example Request¶
curl -k -X POST https://api-sandboxdash.norcapsecurities.com/v3/updateKycAmlStatus
-d developerAPIKey=somedeveloperkey
-d clientID=someclientid
-d partyId=P39944
-d type=KYC
-d status=New Info Added
Response¶
| Field | Type | Description |
|---|---|---|
statusCode | string | 101 on success |
statusDesc | string | Ok on success |
partyDetails | array | Result payload: [success, [partyStatus]] where success is a boolean and partyStatus carries the party's resulting partyId, KYCstatus, and AMLstatus |
Example Response¶
{
"statusCode": "101",
"statusDesc": "Ok",
"partyDetails": [
true,
[
{
"partyId": "P39944",
"KYCstatus": "New Info Added",
"AMLstatus": "Auto Approved"
}
]
]
}