Dalmore API Documentation

This documentation provides comprehensive guidance for integrating with the Dalmore platform APIs. It covers three main workflows: creating offerings, managing investor accounts, and processing trades

Base URL:

Authentication: All API requests require an X-API-KEY header with your API key.

Getting Started

  • Create a developer account like as:

  • Navigate to API Keys to generate your API key

API Resources


Postman Collection

Authentication

All API requests must include your API key in the request header:


1. Creating an Offering

The offering creation workflow consists of three main steps: registering an issuer account, creating an issuer entity, and creating the offering with associated assets.

Step 1: Register Issuer Account

Creates a user account with authentication credentials for managing the issuer entity and offerings.

Endpoint: POST /register/issuer

Request Body:

Response:

Step 2: Create Issuer Entity

Establishes a legal issuer entity representing the company or organization conducting the offering.

Endpoint: POST /issuers

Request Body:

Response:

Step 3: Create Offering

Creates a new offering with regulatory type, funding goals, investment limits, and timeline. Automatically creates a primary asset.

Endpoint: POST /offerings

Request Body:

Response:

Step 4: Create Additional Assets (Optional)

Creates additional assets for an existing offering to offer multiple types of securities.

Endpoint: POST /assets

Request Body:

Response:

API Calling Flow

Important Notes:

  • Each step depends on successful completion of the previous step

  • The issuerId from Step 2 is required for Step 3

  • The offeringId from Step 3 is required for Step 4

  • Store returned IDs for subsequent API calls

  • All offerings initially have status "PENDING" for compliance review


2. Creating an Investor Account

This section covers the complete process of creating and setting up investor accounts. The workflow varies by account type and includes compliance steps for Regulation D offerings.

Investor Account Types

The platform supports three investor account types:

  • INDIVIDUAL: Single person investor account

  • JOINT: Jointly held account (requires 2 individuals with shared ownership)

  • LEGAL_ENTITY: Business entity investor account (requires entity information and authorized signers)

Step 1: Register Investor User

Creates user authentication credentials for the investor.

Endpoint: POST /auth/register/investor

Request Body:

Response:

Key Fields:

  • userId: Unique identifier for the registered user (required for creating investor accounts)

  • site: The investor portal domain where this user will access their account

Step 2: Create Investor Account

Creates the investor account structure and defines the account type.

Endpoint: POST /investor-accounts

Request Body:

Response:

Key Fields:

  • id: Unique investor account identifier (required for creating individuals/entities)

  • investorAccountType: Determines the account structure

  • regAQualified, regCfQualified, regDQualified: Qualification status for different regulations

  • setupStatus: Current stage of account setup

Next Steps by Account Type:

  • INDIVIDUAL: Proceed to Step 3 (Create Individual)

  • JOINT: Proceed to Step 3, then create a second individual with role: "JOINT"

  • LEGAL_ENTITY: Proceed to Step 4 (Create Legal Entity)

Step 3: Create Individual

Creates a comprehensive individual profile with personal, financial, and compliance information.

Endpoint: POST /individuals

Request Body:

Response:

For Joint Accounts:

Create a second individual with role: "JOINT" and appropriate ownership percentage (typically 50/50).

Creates a legal entity profile with business information.

Endpoint: POST /legal-entities

Request Body:

Response:

Key Fields:

  • ein: Employer Identification Number (tax ID)

  • companyType: Legal structure (LLC, CORPORATION, PARTNERSHIP, TRUST, etc.)


Regulation D (Reg D) Compliance Steps

For Regulation D offerings, additional steps are required to verify accredited investor status.

Step 5: Add AIC Questionnaire

Updates an individual's profile with an Accredited Investor Certification questionnaire.

Endpoint: PATCH /individuals/{individualId}

Request Body:

Questionnaire Fields:

  • investment_objective: Primary investment goal

  • investment_experience: Years of investment experience

  • risk_willingness: Risk tolerance level

  • equities_allocation, bonds_allocation, etc.: Portfolio composition

  • overall_portfolio_percentage: Percentage of portfolio in alternative investments

  • investment_time_horizon: Expected investment duration

Step 6: Upload AIC Supporting Documents

Uploads documents to verify accredited investor status.

Endpoint: POST /files?targetId={individual_id}&category=Investor+Accreditation&label={LABEL}&name={filename}&metadata={metadata_json}

