Ledgy’s GraphQL API Reference πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’»

πŸ‘‹ Welcome to our API docs!

Contact

API Support

support@ledgy.com

API Endpoints
https://app.ledgy.com/graphql

Authentication

Requests are authenticated with an OAuth 2.0 access token belonging to a service account. A service account is a set of credentials for one integration, which you can rotate or revoke on its own without affecting anything else you have connected to Ledgy.

Create one in the Ledgy app under Company Settings β†’ General β†’ API service accounts, then store the client ID and client secret it shows you. The secret is displayed only once and can never be retrieved again β€” only rotated.

Exchange the credentials for an access token using the OAuth 2.0 client_credentials grant:

curl --request POST \
  --url 'https://app.ledgy.com/auth/oidc-idp/token' \
  --data 'grant_type=client_credentials' \
  --data 'client_id=<clientId>' \
  --data 'client_secret=<clientSecret>'

Service accounts authenticate with client_secret_post, so the client ID and secret belong in the request body as shown above β€” HTTP Basic authentication is not accepted. Configure your OAuth client library accordingly if it defaults to client_secret_basic.

The response contains an access_token that is bound to your company, grants read access to this API, and expires after 24 hours. Request a new one when it expires β€” most OAuth client libraries handle that for you. Send it as a bearer token:

curl --request POST \
  --header 'content-type: application/json' \
  --header 'Authorization: Bearer <accessToken>' \
  --url 'https://app.ledgy.com/graphql' \
  --data '{"query":"{ auth { companyId companyName } }"}'

Rather than hard-coding the token endpoint, you can discover it from the authorization server metadata at https://app.ledgy.com/auth/oidc-idp/.well-known/oauth-authorization-server.

Rotating and revoking credentials

Both actions live next to the service account in Company Settings β†’ General β†’ API service accounts.

Rotate secret issues a new client secret and invalidates the current one immediately; access tokens that were already issued keep working for the remainder of their 24 hours. To rotate without downtime, create a second service account, move the integration over to it, and revoke the first one once the switch is confirmed.

Revoke deletes the service account and invalidates its outstanding access tokens right away. If credentials have been exposed, revoke rather than rotate β€” rotation leaves already-issued tokens usable for up to 24 hours.

Legacy API keys (deprecated)

Before service accounts, this API was accessed with a single static company apiKey sent directly as the bearer token. Existing keys keep working for now and no new ones are issued; the mechanism will be removed in a future release.

If you still authenticate with an API key, migrate to a service account: the credentials are scoped per integration, the tokens are short-lived, and revocation takes effect immediately.

Rate limits

Our API has a rate limit of 20 requests every 5 seconds per company.

Queries

auth

Description

The auth operation is a basic interface designed for authentication purposes. The operation user can authenticate their credentials and obtain basic company information.

Response

Returns an Auth!

Example

Query
query auth {
  auth {
    companyId
    companyName
  }
}
Response
{
  "data": {
    "auth": {
      "companyId": "4",
      "companyName": "xyz789"
    }
  }
}

companyCaptable

Description

The companyCaptable operation is a Ledgy interface for one specific company. The operation user can retrieve cap table data about the queried company.

Response

Returns a CompanyCaptableResult!

Arguments
Name Description
groupBy - [CaptableGroupBy] Group the captable by one or multiple fields
date - Date Only transactions before this date will be retrieved. Defaults to today if none is provided

Example

Query
query companyCaptable(
  $groupBy: [CaptableGroupBy],
  $date: Date
) {
  companyCaptable(
    groupBy: $groupBy,
    date: $date
  ) {
    rows {
      ...CaptableRowFragment
    }
  }
}
Variables
{
  "groupBy": ["stakeholderName"],
  "date": "2007-12-03"
}
Response
{"data": {"companyCaptable": {"rows": [CaptableRow]}}}

companyTransactions

Description

The companyTransactions operation is a Ledgy interface for one specific company. The operation will retrieve transaction data about the queried company.

Response

Returns a CompanyTransactionsResult!

Arguments
Name Description
types - [TransactionType!] Types of transaction to be retrieved
date - Date Only transactions before this date will be retrieved. Defaults to today if none is provided

