Skip to content

Update a journal entry

Request

Purpose

Updates a journal entry that is still editable (for example New, Validated, Error or Rejected). Two request formats:

  • JSON (application/json) - partial header update. Send only the fields to change; lines are not touched.
  • CSV full-file update (multipart/form-data) - the lines file is the complete new set of lines. Rows whose ID column matches an existing line are updated, other rows are inserted, and existing lines missing from the file are deleted. Header changes may be sent in an optional CSV header section or a jeHeader JSON part (not both). The file must contain at least one line.

After an update the entry is re-validated and the preview waterfall is regenerated.

When to use

  • Correct an entry that failed validation or was rejected, before (re)submitting it.
  • Use JSON to change header values only (name, period, category, description...).
  • Use CSV full-file update to replace the entry's lines in one atomic operation (edit, add and remove lines together).
  • Not possible once the entry is Approval Pending or Approved - recall it first, or reverse an approved entry.

Notes

  • Full-file CSV update: a row whose ID is blank or does not match an existing line of this entry is inserted as a new line, and every existing line not matched is deleted. The lines export (POST /{jeId}/lines/export) does not include an ID column - add an ID column with the line IDs from GET /journal-entries/{jeId}/lines before re-uploading, otherwise all lines are replaced.
  • Reference columns must be titled Reference1 ... Reference15 on upload; tenant-specific labels used in the template or export (for example Ticket Number) are not recognized and their values are ignored.
  • A JSON header update is checked by journal entry processing, not by the up-front field validation used on create.
Security
OneIdOAuth
Path
jeIdinteger, (int64)required

ID of the journal entry.

Example:10045
Bodyrequired
namestring or null

Name of the journal entry. Shown in the Zuora Revenue UI and in GL interfaces. Must be meaningful to approvers, for example SEP-2026 Revenue Reclass.

Example:"SEP-2026 Revenue Reclass v2"
descriptionstring or null

Free-text description of the journal entry's business purpose.

Example:"Updated description"
periodIdinteger or null, (int64)

Identifier of the accounting (posting) period the journal entry is posted to. The period must be open. Retrieve valid IDs from GET /journal-entries/metadata/periods or GET /journal-entries/current-period.

Example:202609
reversalPeriodIdinteger or null, (int64)

Identifier of the accounting period in which an automatic reversal of this entry is posted. Leave empty when the entry should not reverse.

Example:202610
categoryCodestring or null

Journal entry category code. Classifies why the entry is posted (for example an accrual, reclass or adjustment). Valid values are configured in your tenant's MANUAL_JOURNAL lookup; retrieve them from categoryId in GET /journal-entries/metadata.

Example:"RECLASS"
exchangeRateTypestring or null

Exchange rate type used to convert transaction currency to functional and reporting currency (for example User or Corporate). Valid values come from exchangeRates in GET /journal-entries/metadata.

Example:"User"
sobNamestring or null

Name of the Set of Books. On create and update the service derives this from sobId; any value you send is overwritten.

sobIdinteger or null, (int64)

Identifier of the Set of Books (SOB) the entry posts to. A Set of Books groups the ledger, functional currency and calendar used for accounting. When supplied it must match an existing Set of Books.

Example:1
functionalCurrencystring or null

ISO 4217 currency code of the functional (ledger) currency of the Set of Books, for example USD.

Example:"USD"
accountMethodstring or null

Accounting method used to post the entry. Valid values come from accountingMethod in GET /journal-entries/metadata.

Example:"Standard"
bookIdinteger or null, (int64)

Identifier of the accounting book (for example the primary book or a secondary/parallel book) the entry belongs to.

Example:1
orgIdstring or null

Organization (operating unit) identifier the entry belongs to, also called the security attribute value (secAtrVal). Valid values come from orgId in GET /journal-entries/metadata.

Example:"101"
glTransferstring or null

Whether the entry is transferred to the general ledger. Accepted values on input: Yes or No (the service reports Yes when not set).

Enum:"Yes""No"
Example:"Yes"
approverNamestring or null

Name of the approver currently assigned to the entry by the approval rule. Read-only on most flows.

{ "name": "SEP-2026 Revenue Reclass v2", "periodId": 202609, "description": "Corrected amounts" }

Responses

Journal entry updated

Headers
traceIdstring

Identifier of the request. Quote it when you contact Zuora Support.

Bodyapplication/json
idinteger or null, (int64)

Unique system-generated identifier of the journal entry (JE header ID).

Example:10045
statusstring or null

Journal entry status. One of New, Draft, Validated, Approval Pending, Approved, Rejected, Approval Cancelled, Error, Approval Rule not Defined.

Example:"New"
waterfallStatusstring or null

Status of revenue waterfall (schedule) generation for the entry. One of NEW, IN PROGRESS, SUCCESS, ERROR. For approved entries this reflects the final waterfall; otherwise the preview waterfall.

Example:"NEW"
Response
{ "id": 10045, "status": "New", "waterfallStatus": "IN PROGRESS" }