Query Parameters:

  • targetId: Individual ID (e.g., individual_xxxxxx)

  • category: Always Investor Accreditation

  • label: Document type (e.g., PROOF_OF_NET_WORTH)

  • name: Original filename

  • metadata: JSON string with file-specific metadata

Request Body:

Field
Type
Required
Description

file

file (binary)

Yes

PDF, image, or document file

Response:

Step 7: Initialize/Get Individual AIC

Retrieves or initializes the AIC record for an individual.

Endpoint: GET /individual/{individualId}/aic

Response:

Step 8: Attach AIC Documentation

Attaches accreditation files and metadata to verify investor status.

Endpoint: PUT /individual/{individualId}/aic

Request Body:

Accreditation Methods:

  • NET_WORTH: Bank statements, brokerage statements

  • INCOME: Tax returns

  • PROFESSIONAL: Professional certifications/licenses

  • EMPLOYEE: Knowledgeable employee status

Response:


API Calling Flows for Investor Accounts

Individual Investor Account Flow

Joint Investor Account Flow


3. Attaching KYC Documentation

After creating an investor account, you need to complete the Know Your Customer (KYC) verification process by uploading identity documents. This section covers the complete KYC document submission workflow.

KYC Document Types

The platform supports three types of identity documents:

  • PASSPORT: International passport

  • DRIVER_LICENSE: State-issued driver's license

  • STATE_ID: State-issued identification card

Step 1: Get Investor Accounts

Retrieve the list of investor accounts to select the individual for KYC verification.

Endpoint: GET /investor-accounts

Response:

json

Step 2: Upload KYC Document Files

Upload the required identity documents. The document front image is mandatory, while the selfie is optional.

Endpoint: POST /files?name={filename}&category=kyc-document&label={LABEL}&targetId={individual_id}

