For the complete documentation index, see llms.txt. This page is also available as Markdown.

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.

List journal entries

get

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.

Authorizations
AuthorizationstringRequired

Organization access token issued by Kick, sent as Authorization: Bearer kick_org_....

Path parameters
entityIdstring · uuidRequired
Query parameters
limitinteger · min: 1 · max: 100OptionalDefault: 100
offsetinteger · nullableOptionalDefault: 0
startDatestringOptional
endDatestringOptional
ledgerBasisstring · enumOptionalDefault: cashPossible values:
Responses
200

200

application/json
get/platform/v1/entities/{entityId}/journal-entries
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
  }
}

Create a journal entry

post

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.

Authorizations
AuthorizationstringRequired

Organization access token issued by Kick, sent as Authorization: Bearer kick_org_....

Path parameters
entityIdstring · uuidRequired
Header parameters
Idempotency-Keystring · min: 1 · max: 255Optional

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.

Body
datestringRequired

Calendar day the entry is booked on, as YYYY-MM-DD.

ledgerBasisstring · enumOptional

Accounting ledger the entry is written to.

Default: cashPossible values:
memostring · max: 1000 · nullableOptional

Free-form note on the entry.

Responses
201

201

application/json
post/platform/v1/entities/{entityId}/journal-entries
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"
  }
}

Create journal entries in bulk

post

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.

Authorizations
AuthorizationstringRequired

Organization access token issued by Kick, sent as Authorization: Bearer kick_org_....

Path parameters
entityIdstring · uuidRequired
Header parameters
Idempotency-Keystring · min: 1 · max: 255Optional

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.

Body
Responses
201

201

application/json
post/platform/v1/entities/{entityId}/journal-entries/bulk
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"
    }
  ]
}

Retrieve a journal entry

get

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.

Authorizations
AuthorizationstringRequired

Organization access token issued by Kick, sent as Authorization: Bearer kick_org_....

Path parameters
entityIdstring · uuidRequired
journalEntryIdstring · uuidRequired
Query parameters
ledgerBasisstring · enumOptionalDefault: cashPossible values:
Responses
200

200

application/json
get/platform/v1/entities/{entityId}/journal-entries/{journalEntryId}
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"
  }
}

Update a journal entry

patch

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.

Authorizations
AuthorizationstringRequired

Organization access token issued by Kick, sent as Authorization: Bearer kick_org_....

Path parameters
entityIdstring · uuidRequired
journalEntryIdstring · uuidRequired
Query parameters
ledgerBasisstring · enumOptionalDefault: cashPossible values:
Header parameters
Idempotency-Keystring · min: 1 · max: 255Optional

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.

Body
datestringOptional

Calendar day the entry is booked on, as YYYY-MM-DD.

memostring · max: 1000 · nullableOptional

Free-form note on the entry. Pass null to clear it.

Responses
200

200

application/json
patch/platform/v1/entities/{entityId}/journal-entries/{journalEntryId}
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"
  }
}

Delete a journal entry

delete

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

Authorizations
AuthorizationstringRequired

Organization access token issued by Kick, sent as Authorization: Bearer kick_org_....

Path parameters
entityIdstring · uuidRequired
journalEntryIdstring · uuidRequired
Query parameters
ledgerBasisstring · enumOptionalDefault: cashPossible values:
Header parameters
Idempotency-Keystring · min: 1 · max: 255Optional

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.

Responses
200

200

No content

delete/platform/v1/entities/{entityId}/journal-entries/{journalEntryId}
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?