---
title: "Bulk create journal entries · Journal Entries · COUNT Partner API"
description: "Creates up to 100 journal entry postings in one request with partial-success semantics. POST /partners/journal-entries/bulk"
canonical: "https://developers.getcount.com/reference/journal-entries/bulk-create-journal-entries"
source: "https://developers.getcount.com/reference/journal-entries/bulk-create-journal-entries"
---
[Journal Entries](https://developers.getcount.com/reference/journal-entries) / Bulk create journal entries

# Bulk create journal entries

POST `/partners/journal-entries/bulk`

Creates up to 100 journal entry postings in one request with partial-success semantics.

Body: `{ journalEntries: [<posting>, ...] }` where each posting uses the same shape as create journal entry. Each posting runs in its own transaction. HTTP 201 is returned when the batch is accepted, even if all postings fail — read `errorCount` and per-row `results`.

HMAC signature + Bearer access token

[Try this request](https://developers.getcount.com/tools/try-it?method=POST&path=%2Fpartners%2Fjournal-entries%2Fbulk&body=%7B%0A++%22journalEntries%22%3A+%5B%0A++++%7B%0A++++++%22descriptionEntry%22%3A+%22Accrue+March+rent%22%2C%0A++++++%22date%22%3A+%222026-03-01%22%2C%0A++++++%22refNumber%22%3A+%22JE-2026-003%22%2C%0A++++++%22lines%22%3A+%5B%0A++++++++%7B%0A++++++++++%22accountUuid%22%3A+%22c8d9e0f1-a2b3-4567-cdef-789012345678%22%2C%0A++++++++++%22amountDebit%22%3A+%222500.00%22%2C%0A++++++++++%22descriptionLine%22%3A+%22Rent+expense%22%0A++++++++%7D%2C%0A++++++++%7B%0A++++++++++%22accountUuid%22%3A+%22c3d4e5f6-a7b8-9012-cdef-123456789012%22%2C%0A++++++++++%22amountCredit%22%3A+%222500.00%22%2C%0A++++++++++%22descriptionLine%22%3A+%22Accrued+rent+payable%22%0A++++++++%7D%0A++++++%5D%0A++++%7D%0A++%5D%0A%7D)

[Chart of Accounts API](https://developers.getcount.com/reference/chart-of-accounts) [Transactions API](https://developers.getcount.com/reference/transactions)

#### Request body

`journalEntries` array required

Array of journal entry create payloads (same fields as POST /partners/journal-entries). Maximum 100 per request.

#### Responses

`201` Batch accepted. Check successCount and per-row results.

`400` Batch-level validation failed (empty array, over 100 postings, etc.).

`401` Missing or invalid HMAC signature, expired timestamp, or invalid Bearer token. [Troubleshoot](https://developers.getcount.com/getting-started/errors#error-401)

`403` The credential does not have access to this workspace or resource. [Troubleshoot](https://developers.getcount.com/getting-started/errors#error-403)

`429` Rate limit exceeded (100 requests per minute per clientId). Retry after the Retry-After header. [Troubleshoot](https://developers.getcount.com/getting-started/errors#error-429)

[Previous POST Create journal entry](https://developers.getcount.com/reference/journal-entries/create-journal-entry) [Next PATCH Update journal entry](https://developers.getcount.com/reference/journal-entries/update-journal-entry)

POST `https://api.getcount.com/partners/journal-entries/bulk`

Request

```javascript
import crypto from 'node:crypto';

const BASE_URL = 'https://api.getcount.com';
const CLIENT_ID = process.env.COUNT_CLIENT_ID;
const CLIENT_SECRET = process.env.COUNT_CLIENT_SECRET;
const ACCESS_TOKEN = process.env.COUNT_ACCESS_TOKEN;

const method = 'POST';
const signingPath = '/journal-entries/bulk';
const timestamp = Math.floor(Date.now() / 1000).toString();
const body = {
  "journalEntries": [
    {
      "descriptionEntry": "Accrue March rent",
      "date": "2026-03-01",
      "refNumber": "JE-2026-003",
      "lines": [
        {
          "accountUuid": "c8d9e0f1-a2b3-4567-cdef-789012345678",
          "amountDebit": "2500.00",
          "descriptionLine": "Rent expense"
        },
        {
          "accountUuid": "c3d4e5f6-a7b8-9012-cdef-123456789012",
          "amountCredit": "2500.00",
          "descriptionLine": "Accrued rent payable"
        }
      ]
    }
  ]
};
const bodyString = JSON.stringify(body);

const bodyHash = crypto.createHash('sha256').update(bodyString).digest('hex');
const baseString = `${method}:${signingPath}:${timestamp}:${bodyHash}`;
const signature = crypto.createHmac('sha256', CLIENT_SECRET).update(baseString).digest('hex');

const response = await fetch(`${BASE_URL}/partners/journal-entries/bulk`, {
  method,
  headers: {
    'x-client-id': CLIENT_ID,
    'x-timestamp': timestamp,
    'x-signature': signature,
    'Content-Type': 'application/json',
    Authorization: `Bearer ${ACCESS_TOKEN}`,
  },
  body: bodyString,
});

console.log(await response.json());
```

Response · 201

```json
{
  "successCount": 1,
  "errorCount": 0,
  "results": [
    {
      "index": 0,
      "success": true,
      "journalEntry": [
        {
          "id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890",
          "descriptionEntry": "Accrue March rent",
          "descriptionLine": "Rent expense",
          "date": "2026-03-01",
          "refNumber": "JE-2026-003",
          "amountDebit": "2500.00",
          "amountCredit": null,
          "accountUuid": "c8d9e0f1-a2b3-4567-cdef-789012345678",
          "account": {
            "id": "c8d9e0f1-a2b3-4567-cdef-789012345678",
            "name": "Rent Expense",
            "type": "Expenses"
          },
          "journalLinkUuid": "a9b8c7d6-e5f4-3210-abcd-ef9876543210",
          "createdAt": "2026-01-15T10:30:00.000Z",
          "updatedAt": "2026-01-28T14:22:30.000Z"
        }
      ]
    }
  ]
}
```
