> ## Documentation Index > Fetch the complete documentation index at: https://docs.restaurant365.com/llms.txt > Use this file to discover all available pages before exploring further. # Journal Entries > Creates journal entries in batch. Journal entry numbers are not required to be unique — duplicate numbers are allowed and will create separate records. **Security** The requesting user must have the following permission to create journal entries: - General Ledger → Journal Entries → Create Journal Entries ## OpenAPI ````json POST /public/v1/accounting/journal-entries { "openapi": "3.0.1", "info": { "title": "R365 Public API", "contact": { "name": "R365 Services Team", "email": "r365@restaurant365.com" }, "version": "1.0" }, "security": [ { "Bearer": [] } ], "paths": { "/public/v1/accounting/journal-entries": { "post": { "tags": [ "accounting" ], "summary": "Journal Entries", "description": "Creates journal entries in batch. Journal entry numbers are not required to be unique — duplicate numbers are allowed and will create separate records.\n\n**Security**\n\nThe requesting user must have the following permission to create journal entries:\n\n- General Ledger → Journal Entries → Create Journal Entries", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateJournalEntriesRequest" } } } }, "responses": { "207": { "description": "Multi-Status – batch operation result containing per-item success or failure.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateJournalEntriesResponse" } } } }, "400": { "description": "Bad Request — a parameter value is malformed, of the wrong type, or outside its allowed range." }, "401": { "description": "Unauthorized — the bearer token is missing, invalid or expired, or is not valid for the specified tenant." }, "403": { "description": "Forbidden — the caller lacks the permission required for this operation." }, "404": { "description": "Not Found — the requested resource does not exist, or the supplied continuation token is unknown or has expired." }, "409": { "description": "Conflict — the request conflicts with the current state of the resource and cannot be applied." }, "422": { "description": "Unprocessable Entity — a required parameter is missing, or a supplied parameter value is invalid." }, "429": { "description": "Too Many Requests — the caller has exceeded the rate limit; retry after a short delay." }, "500": { "description": "Internal Server Error — an unexpected error occurred while processing the request." } }, "parameters": [ { "$ref": "#/components/parameters/TenantId" } ] } } }, "components": { "schemas": { "CreateJournalEntriesRequest": { "required": [ "journalEntries" ], "type": "object", "properties": { "journalEntries": { "type": "array", "items": { "$ref": "#/components/schemas/CreateJournalEntry" }, "description": "Collection of journal entries to create. Required." } }, "additionalProperties": false, "description": "Creates journal entries in batch." }, "CreateJournalEntriesResponse": { "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/components/schemas/CreateJournalEntryResult" }, "description": "Collection of results, one per journal entry in the original request, ordered by request index." } }, "additionalProperties": false }, "CreateJournalEntry": { "required": [ "number", "date", "location", "details" ], "type": "object", "properties": { "number": { "type": "string", "description": "Unique journal entry number. Required." }, "date": { "type": "string", "description": "Document date for the journal entry in ISO 8601 format. Required.", "format": "date" }, "location": { "type": "string", "description": "Unique identifier (GUID) of the location. Required.", "format": "uuid" }, "comment": { "type": "string", "description": "Optional comment or memo for the journal entry header.", "nullable": true }, "type": { "enum": [ "Standard" ], "type": "string", "description": "Entry type classification. Must be \"Standard\". Defaults to \"Standard\" if not specified.", "nullable": true }, "details": { "type": "array", "items": { "$ref": "#/components/schemas/CreateJournalEntryDetail" }, "description": "Collection of detail lines. Required; total debits must equal total credits." } }, "additionalProperties": false }, "CreateJournalEntryResult": { "type": "object", "properties": { "requestIndex": { "type": "integer", "description": "Zero-based position of this journal entry in the original request.", "format": "int32" }, "number": { "type": "string", "description": "Journal entry number from the original request." }, "status": { "enum": [ "Unknown", "Succeeded", "Failed" ], "type": "string", "description": "Outcome of the create operation." }, "errorCode": { "type": "string", "description": "Machine-readable error code. Present only when status is Failed.", "nullable": true }, "errorMessage": { "type": "string", "description": "Human-readable error description. Present only when status is Failed.", "nullable": true }, "id": { "type": "string", "description": "Unique identifier (GUID) of the created journal entry. Present only when status is Succeeded.", "format": "uuid", "nullable": true } }, "additionalProperties": false }, "CreateJournalEntryDetail": { "required": [ "glAccount", "debitAmount", "creditAmount" ], "type": "object", "properties": { "glAccount": { "type": "string", "description": "Unique identifier (GUID) of the general ledger account. Required.", "format": "uuid" }, "debitAmount": { "type": "number", "description": "Debit amount for this detail line. Mutually exclusive with creditAmount; one must be greater than zero.", "format": "decimal" }, "creditAmount": { "type": "number", "description": "Credit amount for this detail line. Mutually exclusive with debitAmount; one must be greater than zero.", "format": "decimal" }, "location": { "type": "string", "description": "Optional location override for this detail line. Defaults to the header location if not specified.", "format": "uuid", "nullable": true }, "comment": { "type": "string", "description": "Optional comment for this detail line.", "nullable": true } }, "additionalProperties": false } }, "parameters": { "TenantId": { "name": "x-r365-context-tenant-id", "in": "header", "required": true, "description": "Identifies the R365 tenant the request applies to. Required on every request.", "schema": { "type": "string" } } }, "securitySchemes": { "Bearer": { "type": "http", "scheme": "Bearer" } } } } ````