API reference
Equity awards
Option, RSA and RSU grants: recorded with their vesting, expensed straight line by every close, and forfeited when the holder leaves.
- GET
/v1/equity_awardsList equity awards - POST
/v1/equity_awardsRecord an equity award - GET
/v1/equity_awards/{award_id}Get an equity award month by month - PATCH
/v1/equity_awards/{award_id}Change an equity award - DELETE
/v1/equity_awards/{award_id}Delete an equity award no close has expensed - POST
/v1/equity_awards/{award_id}/forfeitForfeit what has not vested
Guides: Record equity awards and expense them
List equity awards
GET/v1/equity_awards
client.equityAwards.list()
Equity awards, the newest first: who holds each, what it is worth, how much has vested and what the closes have expensed.
Parameters
| Name | Type | Description |
|---|---|---|
statusQuery | string or null | Only awards in this state. active, forfeited |
holder_party_idQuery | string or null | An id that starts with |
limitQuery | integer | Page size, 1–200. |
cursorQuery | string or null | The |
Response
Errors
- 400
- The request was malformed or a parameter is invalid.
- 401
- No valid credential was sent.
- 403
- The credential or the member's role does not allow this.
- 404
- No such resource in this ledger.
- 409
- A conflicting request, e.g. one with the same Idempotency-Key still running.
- 422
- A well-formed request a business rule refused.
- 429
- Too many requests; retry after the Retry-After header.
- 500
- Something failed on our side; the request_id identifies it.
Example
curl "https://api.ledgerit.ai/v1/equity_awards" \
-H "Authorization: Bearer $LEDGERIT_TOKEN"Record an equity award
POST/v1/equity_awards· Idempotent
client.equityAwards.create()
Record an option, RSA or RSU grant.
Nothing posts now. Every close from the grant date expenses it straight
line over its vesting, split by its department; service before the grant
is caught up at the first close after it. Refused with
equity_award_terms for a holder, department or account not of these
books, or a cliff longer than its vesting.
Request body
Response
Errors
- 400
- The request was malformed or a parameter is invalid.
- 401
- No valid credential was sent.
- 403
- The credential or the member's role does not allow this.
- 404
- No such resource in this ledger.
- 409
- A conflicting request, e.g. one with the same Idempotency-Key still running.
- 422
- A well-formed request a business rule refused.
- 429
- Too many requests; retry after the Retry-After header.
- 500
- Something failed on our side; the request_id identifies it.
Example
curl -X POST "https://api.ledgerit.ai/v1/equity_awards" \
-H "Authorization: Bearer $LEDGERIT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"department_value_id":"…","fair_value":0,"grant_date":"2026-09-30","holder_party_id":"…","shares":0,"type":"iso","vesting_starts_on":"2026-09-30"}'Get an equity award month by month
GET/v1/equity_awards/{award_id}
client.equityAwards.get()
An equity award month by month: shares vested and expense to date, and every close that expensed it.
Parameters
| Name | Type | Description |
|---|---|---|
award_idPath · Required | string | An id that starts with |
Response
Errors
- 400
- The request was malformed or a parameter is invalid.
- 401
- No valid credential was sent.
- 403
- The credential or the member's role does not allow this.
- 404
- No such resource in this ledger.
- 409
- A conflicting request, e.g. one with the same Idempotency-Key still running.
- 422
- A well-formed request a business rule refused.
- 429
- Too many requests; retry after the Retry-After header.
- 500
- Something failed on our side; the request_id identifies it.
Example
curl "https://api.ledgerit.ai/v1/equity_awards/{award_id}" \
-H "Authorization: Bearer $LEDGERIT_TOKEN"Change an equity award
PATCH/v1/equity_awards/{award_id}· Idempotent
client.equityAwards.update()
Change an award's memo, or its terms until a close expenses it.
Refused with equity_award_in_use for a term once its expense is in the
books: forfeit it and grant it again.
Parameters
| Name | Type | Description |
|---|---|---|
award_idPath · Required | string | An id that starts with |
Request body
Response
Errors
- 400
- The request was malformed or a parameter is invalid.
- 401
- No valid credential was sent.
- 403
- The credential or the member's role does not allow this.
- 404
- No such resource in this ledger.
- 409
- A conflicting request, e.g. one with the same Idempotency-Key still running.
- 422
- A well-formed request a business rule refused.
- 429
- Too many requests; retry after the Retry-After header.
- 500
- Something failed on our side; the request_id identifies it.
Example
curl -X PATCH "https://api.ledgerit.ai/v1/equity_awards/{award_id}" \
-H "Authorization: Bearer $LEDGERIT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{}'Delete an equity award no close has expensed
DELETE/v1/equity_awards/{award_id}· Idempotent
client.equityAwards.delete()
Delete an award recorded in error, before any close has expensed it.
Refused with equity_award_in_use after: forfeit it instead.
Parameters
| Name | Type | Description |
|---|---|---|
award_idPath · Required | string | An id that starts with |
Response
204No content
Errors
- 400
- The request was malformed or a parameter is invalid.
- 401
- No valid credential was sent.
- 403
- The credential or the member's role does not allow this.
- 404
- No such resource in this ledger.
- 409
- A conflicting request, e.g. one with the same Idempotency-Key still running.
- 422
- A well-formed request a business rule refused.
- 429
- Too many requests; retry after the Retry-After header.
- 500
- Something failed on our side; the request_id identifies it.
Example
curl -X DELETE "https://api.ledgerit.ai/v1/equity_awards/{award_id}" \
-H "Authorization: Bearer $LEDGERIT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)"Forfeit what has not vested
POST/v1/equity_awards/{award_id}/forfeit· Idempotent
client.equityAwards.forfeit()
The holder left: forfeit what had not vested by their last day.
The expense comes down to the fair value of the shares that vested, and
the next close takes the rest back. Final. Refused with
equity_award_not_forfeitable when it was already forfeited or the day
is before the grant.
Parameters
| Name | Type | Description |
|---|---|---|
award_idPath · Required | string | An id that starts with |
Request body
Response
Errors
- 400
- The request was malformed or a parameter is invalid.
- 401
- No valid credential was sent.
- 403
- The credential or the member's role does not allow this.
- 404
- No such resource in this ledger.
- 409
- A conflicting request, e.g. one with the same Idempotency-Key still running.
- 422
- A well-formed request a business rule refused.
- 429
- Too many requests; retry after the Retry-After header.
- 500
- Something failed on our side; the request_id identifies it.
Example
curl -X POST "https://api.ledgerit.ai/v1/equity_awards/{award_id}/forfeit" \
-H "Authorization: Bearer $LEDGERIT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"forfeited_on":"2026-09-30"}'Objects
The objects these operations take and return.
EquityAwardPage
| Name | Type | Description |
|---|---|---|
dataRequired | array of EquityAwardOut | |
has_moreRequired | boolean | |
next_cursorRequired | string or null |
EquityAwardCreate
| Name | Type | Description |
|---|---|---|
cliff_months | integer | Months before anything vests; 0 for no cliff. |
department_value_idRequired | string | The department its expense belongs to: a value of |
expense_account_id | string or null | An id that starts with |
fair_valueRequired | number | string | One share's fair value on the grant date: an option's Black-Scholes value, an RSU's price. |
grant_dateRequired | string (date) | The day the board granted it. |
holder_party_idRequired | string | Who holds it: a counterparty of these books. |
memo | string or null | |
reserve_account_id | string or null | An id that starts with |
sharesRequired | integer | How many shares it grants. |
typeRequired | string |
iso, nso, rsa, rsu |
vesting_months | integer | How many months it vests over. |
vesting_starts_onRequired | string (date) | The vesting start date. |
EquityAwardDetailOut
| Name | Type | Description |
|---|---|---|
created_atRequired | string (date-time) | |
currencyRequired | string | |
departmentRequired | DepartmentRef | The department its expense is reported under. |
expense_accountRequired | AccountRef | Where it is expensed, 6295 Stock-based compensation by default. |
expensedRequired | string | What the closes have expensed for it so far. |
fair_valueRequired | string | One share's fair value on the grant date, in the books' currency. |
forfeited_onRequired | string (date) or null | The day it was forfeited. |
grant_dateRequired | string (date) | The day the board granted it. Nothing is expensed before it. |
grant_valueRequired | string | Shares times fair value: what it costs in all if it fully vests. |
holderRequired | HolderRef | Who holds it: a person among the books' counterparties. |
idRequired | string | An id that starts with |
memoRequired | string or null | |
monthsRequired | array of AwardMonthOut | Every month from the grant to the last vesting date (or the forfeiture), oldest first. |
reserve_accountRequired | AccountRef | What it is expensed against, 3400 by default. |
runsRequired | array of AwardRunOut | Every close that expensed it, oldest first. |
sharesRequired | integer | How many shares it grants. |
statusRequired | string |
active, forfeited |
typeRequired | string |
iso, nso, rsa, rsu |
vested_sharesRequired | integer | Shares vested today. |
vesting_scheduleRequired | VestingSchedule | |
vests_fully_onRequired | string (date) | The day its last shares vest. |
EquityAwardChange
Only what is sent changes. Terms change only while none of its expense is in the books.
| Name | Type | Description |
|---|---|---|
cliff_months | integer or null | |
department_value_id | string or null | An id that starts with |
expense_account_id | string or null | An id that starts with |
fair_value | number | string or null | |
grant_date | string (date) or null | |
holder_party_id | string or null | An id that starts with |
memo | string or null | |
reserve_account_id | string or null | An id that starts with |
shares | integer or null | |
type | string or null | One of iso, nso, rsa, rsu |
vesting_months | integer or null | |
vesting_starts_on | string (date) or null |
ForfeitureIn
| Name | Type | Description |
|---|---|---|
forfeited_onRequired | string (date) | The holder's last day: what had not vested by then is forfeited. |
EquityAwardOut
| Name | Type | Description |
|---|---|---|
created_atRequired | string (date-time) | |
currencyRequired | string | |
departmentRequired | DepartmentRef | The department its expense is reported under. |
expense_accountRequired | AccountRef | Where it is expensed, 6295 Stock-based compensation by default. |
expensedRequired | string | What the closes have expensed for it so far. |
fair_valueRequired | string | One share's fair value on the grant date, in the books' currency. |
forfeited_onRequired | string (date) or null | The day it was forfeited. |
grant_dateRequired | string (date) | The day the board granted it. Nothing is expensed before it. |
grant_valueRequired | string | Shares times fair value: what it costs in all if it fully vests. |
holderRequired | HolderRef | Who holds it: a person among the books' counterparties. |
idRequired | string | An id that starts with |
memoRequired | string or null | |
reserve_accountRequired | AccountRef | What it is expensed against, 3400 by default. |
sharesRequired | integer | How many shares it grants. |
statusRequired | string |
active, forfeited |
typeRequired | string |
iso, nso, rsa, rsu |
vested_sharesRequired | integer | Shares vested today. |
vesting_scheduleRequired | VestingSchedule | |
vests_fully_onRequired | string (date) | The day its last shares vest. |
DepartmentRef
| Name | Type | Description |
|---|---|---|
idRequired | string | An id that starts with |
nameRequired | string |
AccountRef
| Name | Type | Description |
|---|---|---|
codeRequired | string | |
idRequired | string | An id that starts with |
nameRequired | string |
HolderRef
| Name | Type | Description |
|---|---|---|
idRequired | string | An id that starts with |
nameRequired | string |
AwardMonthOut
| Name | Type | Description |
|---|---|---|
ends_onRequired | string (date) | The month's last day. |
expense_to_dateRequired | string | What it should have cost by the end of the month, in all. |
vested_sharesRequired | integer | Shares vested by the end of the month. |
AwardRunOut
| Name | Type | Description |
|---|---|---|
amountRequired | string | What the run expensed for this award; below zero when it took expense back. |
entry_idRequired | string | The entry that posted it. |
period_ends_onRequired | string (date) | The month the run expensed. |
reversedRequired | boolean | Whether that entry was reversed; a reversed run counts for nothing. |
run_idRequired | string | An id that starts with |
VestingSchedule
| Name | Type | Description |
|---|---|---|
cliff_monthsRequired | integer | Months before anything vests: 12 for a one-year cliff, 0 for none. |
monthsRequired | integer | How many months it vests over: 48 for four years. |
starts_onRequired | string (date) | The vesting start date, often the day the holder started work. |