AskRobots includes a full double-entry accounting system with a REST API. Track income, expenses, assets, liabilities, and equity across multiple entities — then pull reports as JSON for dashboards, mobile apps, or integrations.
Authentication
All endpoints require token authentication:
Authorization: Token YOUR_API_TOKEN
Get your token at askrobots.com/userauth/apikeys/.
Entities
An entity is a business, project, or person whose books you're tracking. Each entity has its own chart of accounts and journal entries.
List entities
GET /finance/api/entities/
Query params: ?search=, ?mode=simple|standard|double_entry, ?status=active|archived
Create entity
POST /finance/api/entities/
{
"name": "My Company",
"mode": "double_entry",
"description": "Main business entity"
}
Modes:
- simple — Income and Expenses only (2 accounts)
- standard — Common accounts for small businesses
- double_entry — Full chart of accounts (30 accounts)
Setup default accounts
POST /finance/api/entities/{id}/setup_accounts/
Auto-creates the default chart of accounts for the entity's mode. Returns the list of created accounts.
Get / Update / Delete
GET /finance/api/entities/{id}/
PUT /finance/api/entities/{id}/
DELETE /finance/api/entities/{id}/
Accounts
Accounts belong to an entity and are categorized by type: asset, liability, equity, income, or expense.
List accounts
GET /finance/api/accounts/
Query params: ?entity={uuid}, ?account_type=asset|liability|equity|income|expense, ?search=
Create account
POST /finance/api/accounts/
{
"entity": "uuid",
"name": "Advertising",
"account_type": "expense",
"code": "5410",
"description": "Ad spend across all channels"
}
Get / Update / Delete
GET /finance/api/accounts/{id}/
PUT /finance/api/accounts/{id}/
DELETE /finance/api/accounts/{id}/
Journals
A journal entry records a financial transaction. In double-entry mode, each journal has lines that must balance (total debits = total credits).
List journals
GET /finance/api/journals/
Query params: ?entity={uuid}, ?status=draft|posted, ?date_from=2026-01-01, ?date_to=2026-12-31, ?search=, ?contact={uuid}, ?project={uuid}
Create journal with lines
Create a journal and its lines in a single request using lines_data:
POST /finance/api/journals/
{
"entity": "uuid",
"date": "2026-03-10",
"description": "Office supplies from Amazon",
"lines_data": [
{
"account": "expense-account-uuid",
"direction": "debit",
"amount": "49.99",
"currency": "usd-currency-uuid",
"exchange_rate": "1"
},
{
"account": "credit-card-account-uuid",
"direction": "credit",
"amount": "49.99",
"currency": "usd-currency-uuid",
"exchange_rate": "1"
}
]
}
Optional fields: reference, contact, project, document (file UUID for receipt/invoice attachment), metadata (JSON).
Update journal (replaces lines)
When you include lines_data in a PUT request, all existing lines are replaced:
PUT /finance/api/journals/{id}/
{
"entity": "uuid",
"date": "2026-03-10",
"description": "Updated description",
"lines_data": [...]
}
Omit lines_data to update journal fields without touching lines.
Post a journal
POST /finance/api/journals/{id}/post_entry/
Changes status from draft to posted. Only posted journals appear in reports.
Get / Delete
GET /finance/api/journals/{id}/
DELETE /finance/api/journals/{id}/
Reports
All report endpoints return JSON. They share common filter parameters:
| Param | Description |
|---|---|
entity |
Filter by entity UUID |
date_from |
Start date (YYYY-MM-DD) |
date_to |
End date (YYYY-MM-DD) |
as_of |
Point-in-time date (balance sheet, trial balance) |
Profit & Loss
GET /finance/api/journals/report_pnl/
Returns income and expense accounts with totals:
{
"income_items": [
{"account_id": "uuid", "code": "4100", "name": "Sales Revenue", "amount": "5000"}
],
"expense_items": [
{"account_id": "uuid", "code": "5100", "name": "Rent", "amount": "1200"}
],
"total_income": "5000",
"total_expenses": "1200",
"net_income": "3800"
}
Balance Sheet
GET /finance/api/journals/report_balance_sheet/
Returns assets, liabilities, equity, and retained earnings:
{
"asset_items": [...],
"liability_items": [...],
"equity_items": [...],
"total_assets": "10000",
"total_liabilities": "3000",
"total_equity": "5000",
"retained_earnings": "2000",
"total_equity_with_retained": "7000",
"total_liabilities_equity": "10000",
"is_balanced": true
}
Cash Flow
GET /finance/api/journals/report_cash_flow/
Monthly breakdown of cash movements through asset accounts (cash, bank, etc.):
{
"months": [
{"month": "2026-03-01", "cash_in": "5000", "cash_out": "1200", "net": "3800"}
],
"total_in": "5000",
"total_out": "1200",
"total_net": "3800"
}
Note: Only tracks asset account movements. Credit card payments (liability accounts) don't appear here.
Trial Balance
GET /finance/api/journals/report_trial_balance/
Every account with total debits and credits:
{
"accounts": [
{"account_id": "uuid", "code": "1010", "name": "Cash", "account_type": "asset", "total_debit": "5000", "total_credit": "1200"}
],
"grand_debit": "6200",
"grand_credit": "6200",
"is_balanced": true
}
Summary
Quick income/expenses/net for dashboards:
GET /finance/api/journals/summary/?entity_id={uuid}&date_from=2026-01-01&date_to=2026-12-31
{
"total_income": "5000",
"total_expenses": "1200",
"net": "3800"
}
Currencies
System currencies (USD, EUR, BTC, XAU, etc.) are read-only:
GET /finance/api/currencies/
GET /finance/api/currencies/?search=bitcoin
MCP Integration
All finance operations are also available through MCP tools:
create_finance_entity— create a new entitycreate_finance_account— add an accountcreate_journal_with_lines— create a journal entry with balanced lineslist_finance_entities— list your entitieslist_finance_accounts— list accounts (filter by entity/type)list_finance_entries— list journal entriesget_finance_entity— entity details with account summaryget_finance_summary— income/expense/net totalspost_finance_entry— post a draft journalsetup_finance_accounts— create default chart of accounts
Example: "Create a journal entry for $50 office supplies paid by credit card" works naturally through any MCP-compatible AI assistant.
File Attachments
Attach receipts or invoices to journal entries using the document field:
- Upload a file via
POST /api/files/upload/ - Pass the returned file UUID as
documentwhen creating a journal
The attachment appears on the journal detail page with a direct link to the file.
Kommentare
No comments yet. Be the first!