Journal API

Post journal entries without building a ledger

Turn product events into balanced debits and credits over REST. Paprel validates every entry, keeps it tied to your source record, and preserves the accounting history your finance team needs.

Create journal entryPOST
curl -X POST https://api-sandbox.paprel.com/v1/accounting/journals \
  -H "authorization: Bearer $ACCESS_TOKEN" \
  -H "content-type: application/json" \
  -d '{
    "currency": "USD",
    "date": "2026-07-13",
    "description": "Marketplace order settled",
    "reference": "ORDER-1042",
    "posted": true,
    "lines": [
      { "account_code": "1010", "debit": "100.00", "credit": null },
      { "account_code": "4000", "debit": null, "credit": "100.00" }
    ],
    "meta_data": {
      "root_entity_type": "order",
      "root_entity_id": "ORDER-1042"
    }
  }'

Accounting invariants included

A narrow API with production-grade guardrails

The Journal API owns one concrete task: writing reliable accounting entries. The wider general ledger API adds the chart of accounts and ledger-wide read model around it.

Balanced before it is written

Every request is validated at the API boundary. If total debits and credits do not match, the journal never reaches the ledger.

Connected to the source event

Store your entity type and external identifier with the journal so a payment, order, invoice, or adjustment remains traceable.

Safe corrections, not silent history edits

Void posted journals and preserve their history. Draft entries can be changed while posted accounting remains reviewable.

Queryable for operations and audit

Filter entries by date, account, reference, posting state, or identifier, then retrieve the full debit and credit lines.

Journal entry API surface

Create, inspect, connect, and correct

POST/v1/accounting/journalsCreate and optionally post a balanced journal entry.
GET/v1/accounting/journalsList journals with account, date, reference, and state filters.
GET/v1/accounting/journals/{id}Read a journal header, its lines, relationships, and audit metadata.
GET/v1/accounting/journals/for-entityFind the journal generated for one of your product records.
PUT/v1/accounting/journals/{id}Update a permitted journal and re-run balance validation.
PUT/v1/accounting/journals/voidReverse financial impact without deleting the original history.

Where raw journals fit

Keep your domain model. Add the accounting effect.

Use workflow APIs for standard documents. Use direct journals when your product event is the source of truth and the accounting lines are specific to your business model.

Marketplaces

Record a multi-party split

Turn one order into cash, platform revenue, seller payable, fees, and tax lines while retaining the marketplace order id.

Fintech

Book a money-movement event

Translate a settled transfer or card event into the accounting effect your product needs to report and reconcile.

Vertical SaaS

Map domain events into books

Post journals for industry-specific workflows that do not fit a generic invoice or expense document model.

Follow the five-minute journal guide, then run the complete embedded accounting loop from keys to a live P&L.

Journal API FAQ

The implementation questions teams ask first

Need to evaluate the wider backend? See the accounting engine or compare building versus embedding.

What is a Journal API?

A Journal API lets software create and retrieve the debit and credit entries that make up double-entry accounting. Paprel validates balance, connects entries to source records, and preserves the audit history around changes and voids.

Can I post an unbalanced journal entry?

No. Paprel validates that total debits equal total credits before accepting the journal. An unbalanced request is rejected rather than repaired silently.

Should I use the Journal API or an invoice API?

Use a workflow API when Paprel's invoice, bill, payment, expense, or reconciliation model fits your event. Use the Journal API for custom domain events or migrations where you need direct control of the accounting lines.

How do I correct a posted journal?

Void or reverse the posted entry so the original remains visible in the audit trail. Draft entries can be updated or deleted within the constraints documented in the API reference.

Evaluate Paprel

Build in sandbox, launch with a production trial

Use sandbox for developer testing with no billing. When you are ready for real workflows, start production on a monthly plan with a 14-day free trial.

API-First Delivery
Audit-Ready Controls
Sandbox And Guided Rollout