Example

Query
query companyTransactions(
  $types: [TransactionType!],
  $date: Date
) {
  companyTransactions(
    types: $types,
    date: $date
  ) {
    rows {
      ... on Convertible {
        ...ConvertibleFragment
      }
      ... on EquitySettlement {
        ...EquitySettlementFragment
      }
      ... on Grant {
        ...GrantFragment
      }
      ... on Transfer {
        ...TransferFragment
      }
    }
  }
}
Variables
{
  "types": ["convertible"],
  "date": "2007-12-03"
}
Response
{"data": {"companyTransactions": {"rows": [Convertible]}}}

portfolioCaptable

Description

The portfolioCaptable operation is a Ledgy portfolio-based interface for one specific portfolio company. The operation user can retrieve cap table data about the queried company.

Response

Returns a PortfolioCaptableResult!

Arguments
Name Description
companyId - String! Ledgy company ID for the queried cap table
groupBy - [CaptableGroupBy] Group the captable by one or multiple fields
date - Date Only transactions before this date will be retrieved. Defaults to today if none is provided

Example

Query
query portfolioCaptable(
  $companyId: String!,
  $groupBy: [CaptableGroupBy],
  $date: Date
) {
  portfolioCaptable(
    companyId: $companyId,
    groupBy: $groupBy,
    date: $date
  ) {
    rows {
      ...CaptableRowFragment
    }
  }
}
Variables
{
  "companyId": "abc123",
  "groupBy": ["stakeholderName"],
  "date": "2007-12-03"
}
Response
{"data": {"portfolioCaptable": {"rows": [CaptableRow]}}}

portfolioPerformance

Description

The portfolioPerformance operation is a Ledgy portfolio-based interface. The operation user can retrieve data about the portfolio companies linked to an investment firm.

Response

Returns a PortfolioPerformanceResult!

Arguments
Name Description
date - Date Only investments before this date will be retrieved. Defaults to today if none is provided

Example

Query
query portfolioPerformance($date: Date) {
  portfolioPerformance(date: $date) {
    rows {
      ...PortfolioPerformanceRowFragment
    }
  }
}
Variables
{"date": "2007-12-03"}
Response
{
  "data": {
    "portfolioPerformance": {
      "rows": [PortfolioPerformanceRow]
    }
  }
}

portfolioTransactions

Description

The portfolioTransactions operation is a Ledgy portfolio-based interface for one specific portfolio company. The operation will retrieve transaction data about the queried company.

Response

Returns a PortfolioTransactionsResult!

Arguments
Name Description
companyId - String! Ledgy company ID for the queried cap table
types - [TransactionType!] Types of transaction to be retrieved
date - Date Only transactions before this date will be retrieved. Defaults to today if none is provided

Example

Query
query portfolioTransactions(
  $companyId: String!,
  $types: [TransactionType!],
  $date: Date
) {
  portfolioTransactions(
    companyId: $companyId,
    types: $types,
    date: $date
  ) {
    rows {
      ... on Convertible {
        ...ConvertibleFragment
      }
      ... on EquitySettlement {
        ...EquitySettlementFragment
      }
      ... on Grant {
        ...GrantFragment
      }
      ... on Transfer {
        ...TransferFragment
      }
    }
  }
}
Variables
{
  "companyId": "abc123",
  "types": ["convertible"],
  "date": "2007-12-03"
}
Response
{
  "data": {
    "portfolioTransactions": {"rows": [Convertible]}
  }
}

Types

Address

Description

Address Object

Fields
Field Name Description
line1 - String First address line
line2 - String Second address line
postcode - String Postcode
city - String City
country - String Country
Example
{
  "line1": "Forchstrasse 60",
  "line2": "Attic",
  "postcode": "8008",
  "city": "Zurich",
  "country": "CH"
}

Auth

Description

Auth Object

Fields
Field Name Description
companyId - ID! Internal Ledgy company ID
companyName - String! Name of the company
Example
{"companyId": 4, "companyName": "xyz789"}

Boolean

Description

