Applications

Applications represent the onboarding journey for your customers. They are used to collect KYC information and documents required to open accounts on the platform.

Endpoints

GET /applications

Retrieve a list of applications with optional filtering.

Query Parameters

Parameter Type Description
status string Filter by status (INCOMPLETE, READY_FOR_SUBMISSION, SUBMITTED, APPROVED, REJECTED)
type string Filter by type (INDIVIDUAL, CORPORATION)
limit integer Number of results to return (default: 20)
cursor string Pagination cursor

Response

200 OK
{
  "data": [
    {
      "id": "app_123456789",
      "type": "INDIVIDUAL",
      "status": "APPROVED",
      "customer_id": "cust_987654321",
      "created_at": "2026-01-15T10:30:00Z",
      "updated_at": "2026-01-15T14:45:00Z"
    }
  ],
  "pagination": {
    "has_more": true,
    "next_cursor": "cursor_abc123"
  }
}
POST /applications

Create a new application to onboard a customer.

Request Body

Field Type Description
type required string Application type: INDIVIDUAL or CORPORATION
email required string Primary contact email
phone string Primary contact phone number
individual object Individual details (required for INDIVIDUAL type)
corporation object Corporation details (required for CORPORATION type)

Example Request

Request
{
  "type": "INDIVIDUAL",
  "email": "john.doe@example.com",
  "phone": "+1234567890",
  "individual": {
    "first_name": "John",
    "last_name": "Doe",
    "date_of_birth": "1990-01-15",
    "address": {
      "line1": "123 Main St",
      "city": "New York",
      "state": "NY",
      "postal_code": "10001",
      "country": "US"
    }
  }
}

Response

201 Created
{
  "id": "app_123456789",
  "type": "INDIVIDUAL",
  "status": "INCOMPLETE",
  "created_at": "2026-01-15T10:30:00Z"
}
GET /applications/{id}

Retrieve details of a specific application.

Path Parameters

Parameter Type Description
id required string The application ID

Response

200 OK
{
  "id": "app_123456789",
  "type": "INDIVIDUAL",
  "status": "READY_FOR_SUBMISSION",
  "email": "john.doe@example.com",
  "individual": {
    "first_name": "John",
    "last_name": "Doe",
    "date_of_birth": "1990-01-15",
    "address": {
      "line1": "123 Main St",
      "city": "New York",
      "state": "NY",
      "postal_code": "10001",
      "country": "US"
    }
  },
  "documents": [
    {
      "id": "doc_111",
      "type": "PASSPORT",
      "status": "UPLOADED"
    }
  ],
  "created_at": "2026-01-15T10:30:00Z",
  "updated_at": "2026-01-15T12:00:00Z"
}
PATCH /applications/{id}

Update an existing application. Only applications with status INCOMPLETE or CHANGES_REQUESTED can be updated.

Path Parameters

Parameter Type Description
id required string The application ID

Request Body

Include only the fields you want to update.

Response

200 OK
{
  "id": "app_123456789",
  "type": "INDIVIDUAL",
  "status": "INCOMPLETE",
  "updated_at": "2026-01-15T14:00:00Z"
}
GET /applications/{id}/status

Retrieve the status of an application including validation errors and required documents.

Response

200 OK
{
  "id": "app_123456789",
  "status": "INCOMPLETE",
  "validation_errors": [
    {
      "field": "individual.date_of_birth",
      "message": "Date of birth is required"
    }
  ],
  "required_documents": [
    {
      "id": "doc_req_001",
      "type": "PASSPORT",
      "status": "PENDING"
    },
    {
      "id": "doc_req_002",
      "type": "PROOF_OF_ADDRESS",
      "status": "PENDING"
    }
  ]
}
POST /applications/{id}/submit

Submit an application for review. The application must have status READY_FOR_SUBMISSION.

Response

200 OK
{
  "id": "app_123456789",
  "status": "SUBMITTED",
  "submitted_at": "2026-01-15T15:00:00Z"
}
POST /applications/{id}/individuals

Add an individual to a corporate application. Used for adding beneficial owners, officers, or authorized users.

Request Body

Field Type Description
role required string BENEFICIAL_OWNER, OFFICER, DIRECTOR, or AUTHORIZED_USER
first_name required string First name
last_name required string Last name
ownership_percentage number Ownership percentage (for beneficial owners)

Response

201 Created
{
  "id": "ind_456789",
  "role": "BENEFICIAL_OWNER",
  "first_name": "Jane",
  "last_name": "Smith",
  "ownership_percentage": 30,
  "created_at": "2026-01-15T16:00:00Z"
}
PATCH /applications/{id}/individuals/{individual_id}

Update an individual's details on an application.

Response

200 OK
{
  "id": "ind_456789",
  "role": "BENEFICIAL_OWNER",
  "first_name": "Jane",
  "last_name": "Smith",
  "updated_at": "2026-01-15T17:00:00Z"
}
DELETE /applications/{id}/individuals/{individual_id}

Remove an individual from an application.

Response

204 No Content
// No response body
POST /applications/{id}/access-code

Generate a one-time access code for the application. Used for secure document upload portals.

Response

200 OK
{
  "access_code": "ABC123XYZ",
  "expires_at": "2026-01-15T18:00:00Z"
}