Uploading Documents

Overview

The Crypto Documents API provides a way for clients to upload and download documents associated with investors for the account opening process.


Workflows

Document Upload Process

In order to upload documents relevant to opening investor accounts, post a request to the Upload Document and Metadata endpoint with the necessary file in MIME type format. Include the applicable JSON structured with the document request for associated metadata. After submitting the upload request, Bakkt runs a series of validations across the metadata to ensure proper formatting.

Example

{
  "clientDocumentId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "account": "string",
  "documentType": "PASSPORT",
  "documentSide": "FRONT",
  "clientOwnerId": "3fa87f64-5717-4562-b3fc-2c963f66afa6",
  "description": "customer passport",
  "documentExpiration": "2023-10-04T16:34:29.446Z",
  "issueCountry": "USA"
}

Uploading Documents for Entities

As a prerequisite for KYB screening, clients are expected to upload all necessary documentation on entities and their owners via the Documents API. Documents on the business entity itself should be uploaded without a clientOwnerId present on the upload. This includes document types such as ENTITY_DUE_DILIGENCE, CERTIFICATE_OF_INCORPORATION, and CERTIFICATE_OF_BENEFICIAL_OWNERS. The type must be present on the upload. The document side for these types of documents should be FRONT. issueCountry should also be provided in a 3 letter ISO country code format for the origin of the document.

For documents specific to the owners on the account, clientOwnerId must be present for each upload in order to properly associate the documents with their appropriate owners. This clientOwnerId should be the same ID as the one specified for each owner at the time of account creation. If the document being used is double sided (i.e. Driver's License), an upload must be made for both sides, with the side specified in the document metadata (FRONT, BACK). Additionally, the issuing country of the document should be provided (i.e. for a United States passport, the issueCountry should be USA.

After all required documents are uploaded, the client can then make a request to the new KYB endpoint to trigger a screening: /apex-crypto/api/v2/accounts/triggerKYBScreening/{clientAccountId}

Document Download Process

In order to download a particular document, use the Download Document endpoint, and provide the clientDocumentId for the specific file.

Retrieve Document Metadata

To retrieve the metadata for a particular file, use the Retrieve Metadata for Specific Document endpoint, and provide the document’s clientDocumentId. Metadata uploaded with this file is then available along with the createdAt field specifying the creation date-time and the Bakkt id.

Example

{
  "createdAt": "2022-06-29T02:55:02.847Z",
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "request": {
    "clientDocumentId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "account": "string",
    "documentType": "PASSPORT",
    "documentSide": "FRONT",
    "clientOwnerId": "3fa87f64-5717-4562-b3fc-2c963f66afa6",
    "description": "customer passport",
    "documentExpiration": "2023-10-04T16:34:29.446Z",
    "issueCountry": "USA"
 }
}