The Boolean scalar type represents true or false.

CaptableGroupBy

Values
Enum Value Description

stakeholderName

Group by stakeholder

shareClassName

Group by share class

captableGroup

Group by Ledgy group

grantName

Group by grant
Example
"stakeholderName"

CaptableRow

Description

The cap table row is an aggregation of company transaction values and metadata. Each CaptableRow is an aggregation of transactions per CaptableGroupBy value. If no grouping parameter is provided it will default to stakeholderName.

Fields
Field Name Description
category - String A Ledgy classification of different transaction types, including transactions on different share classes, granted and grantable equity plans transactions, and convertible loans
group - String A Ledgy-custom grouping, including all assigned stakeholder groups, grantable equity plans transactions, and company transactions
stakeholderId - String A unique ID for the stakeholder
stakeholderName - String Full name of the stakeholder
stakeholderEmail - String Email of stakeholder
stakeholderType - String Type of stakeholder (i.e. natural vs legal)
stakeholderHrisIdentifier - String Unique identifier provided by an external HRIS (Human Resources Information System) and imported to Ledgy. Often used to sync data between Ledgy and the HR system
beneficiaryId - String A unique ID for the beneficiary
beneficiaryName - String Full name of the beneficiary
shareClassName - String Share class name
grantName - String Name of the grant
grantType - String Type of the grant
equityPlanName - String Name of the equity plan
ownershipPercentage - Float Percentage of ownership in the company (non-diluted)
dilutedPercentage - Float Percentage of ownership in the company (diluted)
issuedShares - Int Amount of issued shares
dilutedShares - Int Amount of diluted shares
dilutedGrantedShares - Int Amount of granted shares (shares equivalent)
grantedShares - Int Amount of granted shares
dilutedExercisedShares - Int Amount of exercised shares (shares equivalent)
exercisedShares - Int Amount of exercised shares
dilutedTerminatedShares - Int Amount of terminated shares (shares equivalent)
terminatedShares - Int Amount of terminated shares
dilutedOutstanding - Int Amount of granted equity still outstanding (shares equivalent). Corresponds to the Diluted outstanding column in the Ledgy app
outstanding - Int Amount of granted equity still outstanding: granted minus exercised, settled, expired and terminated amounts. Corresponds to the Outstanding column in the Ledgy app
vestedShares - Int Number of granted awards that have met their vesting conditions at the query date, accounting for termination events. Corresponds to the Grant vested column in the Ledgy app
vestedIssuedShares - Int Number of issued shares that have met their vesting conditions at the query date. Corresponds to the Shares vested column in the Ledgy app. The chosen grouping affects this value
vesting - Vesting Vesting object
currency - String Currency for monetary values in cap table (company currency)
strikePrice - Float Strike price
investment - Float Investment amount (monetary)
documentCount - Int Number of documents attached to transactions in the row
Example
{
  "category": "Preferred shares",
  "group": "Investors",
  "stakeholderId": "B34RtoyMrR6pvxTmo",
  "stakeholderName": "Peleton Capital",
  "stakeholderEmail": "abc123",
  "stakeholderType": "Legal",
  "stakeholderHrisIdentifier": "abc123",
  "beneficiaryId": "xyz789",
  "beneficiaryName": "abc123",
  "shareClassName": "abc123",
  "grantName": "xyz789",
  "grantType": "xyz789",
  "equityPlanName": "xyz789",
  "ownershipPercentage": 27.4,
  "dilutedPercentage": 20.05,
  "issuedShares": 31415,
  "dilutedShares": 31415,
  "dilutedGrantedShares": 987,
  "grantedShares": 123,
  "dilutedExercisedShares": 123,
  "exercisedShares": 987,
  "dilutedTerminatedShares": 123,
  "terminatedShares": 123,
  "dilutedOutstanding": 123,
  "outstanding": 987,
  "vestedShares": 987,
  "vestedIssuedShares": 123,
  "vesting": Vesting,
  "currency": "EUR",
  "strikePrice": 123.45,
  "investment": 42000000,
  "documentCount": 4
}

CompanyCaptableResult

