Skip to main content

Introduction

The Aden General Ledger API provides a comprehensive suite of endpoints for managing your organization’s financial data. This includes chart of accounts management, journal entries, accounts payable (bills), accounts receivable (invoices), payments, credit memos, and financial reporting.

Base URL

All API requests should be made to:
https://kube.acho.io/service/general-ledger

Authentication

All API endpoints require authentication using a JWT bearer token. Include the token in the Authorization header:
Authorization: jwt YOUR_TOKEN

Core Concepts

Document Lifecycle

Most financial documents in the General Ledger follow a consistent workflow:
1

Draft

Documents are created in Draft status and can be freely modified.
2

Submit for Approval

When ready, submit the document for approval. Status changes to “Pending Approval”.
3

Approval Process

Approvers can approve, reject, request changes, or place on hold. Multi-level approval is supported based on amount thresholds.
4

Posted

After final approval, documents are posted to the General Ledger and affect account balances.

Document Statuses

StatusDescription
DraftInitial state, document can be modified
Pending ApprovalSubmitted and awaiting approval
On HoldTemporarily held pending additional information
ApprovedAll required approvals obtained
PostedPosted to the General Ledger
RejectedRejected during approval process
VoidedDocument has been voided

Accounting Periods

All transactions must be posted to an open accounting period. The API validates that:
  • The posting period exists and is open
  • Sub-ledgers (AP, AR, GL) are not locked for the period
  • The transaction date falls within the period

API Modules

Common Request Headers

HeaderRequiredDescription
AuthorizationYesJWT authentication token (jwt YOUR_TOKEN)
Content-TypeYes (POST/PUT)application/json
X-Idempotency-KeyNoPrevents duplicate operations for approval actions

Error Handling

The API returns standard HTTP status codes:
StatusDescription
200Success
201Created
400Bad Request - Invalid parameters
401Unauthorized - Invalid or missing token
403Forbidden - Insufficient permissions
404Not Found - Resource doesn’t exist
409Conflict - Resource state conflict
422Unprocessable Entity - Validation failed
500Internal Server Error

Error Response Format

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Journal entry lines must balance",
    "details": {
      "total_debits": 1000,
      "total_credits": 900
    }
  }
}

Pagination

List endpoints support pagination using limit and offset parameters:
GET /service/general-ledger/journal-entries?limit=20&offset=0
ParameterDefaultDescription
limit20Number of records to return (max 100)
offset0Number of records to skip

Rate Limiting

API requests are rate limited. When you exceed the limit, you’ll receive a 429 Too Many Requests response. Include appropriate backoff logic in your integration.