/document_types

List the document types for KYC supporting documentation

👍

This doc has been updated for Priority specifications.

During the KYC onboarding process, it may be necessary to upload supporting documentation. This endpoint returns the values for name and identity_type to provide in /documents when uploading a doc. name can be used as a search filter when listing uploaded documents with /list_documents.

Use the tags (if you're using Classic KYC) or the reasons (if you're using Advanced KYC) to determine the type of doc to be uploaded. These are returned by /check_kyc (Classic) or /get_verifications/verification_uuid (Advanced).

The name and identity_type values retrieved here for a given document type should be used when uploading with , and

Request

The request body at this endpoint is the header_msg JSON object.

Authorization / Authentication

Apps using Access Token Authorization

Use a valid access token in a Authorization: Bearer request header.

See Authenticating with an Access Token for more details.

Apps using ECDSA Authentication

Only the authsignature header is required for this request.

See the section on ECDSA Authentication for more detail about ECDSA signature generation.

Pagination

This endpoint supports pagination via URL query parameters:

/document_types?page=1&per_page=20
  • page: page number to retrieve. default: 1
  • per_page: number of items per page. default: 20, max: 100

📘

Default page size will not include all items

Please note that this endpoint currently returns 28 document types, which is in excess of the default per_page value of 20. If you wish to retrieve all items in one request, use the ?per_page=100 query parameter.

POST /0.2/document_types HTTP/1.1
sandbox.silamoney.com
Content-Type: application/json
// if using OAuth2
Authorization: Bearer [GENERATED JWT TOKEN HERE]
// if using ECDSA
authsignature: [GENERATED AUTHSIGNATURE HEX STRING HERE]

{
  "header": {
    "created": 1234567890, 
    "auth_handle": "handle.silamoney.eth", 
    "version": "0.2", 
    "reference": "<your unique id>"
  }
}
  
***

HTTP/1.1 200 OK

{
  "success": true,
  "status": "SUCCESS",
  "response_time_ms": "171",
  "reference": "<your unique id>",
  "sila_reference_id": "sila_assigned_id",
  "message": "Document type details returned.",
  "document_types" : [
    {
        "name": "bank_statement",
        "label": "Bank Statement",
        "identity_type": "other"
    },
    {
        "name": "doc_green_card",
        "label": "Permanent Resident Card (or Green Card)",
        "identity_type": "other"
    },
    {
        "name": "doc_lease",
        "label": "Lease agreement",
        "identity_type": "contract"
    },
    {
        "name": "id_drivers_license",
        "label": "State-issued driver's license",
        "identity_type": "license"
    },
    {
        "name": "id_drivers_permit",
        "label": "Driver's permit",
        "identity_type": "license"
    },
    {
        "name": "id_military",
        "label": "Military ID",
        "identity_type": "other"
    }
  ],
  "pagination": {
    "returned_count": 31,
    "total_count": 31,
    "current_page": 1,
    "total_pages": 1
  }
}
// Pagination is optional	
const pagination = {	
  page: 1,	
  perPage: 5,	
};	
const res = await sila.getDocumentTypes(pagination);		

// Success Response Object	
console.log(res.statusCode); // 2000	
console.log(res.data.success); // true	
console.log(res.data.status); // SUCCESS	
console.log(res.data.message); // Document type details returned	
console.log(res.data.document_types[0].name);	
console.log(res.data.document_types[0].label);	
console.log(res.data.document_types[0].identity_type);	
console.log(res.data.pagination); // Pagination information (returned_count, total_count, current_page, total_pages)
response = silasdk.Documents.listSupportedDocuments(app, page, perPage)

# Success Response Object
{
  "success": true,
  "status": "SUCCESS",
  "message": "Document type details returned.",
  "document_types" : [
    {
      "name": "doc_green_card",
      "label": "Permanent Resident Card (or Green Card)",
      "identity_type": "other"
    },
    ...
  ],
  "pagination": {
    "returned_count": 28,
    "total_count": 28,
    "current_page": 1,
    "total_pages": 1
  }
}
// With no pagination
ApiResponse response = api.getDocumentTypes();
// With pagination
PaginationMessage pagination = PaginationMessage.builder()
    .page(1) // Optional. The page of the request
    .perPage(40) // Optional. The amount of results per page
    .build();
ApiResponse response = api.getDocumentTypes(pagination);

// Success response
System.out.println(response.getStatusCode()); // 200
DocumentTypesResponse parsedResponse = (DocumentTypesResponse)response.getData();
System.out.println(parsedResponse.getSuccess()); // true
System.out.println(parsedResponse.getStatus()); // SUCCESS
System.out.println(parsedResponse.getMessage()); // Document type details returned.
System.out.println(parsedResponse.getDocumentTypes()); // List of DocumentType
System.out.println(parsedResponse.getDocumentTypes().get(0).getName()); // Document type name
System.out.println(parsedResponse.getDocumentTypes().get(0).getLabel()); // Document type label
System.out.println(parsedResponse.getDocumentTypes().get(0).getIdentityType()); // Document type identity type
System.out.println(parsedResponse.getPagination().getCurrentPage());
System.out.println(parsedResponse.getPagination().getReturnedCount());
System.out.println(parsedResponse.getPagination().getTotalPages());
System.out.println(parsedResponse.getPagination().getTotalCount());
$page = 1; // Optional. The page number to get
$perPage = 5 // Optional. The number of document types per page. The default value is 20 and the maxium is 100.
$response = $client->getDocumentTypes($page, $perPage);