Fields
Field Name Description
rows - [CaptableRow!]! An array of cap table rows
Example
{"rows": [CaptableRow]}

CompanyTransactionsResult

Description

Returns { rows: [Transaction!]! } (Transaction)

Fields
Field Name Description
rows - [Transaction!]!
Example
{"rows": [Convertible]}

Convertible

Fields
Field Name Description
transactionId - String A unique ID for the transaction
transactionNumber - Int A human readable number identifying each transaction in the UI
transactionType - TransactionType Type of transaction
date - Date Date of the transaction
lastUpdatedAt - Date Last time the transaction was modified
stakeholderId - String A unique ID for the stakeholder
stakeholderName - String Name of the stakeholder
stakeholderEmail - String Email of stakeholder
stakeholderType - String Type of stakeholder (i.e. natural vs legal)
stakeholderHrisIdentifier - String Unique identifier string provided by an external HRIS (Human Resources Information System) and imported to Ledgy. Often used to sync data between Ledgy and the HR system
currency - String Currency used in the transaction
investment - Float Amount invested (monetary)
interestRate - Float Interest rate
interestAccumulated - Float Interest accumulated since start date or issuance date
interestStartDate - Date Date at which interest starts being taken into account
dayBasis - Int Number of days per year for calculating daily interest (360 vs 365)
maturityDate - Date Date of maturity
cap - Float Valuation cap (monetary)
discount - Float Percent discount
payback - Boolean Whether the convertible will be paid back when triggered
customFields - [TransactionCustomField!]! Company-defined custom transaction fields for this transaction. Only the fields explicitly requested by name (and that have a value set) are returned.
Arguments
names - [String!]!

Names of the custom fields to return. Only fields whose name exactly matches an entry here are included.

Example
{
  "transactionId": "Z7RNoe68NjQdykibC",
  "transactionNumber": 123,
  "transactionType": "convertible",
  "date": "2020-07-08T00:00:00.000Z",
  "lastUpdatedAt": "2021-14-12T00:00:00.000Z",
  "stakeholderId": "B34RtoyMrR6pvxTmo",
  "stakeholderName": "Passionate Capital",
  "stakeholderEmail": "abc123",
  "stakeholderType": "legal",
  "stakeholderHrisIdentifier": "xyz789",
  "currency": "GBP",
  "investment": 1700000,
  "interestRate": 2.12,
  "interestAccumulated": 50299.18,
  "interestStartDate": "2020-09-08T00:00:00.000Z",
  "dayBasis": 365,
  "maturityDate": "2022-04-07T00:00:00.000Z",
  "cap": 42500000,
  "discount": 5,
  "payback": false,
  "customFields": [TransactionCustomField]
}

CurrencyTransaction

Fields
Field Name Description
currency - String Currency used in the transaction
Possible Types
CurrencyTransaction Types

Convertible

Grant

Transfer

EquitySettlement

Example
{"currency": "xyz789"}

Date

Description

The Date scalar type is a custom scalar. In the JSON response it does not appear as a Javascript Date Object, but a String representing an ISO 8601-formatted date (i.e. yyyy-MM-ddThh:mm:ss.msZ).

Example
"2007-12-03"

EquitySettlement

Description

An equity settlement (exercise) of an equity plan grant. Each settlement is returned as exactly one row: the effect on the stakeholder whose grant is settled, i.e. the holding the settlement creates. The settlement's accompanying internal effects (dilution bookkeeping, pool withholding and transferring-stakeholder legs) are not returned as separate rows.

Fields
Field Name Description
transactionId - String A unique ID for the transaction
transactionNumber - Int A human readable number identifying each transaction in the UI
transactionType - TransactionType Type of transaction
date - Date Date of the transaction
lastUpdatedAt - Date Last time the transaction was modified
stakeholderId - String A unique ID for the stakeholder
stakeholderName - String Name of the stakeholder
stakeholderEmail - String Email of stakeholder
stakeholderType - String Type of stakeholder (i.e. natural vs legal)
stakeholderHrisIdentifier - String Unique identifier string provided by an external HRIS (Human Resources Information System) and imported to Ledgy. Often used to sync data between Ledgy and the HR system
currency - String Currency used in the transaction
grantTransactionId - String A unique ID for the grant this settlement exercises. Equals the transactionId of the corresponding Grant, so settlements can be joined to their grants
equitySettled - Int Number of granted awards settled by this settlement
dilutedEquitySettled - Int Number of settled awards (shares equivalent)
exercised - Int Number of granted awards exercised by this settlement. Only set for grant types that can be exercised
dilutedExercised - Int Number of exercised awards (shares equivalent)
outstanding - Int Change in the number of the holder's outstanding awards caused by this settlement (negative)
dilutedOutstanding - Int Change in the number of outstanding awards caused by this settlement (shares equivalent, negative)
issued - Int Number of shares issued to the stakeholder by this settlement, net of any withheld shares
withheldSharesAmount - Int Number of issued shares withheld by the company as part of the settlement, e.g. to cover taxes
settlementMethod - String How the settlement was covered: one of hold-all, sell-all, sell-to-cover, withhold-all or withhold-to-cover
sharePrice - Float Price paid per share in the settlement
customFields - [TransactionCustomField!]! Company-defined custom transaction fields for this transaction. Only the fields explicitly requested by name (and that have a value set) are returned.
Arguments
names - [String!]!

Names of the custom fields to return. Only fields whose name exactly matches an entry here are included.

Example
{
  "transactionId": "kwy7cvZESwXXoBJ4C",
  "transactionNumber": 987,
  "transactionType": "equitySettlement",
  "date": "2021-11-04T00:00:00.000Z",
  "lastUpdatedAt": "2021-14-12T00:00:00.000Z",
  "stakeholderId": "B34RtoyMrR6pvxTmo",
  "stakeholderName": "Marie Curious",
  "stakeholderEmail": "abc123",
  "stakeholderType": "natural",
  "stakeholderHrisIdentifier": "xyz789",
  "currency": "EUR",
  "grantTransactionId": "u3YW7J6sXStnjpt5C",
  "equitySettled": 200,
  "dilutedEquitySettled": 200,
  "exercised": 200,
  "dilutedExercised": 200,
  "outstanding": -200,
  "dilutedOutstanding": -200,
  "issued": 150,
  "withheldSharesAmount": 50,
  "settlementMethod": "withhold-to-cover",
  "sharePrice": 4.72,
  "customFields": [TransactionCustomField]
}

Float

Description

The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.

Example
987.65

Grant

Fields
Field Name Description
transactionId - String A unique ID for the transaction
transactionNumber - Int A human readable number identifying each transaction in the UI
transactionType - TransactionType Type of transaction
date - Date Date of the transaction
lastUpdatedAt - Date Last time the transaction was modified
grantType - String Type of grant (option/phantom/warrant/stock from pool)
stakeholderId - String A unique ID for the stakeholder
stakeholderName - String Name of the stakeholder
stakeholderEmail - String Email of stakeholder
beneficiaryId - String A unique ID for the beneficiary stakeholder
beneficiaryName - String Name of the beneficiary stakeholder
stakeholderType - String Type of stakeholder (i.e. natural vs legal)
stakeholderHrisIdentifier - String Unique identifier string provided by an external HRIS (Human Resources Information System) and imported to Ledgy. Often used to sync data between Ledgy and the HR system
currency - String Currency used in the transaction
granted - Int Granted amount
dilutedGranted - Int Granted amount (shares equivalent)
diluted - Int Diluted shares
grantVested - Int Grant vested
dilutedGrantVested - Int Grant vested (shares equivalent)
strikePrice - Float Strike price
sharePrice - Float Purchase price
expiryDate - Date Expiry date
vesting - Vesting Vesting object
equityPlanName - String Name of the equity plan the grant is from
valueAtTransactionDate - Float Value of the grant at the time of granting
grantValue - Float Value of the grant at the latest valuation of the company
customFields - [TransactionCustomField!]! Company-defined custom transaction fields for this transaction. Only the fields explicitly requested by name (and that have a value set) are returned.
Arguments
names - [String!]!