Query Parameters:

  • name: Original filename (e.g., Passport_01.png)

  • category: Always kyc-document

  • label: Document type label

    • For document front: KYC_DOCUMENT_FRONT

    • For document back (driver's license/state ID): KYC_DOCUMENT_BACK

    • For selfie: KYC_SELFIE

  • targetId: Individual ID (e.g., individual_xxxxxx)

Request Body:

Field
Type
Required
Description

file

file (binary)

Yes

Image file (PNG, JPG, JPEG, PDF)

Example: Upload Document Front (Mandatory)

Request:

Response:

json

Example: Upload Selfie (Optional)

Request:

Response:

json

Step 3: Submit KYC Record

After uploading the required documents, submit the KYC verification record with document details and file references.

Endpoint: POST /kyc

Request Body:

For Passport:

json

For Driver's License:

json

For State ID:

json

Key Fields:

  • individualId: The individual ID for KYC verification

  • kycDocumentType: Type of document (PASSPORT, DRIVER_LICENSE, STATE_ID)

  • kycDocumentId: Document number/ID

  • kycDocumentIssuer: Issuing country (for passport) or state (for driver's license/state ID)

  • kycProvider: KYC verification provider (default: WITH_PERSONA)

  • kycDocumentFrontFileId: Mandatory - File ID of document front image

  • kycDocumentBackFileId: Required for DRIVER_LICENSE and STATE_ID - File ID of document back image

  • kycSelfieFileId: Optional - File ID of selfie image

Response:

json


KYC Attachment Flow

Complete KYC Workflow

Document Requirements by Type

Document Type
Front Image
Back Image
Selfie
Issuer Format

PASSPORT

Mandatory

Not Required

Optional

Country Code (e.g., BR, US)

DRIVER_LICENSE

Mandatory

Required

Optional

State Code (e.g., CA, NY)

STATE_ID

Mandatory

Required

Optional

State Code (e.g., TX, FL)

Important Notes

  • File Upload Order: Always upload files before submitting the KYC record

  • File Categories: Use kyc-document category for all KYC-related files

  • Document Front: Mandatory for all document types

  • Document Back: Required only for DRIVER_LICENSE and STATE_ID

  • Selfie: Optional for all document types

  • Supported Formats: PNG, JPG, JPEG, PDF

  • Provider: Default KYC provider is WITH_PERSONA

  • Status Flow: KYC records start with PENDING status and are processed by the verification provider


4. How to Place a Trade

Overview

The place trade workflow consists of multiple sequential steps to create and finalize an investment trade. This process involves selecting accounts, choosing offerings and assets, managing cart items, configuring payment methods, and checking out.


Step 1: Get User's Investor Accounts

Description:

Retrieves all investor accounts associated with a user to select which account will be used for the trade.

Example Request:

Response:


Step 2: Browse Available Offerings

Description:

Retrieves a paginated list of available offerings for investment.

Example Request:

Response:


Step 3: Get Offering Details with Assets

Description:

Retrieves detailed information about a specific offering, including all available assets for purchase.

Query Parameters:

  • include - Related entities to include (use assets to get asset details)

Example Request:

Response:


Step 4: Retrieve or Create Cart

Description:

Retrieves the current cart for a user. If no cart exists, a new one is automatically created.

Query Parameters:

  • userId - user_xxxxxx

Example Request:

Response:


Step 5a: Add Asset to Cart (Create Trade Line Item)

Description:

Adds an asset to the cart by creating a new trade line item. If no cart exists for the user, one will be created automatically.

Query Parameters:

  • userId - user_xxxxxx

Request Body:

Example Request:

Response:


Step 5b: Update Existing Trade Line Item

Description:

Updates the quantity of an existing trade line item in the cart.

Request Body:

Example Request:

Response:


Step 6a: Get Payment Methods

Description:

Retrieves all payment methods associated with a user.

Query Parameters:

  • userId - user_xxxxxx

Example Request:

Response:


Step 6b: Create Payment Method (if needed)

Description:

Creates a new payment method for the user.

Query Parameters:

  • userId - user_xxxxxx

Request Body:

Example Request:

Response:


Step 7: Update Cart with Investor Account and Payment Method

Description:

Associates an investor account and payment method with the cart to prepare for checkout.

Request Body:

Example Request:

Response:


Step 8: Upload Subscription Agreement

Description:

Uploads a subscription agreement document for the trade.

Query Parameters:

  • name - File name (e.g., subscription-agreement.pdf)

  • category - offering-document

  • label - SUBSCRIPTION_AGREEMENT

  • targetId - Trade ID (cart ID)

Content-Type:

multipart/form-data

Example Request:

Response:


Step 9: Attach Subscription Agreement to Trade Line Item

Description:

Attaches an uploaded subscription agreement to a specific trade line item and records signature statuses.

Request Body:

Example Request:

Response:


Step 10: Checkout Cart (Place Trade)

Description:

Finalizes the cart and places the trade. This transitions the cart from CART status to a placed trade status.

Request Body:

Example Request:

Response:


Complete Workflow Summary

Sequential API Calls:

  1. GET /investor-accounts - Select investor account

  2. GET /offerings - Browse available offerings

  3. GET /offerings/{id}?include=assets - Get offering details with assets

  4. GET /carts?userId={userId} - Retrieve or create cart

  5. POST /trade-line-items?userId={userId} - Add asset to cart (or PATCH /trade-line-items/{id} to update existing)

  6. GET /payment-methods?userId={userId} - Get payment methods (or POST /payment-methods?userId={userId} to create new)

  7. PATCH /carts/{id} - Attach investor account and payment method

  8. POST /files - Upload subscription agreement

  9. POST /trades/{id}/attach-subdoc - Attach document to line item (optional)

  10. POST /carts/checkout - Place the trade


Quick Reference

Step
Method
Endpoint
Purpose

1

GET

/investor-accounts

Get user's investor accounts

2

GET

/offerings

Browse available offerings

3

GET

/offerings/{id}?include=assets

Get offering with assets

4

GET

/carts?userId={userId}

Get or create cart

5a

POST

/trade-line-items?userId={userId}

Add asset to cart

5b

PATCH

/trade-line-items/{id}

Update line item quantity

6a

GET

/payment-methods?userId={userId}

Get payment methods

6b

POST

/payment-methods?userId={userId}

Create payment method

7

PATCH

/carts/{id}

Update cart with account & payment

8

POST

/files

Upload subscription agreement

9

POST

/trades/{id}/attach-subdoc

Attach subdoc to line item

10

POST

/carts/checkout

Place the trade

Support

For additional support or questions, please refer to:

Postman Collection for Testing

Last updated