Journal Entries
Read, write, update, and delete the manual journal entries of an entity's ledger.
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.
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 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.
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.
Organization access token issued by Kick, sent as Authorization: Bearer kick_org_....
1000cashPossible values: 200
400
401
404
429
GET /api/platform/v1/entities/{entityId}/journal-entries HTTP/1.1
Host: use.kick.co
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": [
{
"date": "2026-01-01T00:00:00.000Z",
"dateOnly": "text",
"entityId": "123e4567-e89b-12d3-a456-426614174000",
"id": "123e4567-e89b-12d3-a456-426614174000",
"ledgerBasis": "cash",
"lines": [
{
"accountCode": 1,
"accountId": "123e4567-e89b-12d3-a456-426614174000",
"accountName": "text",
"classIds": [
"123e4567-e89b-12d3-a456-426614174000"
],
"creditAmount": 1,
"debitAmount": 1,
"description": "text",
"memo": "text"
}
],
"memo": "text",
"sourceType": "transaction"
}
],
"pagination": {
"limit": 1,
"offset": 1,
"total": 1
}
}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.
Organization access token issued by Kick, sent as Authorization: Bearer kick_org_....
A unique key that makes the request idempotent. Retrying with the same key within 24 hours replays the original response (marked with Idempotent-Replayed: true) instead of executing again.
Calendar day the entry is booked on, as YYYY-MM-DD.
Accounting ledger the entry is written to.
cashPossible values: Free-form note on the entry.
201
400
401
403
404
409
429
POST /api/platform/v1/entities/{entityId}/journal-entries HTTP/1.1
Host: use.kick.co
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 215
{
"date": "text",
"ledgerBasis": "cash",
"lines": [
{
"accountId": "123e4567-e89b-12d3-a456-426614174000",
"classIds": [
"123e4567-e89b-12d3-a456-426614174000"
],
"creditAmount": 1,
"debitAmount": 1,
"description": ""
}
],
"memo": "text"
}{
"journalEntry": {
"date": "2026-01-01T00:00:00.000Z",
"dateOnly": "text",
"entityId": "123e4567-e89b-12d3-a456-426614174000",
"id": "123e4567-e89b-12d3-a456-426614174000",
"ledgerBasis": "cash",
"lines": [
{
"accountCode": 1,
"accountId": "123e4567-e89b-12d3-a456-426614174000",
"accountName": "text",
"classIds": [
"123e4567-e89b-12d3-a456-426614174000"
],
"creditAmount": 1,
"debitAmount": 1,
"description": "text",
"memo": "text"
}
],
"memo": "text",
"sourceType": "transaction"
}
}Writes up to 100 manual journal entries to the entity's ledgers in a single transaction. Each entry follows the same rules as a single create: total debits must equal total credits, and every line must post to an account of that entity's chart of accounts. The operation is atomic: if any entry fails validation, none are created. The response returns the created entries in request order.
Organization access token issued by Kick, sent as Authorization: Bearer kick_org_....
A unique key that makes the request idempotent. Retrying with the same key within 24 hours replays the original response (marked with Idempotent-Replayed: true) instead of executing again.
201
400
401
403
404
409
429
POST /api/platform/v1/entities/{entityId}/journal-entries/bulk HTTP/1.1
Host: use.kick.co
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 236
{
"journalEntries": [
{
"date": "text",
"ledgerBasis": "cash",
"lines": [
{
"accountId": "123e4567-e89b-12d3-a456-426614174000",
"classIds": [
"123e4567-e89b-12d3-a456-426614174000"
],
"creditAmount": 1,
"debitAmount": 1,
"description": ""
}
],
"memo": "text"
}
]
}{
"data": [
{
"date": "2026-01-01T00:00:00.000Z",
"dateOnly": "text",
"entityId": "123e4567-e89b-12d3-a456-426614174000",
"id": "123e4567-e89b-12d3-a456-426614174000",
"ledgerBasis": "cash",
"lines": [
{
"accountCode": 1,
"accountId": "123e4567-e89b-12d3-a456-426614174000",
"accountName": "text",
"classIds": [
"123e4567-e89b-12d3-a456-426614174000"
],
"creditAmount": 1,
"debitAmount": 1,
"description": "text",
"memo": "text"
}
],
"memo": "text",
"sourceType": "transaction"
}
]
}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.
Organization access token issued by Kick, sent as Authorization: Bearer kick_org_....
cashPossible values: 200
400
401
404
429
GET /api/platform/v1/entities/{entityId}/journal-entries/{journalEntryId} HTTP/1.1
Host: use.kick.co
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"journalEntry": {
"date": "2026-01-01T00:00:00.000Z",
"dateOnly": "text",
"entityId": "123e4567-e89b-12d3-a456-426614174000",
"id": "123e4567-e89b-12d3-a456-426614174000",
"ledgerBasis": "cash",
"lines": [
{
"accountCode": 1,
"accountId": "123e4567-e89b-12d3-a456-426614174000",
"accountName": "text",
"classIds": [
"123e4567-e89b-12d3-a456-426614174000"
],
"creditAmount": 1,
"debitAmount": 1,
"description": "text",
"memo": "text"
}
],
"memo": "text",
"sourceType": "transaction"
}
}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.
Organization access token issued by Kick, sent as Authorization: Bearer kick_org_....
cashPossible values: A unique key that makes the request idempotent. Retrying with the same key within 24 hours replays the original response (marked with Idempotent-Replayed: true) instead of executing again.
Calendar day the entry is booked on, as YYYY-MM-DD.
Free-form note on the entry. Pass null to clear it.
200
400
401
403
404
409
429
PATCH /api/platform/v1/entities/{entityId}/journal-entries/{journalEntryId} HTTP/1.1
Host: use.kick.co
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 194
{
"date": "text",
"lines": [
{
"accountId": "123e4567-e89b-12d3-a456-426614174000",
"classIds": [
"123e4567-e89b-12d3-a456-426614174000"
],
"creditAmount": 1,
"debitAmount": 1,
"description": ""
}
],
"memo": "text"
}{
"journalEntry": {
"date": "2026-01-01T00:00:00.000Z",
"dateOnly": "text",
"entityId": "123e4567-e89b-12d3-a456-426614174000",
"id": "123e4567-e89b-12d3-a456-426614174000",
"ledgerBasis": "cash",
"lines": [
{
"accountCode": 1,
"accountId": "123e4567-e89b-12d3-a456-426614174000",
"accountName": "text",
"classIds": [
"123e4567-e89b-12d3-a456-426614174000"
],
"creditAmount": 1,
"debitAmount": 1,
"description": "text",
"memo": "text"
}
],
"memo": "text",
"sourceType": "transaction"
}
}Deletes a manual journal entry together with the ledger postings it produced.
Organization access token issued by Kick, sent as Authorization: Bearer kick_org_....
cashPossible values: A unique key that makes the request idempotent. Retrying with the same key within 24 hours replays the original response (marked with Idempotent-Replayed: true) instead of executing again.
200
No content
400
401
404
409
429
DELETE /api/platform/v1/entities/{entityId}/journal-entries/{journalEntryId} HTTP/1.1
Host: use.kick.co
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Last updated
Was this helpful?