Names of the custom fields to return. Only fields whose name exactly matches an entry here are included.

Example
{
  "transactionId": "u3YW7J6sXStnjpt5C",
  "transactionNumber": 123,
  "transactionType": "grant",
  "date": "2018-02-25T00:00:00.000Z",
  "lastUpdatedAt": "2021-14-12T00:00:00.000Z",
  "grantType": "warrant",
  "stakeholderId": "B34RtoyMrR6pvxTmo",
  "stakeholderName": "Marie Curious",
  "stakeholderEmail": "xyz789",
  "beneficiaryId": "J42RtyyLxR3pyhAca",
  "beneficiaryName": "Alan Turning",
  "stakeholderType": "natural",
  "stakeholderHrisIdentifier": "abc123",
  "currency": "EUR",
  "granted": 3142,
  "dilutedGranted": 987,
  "diluted": 987,
  "grantVested": 123,
  "dilutedGrantVested": 987,
  "strikePrice": 0.1,
  "sharePrice": 0.05,
  "expiryDate": "2031-05-15T08:55:40.320Z",
  "vesting": Vesting,
  "equityPlanName": "Option Plan",
  "valueAtTransactionDate": 25000,
  "grantValue": 1500000,
  "customFields": [TransactionCustomField]
}

ID

Description

The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.

Example
4

Int

Description

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

Example
123

PortfolioCaptableResult

Fields
Field Name Description
rows - [CaptableRow!]! An array of cap table rows
Example
{"rows": [CaptableRow]}

PortfolioPerformanceResult

Fields
Field Name Description
rows - [PortfolioPerformanceRow!]! An array of investment performance table rows
Example
{"rows": [PortfolioPerformanceRow]}

PortfolioPerformanceRow

Description

The investment performance row is an aggregation of performance values and company metadata. Each PortfolioPerformanceRow takes into account values for all of the transactions in which the portfolio stakeholder is involved. Please note: all monetary values πŸ’° in this type are converted to portfolio currency.

Fields
Field Name Description
address - Address Address Object
companyName - String Name of the company
companyId - ID Internal Ledgy company ID
country - String Country of incorporation
currency - String Currency for all monetary values in investments performance
description - String Description of the company
industry - String Main industry of the company
irr - Float Internal Rate of Return (%)
investment - Float Investment in the company (monetary)
lastUpdatedAt - Date Last time a transaction was published by the company
multiple - Float Proceeds plus value, divided by invested
proceeds - Float Earnings from selling some or all shares, repayments of convertible loans, or other payments by the company (monetary)
value - Float Value of all currently owned shares at their latest share price, including outstanding convertible loans (monetary)
website - String Company website
Example
{
  "address": Address,
  "companyName": "Ledgy AG",
  "companyId": "4xyvEG8wR5qMYXnyy",
  "country": "US",
  "currency": "USD",
  "description": "The coolest company out there",
  "industry": "Fintech",
  "irr": 42,
  "investment": 5000000,
  "lastUpdatedAt": "2007-12-03",
  "multiple": 8.6,
  "proceeds": 1000000,
  "value": 42000000,
  "website": "https://ledgy.com"
}

PortfolioTransactionsResult

Description

Returns { rows: [Transaction!]! } (Transaction)

Fields
Field Name Description
rows - [Transaction!]!
Example
{"rows": [Convertible]}

StakeholderTransaction

Fields
Field Name Description
stakeholderId - String A unique ID for the stakeholder
stakeholderName - String Name of the stakeholder
stakeholderEmail - String Email of stakeholder
stakeholderType - String Type of stakeholder (i.e. natural vs legal)
stakeholderHrisIdentifier - String Unique identifier string provided by an external HRIS (Human Resources Information System) and imported to Ledgy. Often used to sync data between Ledgy and the HR system
Possible Types
StakeholderTransaction Types

Convertible

Grant

Transfer

EquitySettlement

Example
{
  "stakeholderId": "xyz789",
  "stakeholderName": "abc123",
  "stakeholderEmail": "xyz789",
  "stakeholderType": "abc123",
  "stakeholderHrisIdentifier": "xyz789"
}

