curl --request POST \
--url https://api.entendre.finance/v1/journal-entries \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'X-API-Key: <api-key>' \
--data '
{
"transaction_id": "txn_507f1f77bcf86cd799439011",
"transaction_type": "DEPOSIT",
"ledger_account_id": "lac_507f1f77bcf86cd799439012"
}
'{
"data": {
"id": "je_507f1f77bcf86cd799439011",
"organization_id": "org_507f1f77bcf86cd799439011",
"sequence_number": "JE-42",
"status": "draft",
"originated_by": "user",
"accounting_date": "2026-08-31T12:00:00Z",
"posted_at": null,
"memo": "Customer payment",
"sync_date": null,
"last_synced_at": null,
"last_unsynced_at": null,
"legal_entity_id": "le_507f1f77bcf86cd799439011",
"transaction_id": "txn_507f1f77bcf86cd799439011",
"transaction_sequence_number": "OT-42",
"accounting_period_id": null,
"classification": "DEPOSIT",
"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": "Authentication is required.",
"request_id": "req_example"
}
}{
"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 resource state does not allow this operation.",
"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": "SERVICE_UNAVAILABLE",
"message": "Service unavailable.",
"request_id": "req_example"
}
}Create journal
Creates a journal from a transaction, or a manual journal with balanced lines.
curl --request POST \
--url https://api.entendre.finance/v1/journal-entries \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'X-API-Key: <api-key>' \
--data '
{
"transaction_id": "txn_507f1f77bcf86cd799439011",
"transaction_type": "DEPOSIT",
"ledger_account_id": "lac_507f1f77bcf86cd799439012"
}
'{
"data": {
"id": "je_507f1f77bcf86cd799439011",
"organization_id": "org_507f1f77bcf86cd799439011",
"sequence_number": "JE-42",
"status": "draft",
"originated_by": "user",
"accounting_date": "2026-08-31T12:00:00Z",
"posted_at": null,
"memo": "Customer payment",
"sync_date": null,
"last_synced_at": null,
"last_unsynced_at": null,
"legal_entity_id": "le_507f1f77bcf86cd799439011",
"transaction_id": "txn_507f1f77bcf86cd799439011",
"transaction_sequence_number": "OT-42",
"accounting_period_id": null,
"classification": "DEPOSIT",
"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": "Authentication is required.",
"request_id": "req_example"
}
}{
"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 resource state does not allow this operation.",
"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": "SERVICE_UNAVAILABLE",
"message": "Service unavailable.",
"request_id": "req_example"
}
}| Journal | Send | Status |
|---|---|---|
| From a transaction | The transaction and ledger-account fields | Draft, unless auto_post is true |
| Manual | lines, the accounting date and the legal entity. Optional: one transaction_id. | status: draft or status: posted |
Authorizations
Your organization API key. Some operations also need a key that is associated with a user; their pages say so.
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.
1 - 255Body
- Option 1
- Option 2
- Option 3
Send exactly one of transaction_type or classification (its older name).
The transaction to record. Entendre uses its fiat value, direction, source type and asset type to build the journal lines.
Economic transaction type (for example WITHDRAWAL). This is not the accounting classification; ledger_account_id selects that treatment.
DEPOSIT, WITHDRAWAL, SWAP, NON_TAXABLE_CONVERSION, BRIDGE, INTERCOMPANY TRANSFER, INTERNAL TRANSFER, FEE, MINTING, STAKING_REWARD, VALIDATOR_REWARD, INVOICE, BILL, CLAIM REWARD, BORROW, REPAYMENT, RESERVES CHANGE, REALIZED_PNL, INCOME, EXPENSE, REFUND, CHARGEBACK, NFT, SPAM, UNKNOWN Postable ledger account for the entry. Entendre selects the offsetting account.
Older name for transaction_type. Send only one type field.
DEPOSIT, WITHDRAWAL, SWAP, NON_TAXABLE_CONVERSION, BRIDGE, INTERCOMPANY TRANSFER, INTERNAL TRANSFER, FEE, MINTING, STAKING_REWARD, VALIDATOR_REWARD, INVOICE, BILL, CLAIM REWARD, BORROW, REPAYMENT, RESERVES CHANGE, REALIZED_PNL, INCOME, EXPENSE, REFUND, CHARGEBACK, NFT, SPAM, UNKNOWN ISO-8601 date override. Defaults to transaction date.
Memo.
Tag IDs for reporting segmentation.
Set to true to post the journal in the same request. Defaults to false, which saves a draft.
Offsetting ledger account (lac_…). Defaults to the ledger account of the transaction source.
Vendor name. Entendre finds or creates a Supplier tag for it and attaches the tag to the entry.