POST
/journalsCreate a new journal
Store a newly created journal.
Request bodyrequired
| Field | Type | Description |
|---|---|---|
coderequired | string | Unique code within ledger |
namerequired | string | |
description | string nullable | |
status | string enum: active | closed · default: "active" | |
metadata | object nullable |
Responses
201Journal created
{
"success": true,
"data": {
"id": "01997c1e-4d2a-7c3e-9a1b-2f0e8c6d4b5a",
"ledger_id": "01997c1e-4d2a-7c3e-9a1b-2f0e8c6d4b5a",
"code": "SALES",
"name": "Sales Journal",
"status": "active",
"created_at": "2026-01-15T10:30:00Z",
"updated_at": "2026-01-15T10:30:00Z"
}
} 401Unauthenticated
{
"success": false,
"message": "Validation failed",
"code": "VALIDATION_ERROR"
} 403Forbidden
{
"success": false,
"message": "Validation failed",
"code": "VALIDATION_ERROR"
} 409Journal code already exists
{
"success": false,
"message": "Validation failed",
"code": "VALIDATION_ERROR"
} 422Validation error
{
"success": false,
"message": "Validation failed",
"code": "VALIDATION_ERROR"
} Examples
curl -X POST https://ledga.io/api/v1/journals \
-H "Authorization: Bearer sk_xxxxxxxx_your_secret" \
-H "Content-Type: application/json" \
-d '{
"code": "SALES",
"name": "Sales Journal",
"status": "active"
}' use Ledga\Api\LedgaClient;
$ledga = new LedgaClient('sk_xxxxxxxx_your_secret');
$journal = $ledga->journals->create(['code' => 'SALES', 'name' => 'Sales journal']);