String

Description

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

Example
"abc123"

Transaction

Example
Convertible

TransactionBase

Fields
Field Name Description
transactionId - String A unique ID for the transaction
transactionNumber - Int A human readable number identifying each transaction in the UI
transactionType - TransactionType Type of transaction
date - Date Date of the transaction
lastUpdatedAt - Date Last time the transaction was modified
Possible Types
TransactionBase Types

Convertible

Grant

Transfer

EquitySettlement

Example
{
  "transactionId": "abc123",
  "transactionNumber": 123,
  "transactionType": "convertible",
  "date": "2007-12-03",
  "lastUpdatedAt": "2007-12-03"
}

TransactionCustomField

Description

A company-defined custom transaction field together with this transaction's value for it

Fields
Field Name Description
name - String Name of the custom field, as configured by the company
value - String This transaction's value for the custom field, formatted as a display string (matches the value shown in the Ledgy app)
type - String The custom field's data type: one of text, number, percentage, monetary, date or select
Example
{"name": "Board approved", "value": "Yes", "type": "select"}

TransactionType

Values
Enum Value Description

convertible

Convertible loan

equitySettlement

Equity settlement (exercise) of an equity plan grant

grant

Equity plan grant

transfer

Transfer
Example
"convertible"

Transfer

Fields
Field Name Description
transactionId - String A unique ID for the transaction
transactionNumber - Int A human readable number identifying each transaction in the UI
transactionType - TransactionType Type of transaction
date - Date Date of the transaction
lastUpdatedAt - Date Last time the transaction was modified
stakeholderId - String A unique ID for the stakeholder receiving equity
stakeholderName - String Name of the stakeholder receiving equity
stakeholderEmail - String Email of stakeholder
stakeholderType - String Type of stakeholder (i.e. natural vs legal)
stakeholderHrisIdentifier - String Unique identifier string provided by an external HRIS (Human Resources Information System) and imported to Ledgy. Often used to sync data between Ledgy and the HR system
fromStakeholderId - String A unique ID for the stakeholder transferring equity
fromStakeholderName - String Name of the stakeholder transferring equity
currency - String Currency used in the transaction
proceeds - Float Proceeds
sharePrice - Float Transfer price
diluted - Int Diluted shares
issued - Int Issued shares
customFields - [TransactionCustomField!]! Company-defined custom transaction fields for this transaction. Only the fields explicitly requested by name (and that have a value set) are returned.
Arguments
names - [String!]!

Names of the custom fields to return. Only fields whose name exactly matches an entry here are included.

Example
{
  "transactionId": "xyz789",
  "transactionNumber": 123,
  "transactionType": "convertible",
  "date": "2007-12-03",
  "lastUpdatedAt": "2007-12-03",
  "stakeholderId": "abc123",
  "stakeholderName": "xyz789",
  "stakeholderEmail": "xyz789",
  "stakeholderType": "abc123",
  "stakeholderHrisIdentifier": "abc123",
  "fromStakeholderId": "abc123",
  "fromStakeholderName": "xyz789",
  "currency": "abc123",
  "proceeds": 987.65,
  "sharePrice": 123.45,
  "diluted": 123,
  "issued": 123,
  "customFields": [TransactionCustomField]
}

Vesting

Fields
Field Name Description
type - String Vesting type (simple, custom, performance)
startDate - Date Vesting start date
duration - Int Full duration of vesting, in months
interval - Int Vesting interval, in months
cliff - Int Vesting cliff, in months
rounding - String How vesting is rounded at each interval (down, up, nearest)
vestingOn - VestingOnType Select the day of the month on which the grant should vest. This only affects dates after the cliff
Example
{
  "type": "simple",
  "startDate": "2021-03-02T00:00:00.000Z",
  "duration": 48,
  "interval": 1,
  "cliff": 6,
  "rounding": "nearest",
  "vestingOn": "grantDate"
}

VestingOnType

Description

Vesting Object

Values
Enum Value Description

grantDate

Grant date

startDate

Start date

firstOfMonth

First day of the month

lastOfMonth

Last day of the month
Example
"grantDate"