Create Journal Entry

POST/external/v1/journal_entries/create/

Post one manual journal entry into a tenant the calling user owns. Debits must equal credits and every account code must exist in the tenant. Pass an optional external_id to make the call idempotent — retrying with the same value returns the original entry instead of double-posting.

ApiDocsParametersTitle

ApiDocsParamFieldApiDocsParamTypeApiDocsParamRequiredApiDocsParamDescription
domain_urlstringApiDocsRequiredTarget tenant subdomain prefix (e.g. acme-corp) or its full domain.
datestringApiDocsRequiredEntry date, YYYY-MM-DD.
memostringApiDocsRequiredDescription of the entry. Cannot be blank.
transactionCurrencystringApiDocsRequired3-letter ISO currency the entry is recorded in.
reportingCurrencystringApiDocsRequired3-letter ISO reporting currency. The FX rate is resolved server-side.
entriesarrayApiDocsRequiredTransaction lines. Each: account (code), debit, credit, description.
accrual_datestringApiDocsOptionalYYYY-MM-DD. When set, the entry is scheduled to post on this date.
external_idstringApiDocsOptionalIdempotency key. Replaying the same value returns the original entry.
ApiDocsRequestLabel
curl -X POST https://<api-host>/external/v1/journal_entries/create/ \
  -H "X-API-Key: <encrypted_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "domain_url": "acme-corp",
    "date": "2026-06-03",
    "memo": "API posted accrual",
    "transactionCurrency": "SGD",
    "reportingCurrency": "SGD",
    "external_id": "ext-inv-00912",
    "entries": [
      { "account": "5010", "debit": "1000.00", "credit": "0.00", "description": "Rent" },
      { "account": "2100", "debit": "0.00", "credit": "1000.00", "description": "Payable" }
    ]
  }'
ApiDocsResponseLabel
{
  "status": "success",
  "status_code": 200,
  "data": {
    "journal_entry_id": "JE00000001",
    "journal_number": "DEP-2026-06-03-0001",
    "date": "2026-06-03",
    "memo": "API posted accrual",
    "entry_type": "Manual Journal",
    "transaction_currency": "SGD",
    "transaction_amount": "1000.00",
    "reporting_currency": "SGD",
    "reporting_amount": "1000.00",
    "exchange_rate": "1.00000000000",
    "transactions": [ "... debit and credit lines ..." ],
    "bank_reconciliation_id": null
  }
}