Accounting Ledger API · postings
The monetary accounts' unsettled items
GET /open-items
The monetary accounts' unsettled items, oldest first, with the balances per account and currency: each order's receivable (its invoices less its payments), each purchase order's payable, and each payment or refund waiting in its provider's clearing account for the payout that settles it.
Every item is in its document's currency (amountCents, ISO minor units) and at the home amount it was booked at (homeCents), signed — a debit balance positive. A settlement relieves an item at that booked amount and posts the rest as realised exchange (7100), so a foreign-currency balance never leaves a residue; a settled item drops off this list. Narrow by account, currency, kind or orderId; total counts every match, limit is 1–500 (100 when omitted). A provider's clearing balance here is what its payouts have yet to settle: the reconciliation's open side. Like the general ledger, the items begin at the opening stocktake: one still open then is brought in at its booked amount against 3900 opening balances (the opening-balances posting), and a bill arriving after it for goods it counted is owed from it, so the balances here agree with the trial balance's. A period-end revaluation moves no item: each keeps its booked amount.
Access
Requires financials:read.
How scopes come from roles: Scopes and roles. Getting a token: Authentication and app tokens.
AI agent tool
Agents call this as accounting_list_open_items (Accounting: List open items), in the accounting toolset. It only reads.
Connecting an agent: AI agents.
Example
curl -X GET 'https://accounting.getmanifold.io/open-items?kind=receivable¤cy=AUD&limit=100' \
-H "Authorization: Bearer $MANIFOLD_TOKEN"const response = await fetch("https://accounting.getmanifold.io/open-items?kind=receivable¤cy=AUD&limit=100", {
method: "GET",
headers: { Authorization: `Bearer ${process.env.MANIFOLD_TOKEN}` },
});
if (!response.ok) throw new Error(`${response.status}: ${await response.text()}`);
const answer = await response.json();{
"items": [
{
"kind": "receivable",
"account": "1200",
"currency": "AUD",
"amountCents": 10560,
"homeCents": 10560,
"orderId": "ord_01a156d4-8704-7a21-8b32-4c5d6e7f8091",
"openedAt": "2026-10-20T03:15:00.000Z"
}
],
"balances": [
{
"account": "1200",
"currency": "AUD",
"amountCents": 10560,
"homeCents": 10560,
"items": 1
}
],
"total": 1,
"limit": 100,
"offset": 0
}The panel writes this call in other languages. It does not send it: Manifold's APIs do not take calls from a web
page on another site, so run the call from your own code or terminal. The whole API as OpenAPI: accounting-manager.openapi.json. Base URL https://accounting.getmanifold.io.
Errors
Every refusal is a status and a JSON body whose _tag names it. A refused call changes nothing.
401
| Refusal | What it means | What to do |
|---|---|---|
Unauthorized reason | The token is missing, expired or not one Manifold issued. | Get a fresh token and send the call again. |
TokenAlreadyUsed tokenId | A single-use app token was already spent. | Mint a new token for this call. |
402
| Refusal | What it means | What to do |
|---|---|---|
SubscriptionRequired status | The organization's subscription has lapsed, so writes are refused. | An owner settles billing. Reads still work meanwhile. |
403
| Refusal | What it means | What to do |
|---|---|---|
TenantRequired userId | The token names no organization. | Choose the organization, then get a new token. |
ScopeRequired required | The token's roles do not grant the scope this call needs. | Ask an owner or admin for a role that grants it. |
409
| Refusal | What it means | What to do |
|---|---|---|
MirroredFromSource source | This area is fed by your source system until the organization goes live. | Make the change in the source system, or go live first. |
503
| Refusal | What it means | What to do |
|---|---|---|
RequestLogUnavailable tokenId, reason | The service could not record the request, so it did nothing. | Try again shortly. |
How refusals work everywhere: Errors.
Used in
- Journal an additional cost on an order, step 20: Nothing is owed to anyone yet