> For the complete documentation index, see [llms.txt](https://docs.kick.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kick.co/api/api-reference/journal-entries.md).

# Journal Entries

Journal entries on this surface are the manual entries booked against one entity's ledger, returned with their debit and credit lines. Every endpoint is nested under the entity uuid, and `ledgerBasis` selects the ledger, defaulting to `cash`. Posting to the accrual ledger means opening it first through [Ledgers](/api/api-reference/ledgers.md).

`ledgerBasis` addresses the entry rather than describing it, so it is a query parameter on retrieval, update, and delete, and a body field on creation. It cannot be changed after the fact: an entry read on the wrong basis comes back as `404`.

Lines identify their account by uuid and chart of accounts code, so an entry reconciles against [Chart of Accounts](/api/api-reference/chart-of-accounts.md) without an extra lookup. Total debits have to equal total credits, on creation and on every update that sends `lines`, and each line has to post to an account of that same entity.

Updates are partial, so an entry can be retitled without resending its lines, but `lines` replaces the whole set when present. Writes go through the same path the Kick app uses, so a closed book rejects them: an entry dated on or before the entity's lock date answers `409`, and moving an entry requires both its stored date and its new one to fall outside the closed period.

Postings Kick generates on its own, from bank transactions, bills, invoices, opening balances, and loans, are not part of this surface. To read every posting in the ledger regardless of where it came from, use the [general ledger report](/api/api-reference/reports.md).

## List journal entries

> Returns the entity's manual journal entries on the selected ledger, most recent first. Results are paged with \`limit\`/\`offset\` and can be narrowed to an inclusive calendar day range.

```json
{"openapi":"3.0.2","info":{"title":"Kick Platform API","version":"v1"},"servers":[{"description":"Production","url":"https://use.kick.co/api"}],"security":[{"organizationAccessToken":[]}],"components":{"securitySchemes":{"organizationAccessToken":{"description":"Organization access token issued by Kick, sent as `Authorization: Bearer kick_org_...`.","scheme":"bearer","type":"http"}}},"paths":{"/platform/v1/entities/{entityId}/journal-entries":{"get":{"description":"Returns the entity's manual journal entries on the selected ledger, most recent first. Results are paged with `limit`/`offset` and can be narrowed to an inclusive calendar day range.","operationId":"journalEntries.list","parameters":[{"in":"path","name":"entityId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"limit","schema":{"default":100,"maximum":100,"minimum":1,"type":"integer"}},{"in":"query","name":"offset","schema":{"default":0,"minimum":0,"nullable":true,"type":"integer"}},{"in":"query","name":"startDate","schema":{"type":"string"}},{"in":"query","name":"endDate","schema":{"type":"string"}},{"in":"query","name":"ledgerBasis","schema":{"default":"cash","enum":["cash","accruals"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"properties":{"date":{"format":"date-time","type":"string"},"entityId":{"format":"uuid","type":"string"},"id":{"format":"uuid","type":"string"},"ledgerBasis":{"enum":["cash","accruals"],"type":"string"},"lines":{"items":{"properties":{"accountCode":{"type":"integer"},"accountId":{"format":"uuid","type":"string"},"accountName":{"type":"string"},"classIds":{"items":{"format":"uuid","type":"string"},"type":"array"},"creditAmount":{"nullable":true,"type":"number"},"debitAmount":{"nullable":true,"type":"number"},"description":{"nullable":true,"type":"string"},"memo":{"nullable":true,"type":"string"}},"required":["accountId","accountCode","accountName","debitAmount","creditAmount","memo","description","classIds"],"type":"object"},"type":"array"},"memo":{"nullable":true,"type":"string"},"sourceType":{"enum":["transaction","manual_journal_entry","opening_balance","loan","bill","invoice"],"type":"string"}},"required":["id","entityId","date","memo","ledgerBasis","sourceType","lines"],"type":"object"},"type":"array"},"pagination":{"properties":{"limit":{"type":"integer"},"offset":{"type":"integer"},"total":{"type":"integer"}},"required":["limit","offset","total"],"type":"object"}},"required":["data","pagination"],"type":"object"}}},"description":"200"},"400":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"400"},"401":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"401"},"404":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"404"},"429":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"429"}},"summary":"List journal entries","tags":["journalEntries"]}}}}
```

## Create a journal entry

> Writes a manual journal entry to the entity's ledger. Total debits must equal total credits, and every line must post to an account of that entity's chart of accounts.

```json
{"openapi":"3.0.2","info":{"title":"Kick Platform API","version":"v1"},"servers":[{"description":"Production","url":"https://use.kick.co/api"}],"security":[{"organizationAccessToken":[]}],"components":{"securitySchemes":{"organizationAccessToken":{"description":"Organization access token issued by Kick, sent as `Authorization: Bearer kick_org_...`.","scheme":"bearer","type":"http"}}},"paths":{"/platform/v1/entities/{entityId}/journal-entries":{"post":{"description":"Writes a manual journal entry to the entity's ledger. Total debits must equal total credits, and every line must post to an account of that entity's chart of accounts.","operationId":"journalEntries.create","parameters":[{"in":"path","name":"entityId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"date":{"description":"Calendar day the entry is booked on, as YYYY-MM-DD.","type":"string"},"ledgerBasis":{"default":"cash","description":"Accounting ledger the entry is written to.","enum":["cash","accruals"],"type":"string"},"lines":{"description":"Double-entry lines of the entry. Total debits must equal total credits.","items":{"properties":{"accountId":{"description":"Chart of accounts account the line posts to. Must belong to the entity's ledger.","format":"uuid","type":"string"},"classIds":{"default":[],"description":"Classes assigned to the line, at most one per root dimension.","items":{"format":"uuid","type":"string"},"maxItems":10,"type":"array"},"creditAmount":{"description":"Credit amount, or null on a debit line.","minimum":0.01,"nullable":true,"type":"number"},"debitAmount":{"description":"Debit amount, or null on a credit line.","minimum":0.01,"nullable":true,"type":"number"},"description":{"default":"","description":"Free-form description of the line.","maxLength":500,"type":"string"}},"required":["accountId","debitAmount","creditAmount"],"type":"object"},"maxItems":500,"minItems":2,"type":"array"},"memo":{"description":"Free-form note on the entry.","maxLength":1000,"nullable":true,"type":"string"}},"required":["date","lines"],"type":"object"}}},"description":"Body"},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"journalEntry":{"properties":{"date":{"format":"date-time","type":"string"},"entityId":{"format":"uuid","type":"string"},"id":{"format":"uuid","type":"string"},"ledgerBasis":{"enum":["cash","accruals"],"type":"string"},"lines":{"items":{"properties":{"accountCode":{"type":"integer"},"accountId":{"format":"uuid","type":"string"},"accountName":{"type":"string"},"classIds":{"items":{"format":"uuid","type":"string"},"type":"array"},"creditAmount":{"nullable":true,"type":"number"},"debitAmount":{"nullable":true,"type":"number"},"description":{"nullable":true,"type":"string"},"memo":{"nullable":true,"type":"string"}},"required":["accountId","accountCode","accountName","debitAmount","creditAmount","memo","description","classIds"],"type":"object"},"type":"array"},"memo":{"nullable":true,"type":"string"},"sourceType":{"enum":["transaction","manual_journal_entry","opening_balance","loan","bill","invoice"],"type":"string"}},"required":["id","entityId","date","memo","ledgerBasis","sourceType","lines"],"type":"object"}},"required":["journalEntry"],"type":"object"}}},"description":"201"},"400":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"400"},"401":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"401"},"404":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"404"},"409":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"409"},"429":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"429"}},"summary":"Create a journal entry","tags":["journalEntries"]}}}}
```

## Retrieve a journal entry

> Returns a single manual journal entry of the entity. An entry on another ledger basis, or outside the organization's book of business, reads as not found.

```json
{"openapi":"3.0.2","info":{"title":"Kick Platform API","version":"v1"},"servers":[{"description":"Production","url":"https://use.kick.co/api"}],"security":[{"organizationAccessToken":[]}],"components":{"securitySchemes":{"organizationAccessToken":{"description":"Organization access token issued by Kick, sent as `Authorization: Bearer kick_org_...`.","scheme":"bearer","type":"http"}}},"paths":{"/platform/v1/entities/{entityId}/journal-entries/{journalEntryId}":{"get":{"description":"Returns a single manual journal entry of the entity. An entry on another ledger basis, or outside the organization's book of business, reads as not found.","operationId":"journalEntries.get","parameters":[{"in":"path","name":"entityId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"path","name":"journalEntryId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"ledgerBasis","schema":{"default":"cash","enum":["cash","accruals"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"journalEntry":{"properties":{"date":{"format":"date-time","type":"string"},"entityId":{"format":"uuid","type":"string"},"id":{"format":"uuid","type":"string"},"ledgerBasis":{"enum":["cash","accruals"],"type":"string"},"lines":{"items":{"properties":{"accountCode":{"type":"integer"},"accountId":{"format":"uuid","type":"string"},"accountName":{"type":"string"},"classIds":{"items":{"format":"uuid","type":"string"},"type":"array"},"creditAmount":{"nullable":true,"type":"number"},"debitAmount":{"nullable":true,"type":"number"},"description":{"nullable":true,"type":"string"},"memo":{"nullable":true,"type":"string"}},"required":["accountId","accountCode","accountName","debitAmount","creditAmount","memo","description","classIds"],"type":"object"},"type":"array"},"memo":{"nullable":true,"type":"string"},"sourceType":{"enum":["transaction","manual_journal_entry","opening_balance","loan","bill","invoice"],"type":"string"}},"required":["id","entityId","date","memo","ledgerBasis","sourceType","lines"],"type":"object"}},"required":["journalEntry"],"type":"object"}}},"description":"200"},"400":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"400"},"401":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"401"},"404":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"404"},"429":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"429"}},"summary":"Retrieve a journal entry","tags":["journalEntries"]}}}}
```

## Update a journal entry

> Updates a manual journal entry. Only the fields present in the body are touched; passing \`lines\` replaces the whole set, which must stay balanced. Both the stored entry and the new one must fall outside the closed period.

```json
{"openapi":"3.0.2","info":{"title":"Kick Platform API","version":"v1"},"servers":[{"description":"Production","url":"https://use.kick.co/api"}],"security":[{"organizationAccessToken":[]}],"components":{"securitySchemes":{"organizationAccessToken":{"description":"Organization access token issued by Kick, sent as `Authorization: Bearer kick_org_...`.","scheme":"bearer","type":"http"}}},"paths":{"/platform/v1/entities/{entityId}/journal-entries/{journalEntryId}":{"patch":{"description":"Updates a manual journal entry. Only the fields present in the body are touched; passing `lines` replaces the whole set, which must stay balanced. Both the stored entry and the new one must fall outside the closed period.","operationId":"journalEntries.update","parameters":[{"in":"path","name":"entityId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"path","name":"journalEntryId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"ledgerBasis","schema":{"default":"cash","enum":["cash","accruals"],"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"date":{"description":"Calendar day the entry is booked on, as YYYY-MM-DD.","type":"string"},"lines":{"description":"Full replacement set of double-entry lines. Total debits must equal total credits.","items":{"properties":{"accountId":{"description":"Chart of accounts account the line posts to. Must belong to the entity's ledger.","format":"uuid","type":"string"},"classIds":{"default":[],"description":"Classes assigned to the line, at most one per root dimension.","items":{"format":"uuid","type":"string"},"maxItems":10,"type":"array"},"creditAmount":{"description":"Credit amount, or null on a debit line.","minimum":0.01,"nullable":true,"type":"number"},"debitAmount":{"description":"Debit amount, or null on a credit line.","minimum":0.01,"nullable":true,"type":"number"},"description":{"default":"","description":"Free-form description of the line.","maxLength":500,"type":"string"}},"required":["accountId","debitAmount","creditAmount"],"type":"object"},"maxItems":500,"minItems":2,"type":"array"},"memo":{"description":"Free-form note on the entry. Pass null to clear it.","maxLength":1000,"nullable":true,"type":"string"}},"type":"object"}}},"description":"Body"},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"journalEntry":{"properties":{"date":{"format":"date-time","type":"string"},"entityId":{"format":"uuid","type":"string"},"id":{"format":"uuid","type":"string"},"ledgerBasis":{"enum":["cash","accruals"],"type":"string"},"lines":{"items":{"properties":{"accountCode":{"type":"integer"},"accountId":{"format":"uuid","type":"string"},"accountName":{"type":"string"},"classIds":{"items":{"format":"uuid","type":"string"},"type":"array"},"creditAmount":{"nullable":true,"type":"number"},"debitAmount":{"nullable":true,"type":"number"},"description":{"nullable":true,"type":"string"},"memo":{"nullable":true,"type":"string"}},"required":["accountId","accountCode","accountName","debitAmount","creditAmount","memo","description","classIds"],"type":"object"},"type":"array"},"memo":{"nullable":true,"type":"string"},"sourceType":{"enum":["transaction","manual_journal_entry","opening_balance","loan","bill","invoice"],"type":"string"}},"required":["id","entityId","date","memo","ledgerBasis","sourceType","lines"],"type":"object"}},"required":["journalEntry"],"type":"object"}}},"description":"200"},"400":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"400"},"401":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"401"},"404":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"404"},"409":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"409"},"429":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"429"}},"summary":"Update a journal entry","tags":["journalEntries"]}}}}
```

## Delete a journal entry

> Deletes a manual journal entry together with the ledger postings it produced.

```json
{"openapi":"3.0.2","info":{"title":"Kick Platform API","version":"v1"},"servers":[{"description":"Production","url":"https://use.kick.co/api"}],"security":[{"organizationAccessToken":[]}],"components":{"securitySchemes":{"organizationAccessToken":{"description":"Organization access token issued by Kick, sent as `Authorization: Bearer kick_org_...`.","scheme":"bearer","type":"http"}}},"paths":{"/platform/v1/entities/{entityId}/journal-entries/{journalEntryId}":{"delete":{"description":"Deletes a manual journal entry together with the ledger postings it produced.","operationId":"journalEntries.delete","parameters":[{"in":"path","name":"entityId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"path","name":"journalEntryId","required":true,"schema":{"format":"uuid","type":"string"}},{"in":"query","name":"ledgerBasis","schema":{"default":"cash","enum":["cash","accruals"],"type":"string"}}],"responses":{"200":{"description":"200"},"400":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"400"},"401":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"401"},"404":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"404"},"409":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"409"},"429":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"traceId":{"nullable":true,"type":"string"}},"required":["message"],"type":"object"}}},"description":"429"}},"summary":"Delete a journal entry","tags":["journalEntries"]}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.kick.co/api/api-reference/journal-entries.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
