Unpost journal
curl --request POST \
--url https://api.entendre.finance/v1/journal-entries/{journal_id}/unpost \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'X-API-Key: <api-key>' \
--data '{}'const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
'X-API-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({})
};
fetch('https://api.entendre.finance/v1/journal-entries/{journal_id}/unpost', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.entendre.finance/v1/journal-entries/{journal_id}/unpost"
payload = {}
headers = {
"Idempotency-Key": "<idempotency-key>",
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"id": "je_507f1f77bcf86cd799439011",
"organization_id": "org_507f1f77bcf86cd799439011",
"sequence_number": "JE-42",
"status": "unposted",
"originated_by": "user",
"accounting_date": "2026-08-31T12:00:00Z",
"posted_at": null,
"memo": "Record August opening balance",
"source_type": "MANUAL",
"sync_date": null,
"last_synced_at": null,
"last_unsynced_at": null,
"legal_entity_id": "le_507f1f77bcf86cd799439011",
"transaction_id": null,
"transaction_sequence_number": null,
"accounting_period_id": null,
"classification": null,
"tag_ids": [],
"reversal_chain": {
"previous_entry_id": null,
"next_entry_id": null
},
"period_auto_reassigned": false,
"intended_accounting_date": null,
"legal_entity_auto_assigned": false,
"lines": [
{
"id": "jel_507f1f77bcf86cd799439011",
"ledger_account_id": "lac_507f1f77bcf86cd799439011",
"legal_entity_id": "le_507f1f77bcf86cd799439011",
"credit_or_debit": "DEBIT",
"amount": "100.00",
"currency": "USD",
"memo": null,
"tag_ids": []
},
{
"id": "jel_507f1f77bcf86cd799439012",
"ledger_account_id": "lac_507f1f77bcf86cd799439012",
"legal_entity_id": "le_507f1f77bcf86cd799439011",
"credit_or_debit": "CREDIT",
"amount": "100.00",
"currency": "USD",
"memo": null,
"tag_ids": []
}
],
"is_sync": false,
"latest_gl_sync_attempt": null,
"created_at": "2026-08-31T12:00:00Z",
"updated_at": "2026-08-31T12:00:00Z"
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid path, query or request body.",
"request_id": "req_example"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or expired API Key",
"request_id": "req_example",
"suggested_action": "Send an API key in X-API-Key, or an OAuth access token as Authorization: Bearer. Refresh an expired access token.",
"documentation_url": "https://entendre.ai/docs/get-started/authentication"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Insufficient access to organization",
"request_id": "req_example"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Resource not found",
"request_id": "req_example"
}
}{
"error": {
"code": "CONFLICT",
"message": "The journal is not posted, or its accounting period is closed. No unpost is performed.",
"request_id": "req_example"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Retry after 30s.",
"request_id": "req_example"
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error",
"request_id": "req_example"
}
}{
"error": {
"code": "EXTERNAL_SERVICE_ERROR",
"message": "The ERP copy could not be removed. The journal remains posted; check its sync state before retrying.",
"request_id": "req_example"
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "Service unavailable.",
"request_id": "req_example"
}
}Journals
Unpost journal
Removes a posted journal from the ledger so that you can correct or reclassify it.
POST
/
v1
/
journal-entries
/
{journal_id}
/
unpost
Unpost journal
curl --request POST \
--url https://api.entendre.finance/v1/journal-entries/{journal_id}/unpost \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'X-API-Key: <api-key>' \
--data '{}'const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
'X-API-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({})
};
fetch('https://api.entendre.finance/v1/journal-entries/{journal_id}/unpost', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.entendre.finance/v1/journal-entries/{journal_id}/unpost"
payload = {}
headers = {
"Idempotency-Key": "<idempotency-key>",
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"id": "je_507f1f77bcf86cd799439011",
"organization_id": "org_507f1f77bcf86cd799439011",
"sequence_number": "JE-42",
"status": "unposted",
"originated_by": "user",
"accounting_date": "2026-08-31T12:00:00Z",
"posted_at": null,
"memo": "Record August opening balance",
"source_type": "MANUAL",
"sync_date": null,
"last_synced_at": null,
"last_unsynced_at": null,
"legal_entity_id": "le_507f1f77bcf86cd799439011",
"transaction_id": null,
"transaction_sequence_number": null,
"accounting_period_id": null,
"classification": null,
"tag_ids": [],
"reversal_chain": {
"previous_entry_id": null,
"next_entry_id": null
},
"period_auto_reassigned": false,
"intended_accounting_date": null,
"legal_entity_auto_assigned": false,
"lines": [
{
"id": "jel_507f1f77bcf86cd799439011",
"ledger_account_id": "lac_507f1f77bcf86cd799439011",
"legal_entity_id": "le_507f1f77bcf86cd799439011",
"credit_or_debit": "DEBIT",
"amount": "100.00",
"currency": "USD",
"memo": null,
"tag_ids": []
},
{
"id": "jel_507f1f77bcf86cd799439012",
"ledger_account_id": "lac_507f1f77bcf86cd799439012",
"legal_entity_id": "le_507f1f77bcf86cd799439011",
"credit_or_debit": "CREDIT",
"amount": "100.00",
"currency": "USD",
"memo": null,
"tag_ids": []
}
],
"is_sync": false,
"latest_gl_sync_attempt": null,
"created_at": "2026-08-31T12:00:00Z",
"updated_at": "2026-08-31T12:00:00Z"
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid path, query or request body.",
"request_id": "req_example"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or expired API Key",
"request_id": "req_example",
"suggested_action": "Send an API key in X-API-Key, or an OAuth access token as Authorization: Bearer. Refresh an expired access token.",
"documentation_url": "https://entendre.ai/docs/get-started/authentication"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Insufficient access to organization",
"request_id": "req_example"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Resource not found",
"request_id": "req_example"
}
}{
"error": {
"code": "CONFLICT",
"message": "The journal is not posted, or its accounting period is closed. No unpost is performed.",
"request_id": "req_example"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Retry after 30s.",
"request_id": "req_example"
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error",
"request_id": "req_example"
}
}{
"error": {
"code": "EXTERNAL_SERVICE_ERROR",
"message": "The ERP copy could not be removed. The journal remains posted; check its sync state before retrying.",
"request_id": "req_example"
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "Service unavailable.",
"request_id": "req_example"
}
}For a synced journal, Entendre unposts the journal only after it removes the ERP copy.
Authorizations
Your organization API key. See Authentication.
Headers
Unique key for this operation. Retry with the same key and request body after a timeout. Keys are retained for at least 24 hours.
Required string length:
1 - 255Path Parameters
ID of the journal.
Minimum string length:
1Body
application/json
The body is of type object.
Response
The request succeeded.
Show child attributes
Show child attributes