---
title: "Import a cap table"
method: POST
path: "/captable/imports"
tags: ["captable"]
---

# Import a cap table

`POST /captable/imports`

## Request

- Base URL: `https://localhost:4410/api/v1`
- URL: `https://localhost:4410/api/v1/captable/imports`
- Auth: HTTP bearer

Drafts the ledger from a CSV or XLSX with the column mapping a person checked: classes, plans, stock, options and 409A rows become Unconfirmed lines, holders are found or added as parties, and each row's document is linked when one with that file name is uploaded. SAFE rows go through the SAFE import; RSUs, warrants and notes stay in the archive. The file's totals per holder and class are compared with the drafts. An officer confirms the batch with captable.confirm and batch_id. A file imported before is refused.

## Request body

- union
  - object
    - `source` 'spreadsheet' | 'pulley' | 'carta'
    - `mapping` object, required
    - `file_name` string, required
    - `content_base64` string, required
  - object
    - `source` 'spreadsheet' | 'pulley' | 'carta'
    - `mapping` object, required
    - `archive_file_id` string, required

## Response `200`

The result.

- object
  - `id` string, required
  - `source` 'spreadsheet' | 'pulley' | 'carta' | 'ocf', required
  - `status` 'drafted' | 'confirmed', required
  - `files` object[], required
    - `name` string, required
    - `sha256` string, required
  - `entries` object[], required
    - `id` string, required
    - `version` integer, required
    - `status` 'unconfirmed' | 'confirmed' | 'void', required
    - `effective_on` string, date, required
    - `summary` string, required
    - `holder` object, nullable, required
      - `party_id` string, required
      - `name` string, required
    - `terms` union, required
      - object
        - `type` 'share_class', required
        - `name` string, required
        - `kind` 'common' | 'preferred', required
        - `authorized` integer, nullable, required
        - `par_value` string, nullable, required
        - `conversion_ratio` string, required
        - `liquidation` string, nullable, required
      - object
        - `type` 'option_plan', required
        - `name` string, required
        - `reserved` integer, required
        - `class_entry_id` string, nullable, required
      - object
        - `type` 'pool_change', required
        - `plan_entry_id` string, required
        - `shares` integer, required
      - object
        - `type` 'stock_issuance', required
        - `class_entry_id` string, required
        - `class_name` string, required
        - `shares` integer, required
        - `price_per_share` string, nullable, required
        - `consideration` 'cash' | 'services' | 'assignment_of_assets', nullable, required
        - `vesting` object, nullable, required
          - `start` string, date, required
          - `months` integer, required
          - `cliff_months` integer, required
        - `security_id` string, nullable, required
      - object
        - `type` 'option_grant', required
        - `plan_entry_id` string, required
        - `plan_name` string, required
        - `options` integer, required
        - `exercise_price` string, required
        - `option_type` 'iso' | 'nso', nullable, required
        - `grant_date` string, date, nullable, required
        - `vesting` object, nullable, required
          - `start` string, date, required
          - `months` integer, required
          - `cliff_months` integer, required
        - `expires_on` string, date, nullable, required
        - `post_termination_months` integer, nullable, required
        - `acceleration` object, nullable, required
          - `text` string, required
          - `page` integer, nullable, required
        - `outstanding` integer, required
        - `vested` integer, required
      - object
        - `type` 'grant_cancellation', required
        - `grant_entry_id` string, required
        - `options` integer, required
        - `kind` 'termination' | 'expiry' | 'other', required
        - `reason` string, required
      - object
        - `type` 'valuation', required
        - `price_per_share` string, required
        - `provider` string, nullable, required
    - `facts` object[], required
      - `key` string, required
      - `text` string, required
      - `source` object, nullable, required
        - `text` string, required
        - `url` string, required
      - `needs_reason` boolean, required
      - `reason` string, nullable, required
    - `documents` object[], required
      - `role` string, required
      - `document_id` string, required
      - `version_id` string, required
      - `title` string, required
      - `sha256` string, required
    - `entered_by_agent` boolean, required
    - `quotes` object[], required
      - `field` string, required
      - `quote` string, required
    - `drafted_by` string, nullable, required
    - `confirmed_by` string, nullable, required
    - `confirmed_at` string, date-time, nullable, required
    - `authorization` 'on_file' | 'not_on_file', nullable, required
  - `reconciliation` object[], required
    - `kind` 'holder' | 'class', required
    - `label` string, required
    - `source` integer, required
    - `imported` integer, required
    - `difference` integer, required
  - `kept` object[], required
    - `sheet` string, nullable, required
    - `row` integer, nullable, required
    - `label` string, required
    - `reason` string, required
  - `created_at` string, date-time, required

## Other responses

- `default`: An RFC 9457 problem.

---

[API](https://skmtc.dev/binderwork/apis/binderwork-api.md) · [All operations](https://skmtc.dev/binderwork/apis/binderwork-api/llms.txt) · [OpenAPI document](https://skmtc.dev/binderwork/apis/binderwork-api/revisions/f8fab0ebee53?raw)
