Liquidity Docs

Transfer Agent Integration

Connect transfer agents to Liquidity.io — record ownership transfers, manage cap tables, corporate actions

For SEC-registered transfer agents who record ownership changes, maintain shareholder records, and process corporate actions for securities trading on Liquidity.io.

What You Get

  • Receive transfer.initiated webhooks when trades settle
  • Acknowledge transfers and update cap table records
  • Record dividends, stock splits, and corporate actions
  • On-chain settlement verification
  • Shareholder record synchronization
  • SEC reporting data exports

Authentication

Register as an IAM organization with transfer_agent role:

curl -X POST https://iam.liquidity.io/api/login/oauth/access_token \
  -d grant_type=client_credentials \
  -d client_id=$CLIENT_ID \
  -d client_secret=$CLIENT_SECRET \
  -d scope=openid

Your sec_registration_number is verified during onboarding.

Transfer Flow

Liquidity.io ATS                      Your TA System
  │                                       │
  │  Trade executed, settlement pending   │
  │                                       │
  │  webhook: transfer.initiated          │
  │  {transfer_instruction_id,            │
  │   seller, buyer, units, security}     │
  │ ─────────────────────────────────►    │
  │                                       │
  │         Verify + update cap table     │
  │                                       │
  │  POST /v1/transfers/:id/acknowledge   │
  │  {status: "completed",                │
  │   record_date, new_cert_number}       │
  │ ◄─────────────────────────────────    │
  │                                       │
  │  webhook: transfer.completed          │
  │ ─────────────────────────────────►    │

API Endpoints

Transfers

GET    /v1/transfers                  List pending transfers for your securities
GET    /v1/transfers/:id              Transfer detail
POST   /v1/transfers/:id/acknowledge  Acknowledge transfer (accept/reject)
POST   /v1/transfers/:id/complete     Mark transfer as recorded on cap table

Acknowledge Request

{
  "acknowledged": true,
  "transfer_instruction_id": "ti_corp_aa1b2c3d",
  "record_date": "2026-03-22T00:00:00.000Z",
  "units_to_transfer": 1000,
  "status": "pending_transfer",
  "notes": "Transfer approved, pending cap table update"
}

Complete Request

{
  "status": "completed",
  "record_date": "2026-03-24T00:00:00.000Z",
  "new_certificate_number": "CERT-2026-0042",
  "legend_applied": true,
  "cap_table_updated_at": "2026-03-24T10:30:00.000Z"
}

Cap Table

GET    /v1/captable/:security_id              Current cap table
GET    /v1/captable/:security_id/holders      Shareholder list
GET    /v1/captable/:security_id/history      Transfer history
POST   /v1/captable/:security_id/import       Bulk import holders

Corporate Actions

POST   /v1/corporate-actions                  Announce corporate action
GET    /v1/corporate-actions                  List actions for your securities
GET    /v1/corporate-actions/:id              Action detail + status

Dividend Declaration

{
  "security_id": "asset_corp_7g8h",
  "action_type": "dividend",
  "record_date": "2026-06-15T00:00:00.000Z",
  "payment_date": "2026-06-30T00:00:00.000Z",
  "amount_per_share": 0.25,
  "currency": "USD",
  "description": "Q2 2026 quarterly dividend"
}

Stock Split

{
  "security_id": "asset_corp_7g8h",
  "action_type": "stock_split",
  "effective_date": "2026-07-01T00:00:00.000Z",
  "ratio_from": 1,
  "ratio_to": 2,
  "description": "2:1 forward stock split"
}

Restrictions

GET    /v1/securities/:id/restrictions        Current transfer restrictions
PATCH  /v1/securities/:id/restrictions        Update restrictions

Restriction Fields

{
  "legend_required": true,
  "rule_144_holding_period_met": false,
  "transfer_restrictions": "Subject to issuer consent, right of first refusal, and applicable securities laws",
  "lock_up_expiry_date": null
}

Reporting

GET    /v1/reports/shareholder-register       SEC shareholder register
GET    /v1/reports/transfer-log               Transfer log (date range)
GET    /v1/reports/dividend-history            Dividend payment records
GET    /v1/reports/form-ta-2                   SEC Form TA-2 data

Webhook Events You Receive

EventWhenKey Fields
transfer.initiatedTrade settled, transfer pendingtransfer_instruction_id, buyer, seller, units, security
settlement.finalizedOn-chain settlement confirmedtrade_id, status, tx_hash
dividend.declaredIssuer declares dividendsecurity_id, record_date, amount_per_share
corporate_action.announcedStock split, merger, etc.security_id, action_type, effective_date

transfer.initiated Payload

The transfer agent section from the trade webhook:

{
  "transfer_agent": {
    "firm_name": "Acme Transfer Agent Co.",
    "sec_registered": true,
    "sec_registration_number": "84-01234",
    "acknowledgment": {
      "acknowledged": true,
      "acknowledged_at": "2026-03-22T14:32:05.000Z",
      "transfer_instruction_id": "ti_corp_aa1b2c3d",
      "record_date": "2026-03-22T00:00:00.000Z",
      "units_to_transfer": 1000,
      "status": "pending_transfer"
    }
  }
}

On-Chain Verification

Transfer agents can independently verify settlements on-chain:

# Query SettlementRegistry by trade UUID
cast call $REGISTRY "lookupByUUID(string)(bytes16)" "txn_corp_1a2b3c4d" \
  --rpc-url https://rpc.liquidity.io/ext/bc/C/rpc

# Get all settlement transactions for a trade
cast call $REGISTRY "getTxsByUUID(string)" "txn_corp_1a2b3c4d" \
  --rpc-url https://rpc.liquidity.io/ext/bc/C/rpc

Explorer: explorer.liquidity.io

Supported Entity Types

Transfer agents handle all 7 entity structures:

EntityIssuer TypeTypical TA Considerations
Corporationprivate_corporationStock certificates, legend requirements
LLClimited_liability_companyMembership interest transfers, operating agreement
Partnershiplimited_partnershipLP unit transfers, GP consent required
Public Companypublic_companyDTC-eligible, Rule 144 tracking
Sole Proprietorshipsole_proprietorshipEquity interest, simpler transfer
SPVspecial_purpose_vehicleInvestor interest units, waterfall provisions
TrusttrustBeneficial interest units, trustee approval

Getting Started

  1. Verify SEC registration (Form TA-1)
  2. Email ta-partnerships@liquidity.io
  3. Receive IAM credentials
  4. Register webhook endpoints
  5. Import existing cap table for a test security
  6. Process a sandbox transfer on testnet

See also: Cross-Listing for full webhook payload specification.

On this page