echo $response->getStatusCode(); // 200
echo $response->getData()->success; // TRUE
echo $response->getData()->status; // SUCCESS
echo $response->getData()->message; // Document type details returned.
echo $response->getData()->document_types; // An array of document types (name, label, identity_type)
echo $response->getData()->pagination; // Pagination details (returned_count, total_count, current_page, total_pages)
int page = 1; // Optional. The page number to get
int perPage = 20; // Optional. The number of entities pe
var response = api.GetDocumentTypes(page, perPage);

// Success response object
Console.WriteLine(response.StatusCode); // 200


var parsedResponse = (DocumentTypesResponse)response.Data;


Console.WriteLine(parsedResponse.Success);
Console.WriteLine(parsedResponse.Status);
Console.WriteLine(parsedResponse.Message);

Console.WriteLine(parsedResponse.DocumentTypes.Count);
Console.WriteLine(parsedResponse.DocumentTypes[0].Name);
Console.WriteLine(parsedResponse.DocumentTypes[0].Label);
Console.WriteLine(parsedResponse.DocumentTypes[0].IdentityType);

            
Console.WriteLine(parsedResponse.Pagination.CurrentPage);
Console.WriteLine(parsedResponse.Pagination.ReturnedCount);
Console.WriteLine(parsedResponse.Pagination.TotalCount);
Console.WriteLine(parsedResponse.Pagination.TotalPages);

Responses

Status CodesuccessDescription
200truedocument_type details returned

Supported Doc Types

Full list of acceptable docs mapped to document_type value

Below is a full and complete list of supported documents that can be uploaded mapped to the name value returned by this endpoint - use this as the value for document_type in the /documents request.

Document Typedocument_type
Articles of Incorporationdoc_articles_of_inc
Bank Statementdoc_bank_statement
Birth Certificatevtl_birth_certificate
Business Licensedoc_business_license
Certificate of Formationdoc_cert_of_formation
Certificate of Good Standingdoc_cert_of_good_standing
Credit Card Statementdoc_credit_card_statement
Divorce Decreevtl_divorce
Driver's Licenseid_drivers_license
Driver's Permitid_drivers_permit
EIN Verification Letterdoc_ein_verification
IRS Tax Returndoc_tax_return
Lease Agreementdoc_lease
Marriage Certificatevtl_marriage
Mortgagedoc_mortgage
Name Change Court Orderdoc_name_change
Pay Stub or Earnings Statementdoc_paystub
Social Security Carddoc_ss_card
State ID Cardid_state
SS4doc_tax_ss4
Tribal IDid_tribal
Utility Billdoc_utility
US Passportid_passport
W2tax_w2
W9doc_tax_w9
1040 Tax Returntax_1040
1095 Tax Statementtax_1095
1099tax_1099

List of acceptable docs by kind verification needed

A mapping of the acceptable document types by the type of verification needed.

The tag column contains the tag that would be returned by /check_kyc for Classic KYC users.

For Advanced KYC, there are approximately 130 possible reason strings. We have that full list mapped to the type of verification needed available upon request.

tagdoc_type
BUSINESS_ADDRESS_VALIDATIONBusiness entity:

Articles of Incorporation
Business License
Certificate of Formation
Certificate of Good Standing
EIN Verification
SS4
Utility Bill
Lease Agreement
Bank Statement
Credit Card Statement

Note: Documents must be dated within six months of the creation date of the account to be used for validation.
ADDRESS_VALIDATIONIndividual entity:

Utility Bill
Lease Agreement
Bank Statement
Credit Card Statement
Driver’s License
Driver's Permit
Mortgage
State ID Card
Tribal ID

Note: Documents must be dated within six months of the creation date of the account to be used for validation.
EIN_VALIDATIONArticles of Incorporation
Business License
Certificate of Formation
Certificate of Good Standing
EIN Verification
SS4
BUSINESS_STANDING_VALIDATIONArticles of Incorporation
Business License
Certificate of Formation
Certificate of Good Standing
EIN Verification
SS4
TIN_VALIDATIONSSN:

Social Security Card
W2
Pay Stub or Earnings Statement
1099 Forms
1095 Tax Statement

ITIN:

W2
W9
Pay Stub or Earnings Statement
U.S. Federal Tax Returns (including 1040)
1099 Forms
1095 Tax Statement
NAME_VALIDATIONBirth Certificate
Divorce Decree
Driver’s License
Driver's Permit
Marriage Certificate
Name Change Court Order
Passport
State ID Card
Tribal ID

Note: Non-U.S. Government issued ID’s are unacceptable for validation and all Id’s must be current and non-expired in order to be used
DOB_VALIDATIONBirth Certificate
Passport
Driver’s License
Driver's Permit
State ID Card
Tribal ID

Note: Non-U.S. Government issued ID’s are unacceptable for validation and all Id’s must be current and non-expired in order to be used

See Also: