Docs

Accounts and money

API reference for accounts and their balances, other income, transfers between accounts, and recurring expenses.

These endpoints need the Financial area of the key's role: Read to list, Modify to record and change, and Full to delete. See Keys and permissions. Payments on invoices and expenses are under Billing and expenses.

Accounts and transfers are your business's own, not a client's, so a key whose agent can see only some clients can't change them.

A line that has cleared on a reconciled statement keeps its date, amount and account, and can't be deleted - undo that reconciliation first.

Accounts

EndpointDoes
GET accounts/read.phpLists your accounts with their balances, or gets one
POST accounts/create.phpAdds an account
POST accounts/update.phpChanges an account
POST accounts/archive.phpArchives an account
POST accounts/unarchive.phpBrings an archived account back
POST accounts/delete.phpDeletes an account nothing has been on

Read takes account_id (archived or not) and archived - 1 to include archived accounts. Each has its balance today: the opening balance with every payment, income, expense and transfer on it.

{ "success": "True", "count": 1, "data": [ { "account_id": 2, "account_name": "Operating Checking", "account_type": 1, "account_currency_code": "USD", "opening_balance": 18500, "balance": 41237.5, "account_description": null, "account_notes": null, "account_created_at": "2024-11-01 09:00:00", "account_archived_at": null } ] }
FieldNotes
account_nameRequired, and no other account can have it
account_typeRequired: 1 Checking, 2 Savings, 3 Credit card, 4 Cash, 5 Payment processor or 6 Other
account_currency_codeSuch as USD. Your company's if you leave it out. It stays once money is on the account.
opening_balanceWhat was in it when you started. Owed on a card is below 0.
account_description, account_notes

Update takes account_id and changes only what you send. Archive needs the account empty, and not the one online payments go into. Delete needs Full, and only an account nothing has ever been on can be deleted - archive one with history instead. See Accounts.

Other income

Money in that isn't a payment on an invoice - a referral fee, interest, a refund from a supplier. See Other income.

EndpointDoes
GET revenues/read.phpLists other income, or gets one
POST revenues/create.phpRecords other income
POST revenues/update.phpChanges it
POST revenues/delete.phpDeletes it

Read takes revenue_id and client_id (0 for income of no client), with limit and offset. Each has its category_name, account_name and client_name. The in side of a transfer isn't listed.

FieldNotes
revenue_dateRequired, as 2026-11-05
revenue_amountRequired
revenue_account_idRequired: the account it went into. It's in the account's currency.
revenue_category_idRequired: an income category
revenue_client_idThe client it came from
revenue_payment_method, revenue_reference, revenue_description

Update and delete take revenue_id and client_id, its client. Update changes only what you send.

Transfers

Money moved between two of your accounts - paying off a card, sweeping to savings, a processor's payout.

EndpointDoes
GET transfers/read.phpLists transfers, or gets one
POST transfers/create.phpMoves money between accounts
POST transfers/update.phpChanges a transfer
POST transfers/delete.phpDeletes a transfer

Read takes transfer_id and account_id - those out of or into it - with limit and offset. Each has transfer_date, transfer_amount, both accounts' ids and names, transfer_method and transfer_notes.

Create takes transfer_date, transfer_amount, transfer_from_account_id and transfer_to_account_id - two different accounts - all required, and transfer_method (one of your payment methods) and transfer_notes. Update takes transfer_id and changes only what you send. Delete takes transfer_id, and both its sides go.

{ "api_key": "YOUR_API_KEY", "transfer_date": "2026-11-12", "transfer_amount": "4250.00", "transfer_from_account_id": 4, "transfer_to_account_id": 2, "transfer_notes": "Card settlements paid out" }

Recurring expenses

Bills that come round - hosting each month, a domain each year - recorded as an expense on each date by the nightly run. See Recurring expenses.

EndpointDoes
GET recurring_expenses/read.phpLists recurring expenses, or gets one
POST recurring_expenses/create.phpSets one up
POST recurring_expenses/update.phpChanges one
POST recurring_expenses/status.phpPauses or resumes one
POST recurring_expenses/record.phpRecords its next run now
POST recurring_expenses/move_on.phpSkips the runs it missed
POST recurring_expenses/delete.phpDeletes one

Read takes recurring_expense_id and client_id (0 for the business's own), with limit and offset, soonest first. recurring_expense_status is 1 while it runs and 0 once paused or ended.

FieldNotes
recurring_expense_vendor_idRequired: one of your vendors
recurring_expense_amountRequired: each time
recurring_expense_frequencyRequired: month, quarter or year
recurring_expense_next_dateRequired: the first one, as 2026-12-01. A moved date is the day it keeps to from then.
recurring_expense_account_idRequired: the account it's paid from
recurring_expense_category_idRequired: an expense category
recurring_expense_end_dateThe last day it runs
recurring_expense_client_idThe client it's for
recurring_expense_billingbill - to the client, at recurring_expense_markup percent - covered by the client's recurring invoice recurring_expense_recurring_invoice_id, or none
recurring_expense_tax_id, recurring_expense_tax_amountThe tax in it. Left out on an update, it keeps its own.
recurring_expense_payment_method, recurring_expense_reference, recurring_expense_description

Each of the others takes recurring_expense_id and client_id, its client.

  • Update changes only what you send.
  • Status takes status: 0 pauses it, 1 resumes it. One that has ended runs again only once its end date is moved. Resumed with its next date long past, the answer's message says to record the missed runs or move it on.
  • Record records its next run now, as Record Now does - or the one on the day run names, which is recorded once however often it's asked for. The answer has expense_id, and next_date - null once it has ended.
  • Move on skips the runs it missed without recording them. The answer has next_date.
  • Delete needs Full. The expenses it recorded stay.
↑↓ to pickEnter to open