# Equated - [Docs](https://docs.equated.co/index.md): One clean, accounting-ready record of your money. Run by you or your AI. - [Why Equated](https://docs.equated.co/why-one-record-matters.md): One record of your business. Every invoice, bill, payment, and entry in one place. - [Get started](https://docs.equated.co/quickstart.md): Connect your bank, bring in your documents, and close your first month. - [Connect your accounts](https://docs.equated.co/integrations.md): Connect your bank and platforms so everything flows into your books automatically. - [Set up opening balances](https://docs.equated.co/workflows/set-up-opening-balances.md): Give every account a starting line, so your books begin from proven numbers. - [Categorize transactions](https://docs.equated.co/workflows/categorize-transactions.md): Clear your transaction inbox: confirm the obvious ones, decide the rest. - [Pay a bill (AP)](https://docs.equated.co/workflows/enter-bills.md): Record what you owe a vendor and close it when the payment clears. - [Collect an invoice (AR)](https://docs.equated.co/workflows/send-invoices.md): Record what a customer owes and close it when the deposit lands. - [Resolve receipts](https://docs.equated.co/workflows/link-receipts.md): Connect receipts to the bank charges they explain, or record the ones an owner paid personally, so every expense has proof and reaches the books. - [Reconcile an account](https://docs.equated.co/workflows/reconcile-an-account.md): Prove one account against its bank statement. - [Close the month](https://docs.equated.co/workflows/close-a-period.md): Prove your books against the bank statement at the end of each period. - [Your ledger, simply](https://docs.equated.co/concepts/the-ledger.md): Simple transaction view backed by real accounting books. - [Merchants](https://docs.equated.co/concepts/merchants.md): Your vendors and customers, found automatically and linked across your books. - [Reconciliation](https://docs.equated.co/concepts/reconciliation.md): Prove each account against its bank statement — and why the feed alone is never enough. - [How actions work](https://docs.equated.co/concepts/actions.md): Your AI does the work through the same safe, recorded actions you use. - [GIFI codes](https://docs.equated.co/concepts/gifi-codes.md): The CRA's numbering for financial statement lines, and the codes Equated puts on your T2. - [Connect your AI](https://docs.equated.co/for-agents.md): Hand the bookkeeping to your AI. See what changed and who did it. - [Authentication](https://docs.equated.co/api/authentication.md): Get an API token to access Equated. - [AI integration](https://docs.equated.co/api/mcp.md): Connect an AI assistant to your books over MCP. - [Action safety](https://docs.equated.co/api/action-safety.md): How Equated previews, validates, and records AI-driven changes. - [List connected bank accounts](https://docs.equated.co/api-reference/bank-accounts/list-connected-bank-accounts.md): Returns active bank-feed accounts connected to the organization. Pass `includeHidden=true` to also return hidden accounts, which are otherwise excluded from every surface except the connection settings that unhide them. `connecting` lists banks still signing in or pulling for the first time, which h… - [Get one connected bank account](https://docs.equated.co/api-reference/bank-accounts/get-one-connected-bank-account.md): Returns a single bank-feed account by Equated bank account id. - [Add a manual transaction to a bank-feed account](https://docs.equated.co/api-reference/transactions/add-a-manual-transaction-to-a-bank-feed-account.md): Creates a manually entered transaction on a connected account — for repairing feed gaps (e.g. a cancelled transfer's missing return leg) so a reconciliation can tie out. Signed with the feed convention: positive = money out of the account, negative = money in. The row starts UNSTAGED and is categori… - [List transactions](https://docs.equated.co/api-reference/transactions/list-transactions.md): Returns bank-feed transactions for the organization, newest first. Transactions represent movements in connected bank and credit card accounts; each has a set of postings (ledger lines) that categorize the money. - [Add a manual transaction to a bank-feed account](https://docs.equated.co/api-reference/transactions/add-a-manual-transaction-to-a-bank-feed-account-1.md): Adds a manually entered transaction to a connected account, the repair path when the feed is missing activity the bank statement shows, so a reconciliation can tie out. Signed with the feed convention: positive = money out of the account, negative = money in. It starts UNSTAGED; categorize and confi… - [Confirm many transactions](https://docs.equated.co/api-reference/transactions/confirm-many-transactions.md): Confirm up to 500 DRAFT transactions in one call. A result per transaction is returned; already-confirmed transactions count as succeeded. Each changed transaction produces its own action_request. - [Unconfirm many transactions](https://docs.equated.co/api-reference/transactions/unconfirm-many-transactions.md): Move up to 500 POSTED transactions back to DRAFT for correction. Already-DRAFT rows count as succeeded. - [Update a transaction](https://docs.equated.co/api-reference/transactions/update-a-transaction.md): Sets the vendor/customer (`orgMerchantId`) on any transaction. Field edits (`date`, `amount`, `name`) apply only to manually created transactions (origin `manual`) and are rejected once journal entries exist — unconfirm first. Provider-synced rows are otherwise read-only. Amounts are signed with the… - [Categorize a transaction](https://docs.equated.co/api-reference/transactions/categorize-a-transaction.md): Assigns a chart-of-accounts entry to a transaction's draft postings. - [Confirm a transaction](https://docs.equated.co/api-reference/transactions/confirm-a-transaction.md): Finalize a transaction: flip its DRAFT bank-feed journal entry to POSTED. Handles both fresh DRAFTs (flips to POSTED) and correction-marker DRAFTs (writes a POSTED correction holding the diff vs the original effective state). Audited as an action_request. - [Unconfirm a transaction](https://docs.equated.co/api-reference/transactions/unconfirm-a-transaction.md): Move a POSTED transaction back to DRAFT for correction. Inserts an empty DRAFT correction marker that subsequent categorize / edit-postings calls target; a later /confirm writes a POSTED correction with the diff. - [Get one transaction](https://docs.equated.co/api-reference/transactions/get-one-transaction.md): Returns a single transaction by its provider-assigned ID (the ID from the bank feed, exposed as `providerTransactionId` in the list response). Includes postings, journal entries, linked documents, and transfer links. - [List chart-of-accounts entries](https://docs.equated.co/api-reference/accounts/list-chart-of-accounts-entries.md): Returns all ledger accounts (the chart of accounts) visible to the organization. Accounts are organized as a tree; only leaf nodes are assignable as posting categories. Every account has one of five types — `ASSET`, `LIABILITY`, `EQUITY`, `REVENUE`, `EXPENSE` — inherited from its position in the tre… - [Create a custom account](https://docs.equated.co/api-reference/accounts/create-a-custom-account.md): Creates a new custom leaf account under an existing parent. The account type (ASSET, LIABILITY, EQUITY, REVENUE, EXPENSE) is determined by the parent's position in the chart of accounts — choose the parent that matches the type you need. - [List register accounts with base-currency balances](https://docs.equated.co/api-reference/accounts/list-register-accounts-with-base-currency-balances.md) - [Update a custom account](https://docs.equated.co/api-reference/accounts/update-a-custom-account.md): Updates the name, emoji, color, description, or search terms of a custom account. System accounts (those not created by the organization) cannot be modified. - [Hide or unhide an account](https://docs.equated.co/api-reference/accounts/hide-or-unhide-an-account.md): Soft-hides or restores an account. Hidden accounts are excluded from category pickers and the default `GET /api/accounts` response, but remain in ledger history and journal entries. Use this to clean up the chart of accounts without losing historical postings. - [List documents](https://docs.equated.co/api-reference/documents/list-documents.md): List documents across all types (BILL, INVOICE, RECEIPT, PAYROLL_REPORT, etc.). Filter by `type` (one kind) or `types` (several, repeated or comma-separated), plus `lifecycle`, counterparty, integration details, or date range. Add `stage` — inbox, outstanding, or done, read per kind — to page one st… - [Create a manual document](https://docs.equated.co/api-reference/documents/create-a-manual-document.md): Create a manual document (BILL or INVOICE) without an uploaded file. The document lands in DRAFT with a DRAFT accrual journal entry (AP for bills, AR for invoices), ready for posting edits and confirm_document. To create a document FROM a file (receipt image, bill/invoice PDF), use `POST /documents/… - [Create a document upload URL](https://docs.equated.co/api-reference/documents/create-a-document-upload-url.md): Presign a time-limited PUT URL for one document file (.pdf, .png, .jpg, or .jpeg; max 25MB). PUT the raw file bytes to `uploadUrl` with the returned `Content-Type` header, then ingest it with `POST /documents/ingest`. Nothing is recorded until that second call. - [Create a document from an uploaded file](https://docs.equated.co/api-reference/documents/create-a-document-from-an-uploaded-file.md): Ingest a file uploaded via `POST /documents/upload-urls` as a DRAFT document. Name `documentType` (RECEIPT, REIMBURSEMENT, BILL, or INVOICE) when you know it and it is kept over the classifier's guess; omit it and the document lands unsorted for the classifier to name. When all you know is the direc… - [Get one document](https://docs.equated.co/api-reference/documents/get-one-document.md): Returns document detail. Bills and invoices include a settlement summary whose links identify each payment or credit adjustment, its relationId for unapply, backing-JE status, payment base amount, and realized FX. - [Delete a draft document](https://docs.equated.co/api-reference/documents/delete-a-draft-document.md): Deletes a DRAFT document together with its draft accrual entry. A posted document must be unconfirmed first, and a receipt recorded as an expense must be unrecorded first. - [Edit a document's figures](https://docs.equated.co/api-reference/documents/edit-a-documents-figures.md): Edits document details and receipt/reimbursement line items. Draft reimbursement accounting edits rebuild its draft entry; payerAccountId identifies the person owed. Unconfirm a posted reimbursement before editing; unconfirm retains its entry and payer. - [Confirm a document](https://docs.equated.co/api-reference/documents/confirm-a-document.md): Confirm a DRAFT document (BILL, INVOICE, REIMBURSEMENT, or PAYROLL_REPORT): flips the document and its accrual JE from DRAFT to POSTED, moving it out of the inbox. Audited as an action_request. - [Unconfirm a document](https://docs.equated.co/api-reference/documents/unconfirm-a-document.md): Send a confirmed document back to the inbox: flips both the document and its accrual JE from POSTED to DRAFT. Postings are preserved so the document can be edited and reconfirmed. - [Apply a payment transaction to a confirmed bill](https://docs.equated.co/api-reference/documents/apply-a-payment-transaction-to-a-confirmed-bill.md): **Bills only.** Records a settlement allocation linking a payment transaction to a POSTED bill. Applying posts the payment if it's a draft (attach = confirm) and relieves its whole non-bank side onto the bill's accrual AP account with a reversible reclass correction — DRAFT or POSTED alike, no uncon… - [Remove a settlement allocation from a bill](https://docs.equated.co/api-reference/documents/remove-a-settlement-allocation-from-a-bill.md): **Bills only.** Removes one payment settlement or vendor-credit adjustment by relationId. Payment removal deletes its reversible reclass correction and voids/deletes its realized-FX JE; adjustment removal voids/deletes its discount JE. The payment stays POSTED, vendor stamping is preserved, and the… - [Apply a collection transaction to a confirmed invoice](https://docs.equated.co/api-reference/documents/apply-a-collection-transaction-to-a-confirmed-invoice.md): **Invoices only.** Records a settlement allocation linking a collection transaction to a POSTED invoice. Applying posts the collection if it's a draft (attach = confirm) and relieves its whole non-bank side onto the invoice's accrual AR account with a reversible reclass correction — DRAFT or POSTED… - [Remove a settlement allocation from an invoice](https://docs.equated.co/api-reference/documents/remove-a-settlement-allocation-from-an-invoice.md): **Invoices only.** Removes one collection settlement or discount adjustment by relationId. Collection removal deletes its reversible reclass correction and voids/deletes its realized-FX JE; adjustment removal voids/deletes its discount JE. The collection stays POSTED, customer stamping is preserved,… - [Confirm many documents](https://docs.equated.co/api-reference/documents/confirm-many-documents.md): Confirm up to 500 DRAFT documents (bills, invoices, reimbursements, payroll reports) in one call. Each row produces its own action_request. Already-confirmed rows count as succeeded. - [Unconfirm many documents](https://docs.equated.co/api-reference/documents/unconfirm-many-documents.md): Send up to 500 POSTED documents back to the inbox. Already-DRAFT rows count as succeeded. - [Convert many documents to another type](https://docs.equated.co/api-reference/documents/convert-many-documents-to-another-type.md): Reclassify up to 500 DRAFT documents between BILL / INVOICE / RECEIPT. Each row rebuilds its own accrual JE and drops the old type's evidence/settlement relations. POSTED rows fail — unconfirm first. Rows already of the target type count as succeeded. - [Preview (and optionally commit) an action](https://docs.equated.co/api-reference/actions/preview-and-optionally-commit-an-action.md): Computes the change set for an accounting action. With `commit=false` the preview is read-only. With `commit=true` an `action_requests` row is created — the returned id is what you pass to /execute. - [Execute a previously-committed action request](https://docs.equated.co/api-reference/actions/execute-a-previously-committed-action-request.md): Materializes the previewed change set. Idempotent on `idempotencyKey` — replays return the cached result. - [List the action kinds an agent can request](https://docs.equated.co/api-reference/actions/list-the-action-kinds-an-agent-can-request.md): Returns one entry per supported action kind. Pair with the schema at the referenced `$ref` (visible in /openapi.json) to build a request body. - [Profit & loss statement](https://docs.equated.co/api-reference/reports/profit-&-loss-statement.md): Income statement for a date window: Revenue → COGS → Gross Profit → Operating Expenses → Net Income. Line amounts are positive magnitudes in account-tree sections; `totals` applies the sign convention. Counts POSTED entries only, so an organization with an unconfirmed inbox reads as zero activity —… - [Cash flow statement](https://docs.equated.co/api-reference/reports/cash-flow-statement.md): Direct-method cash flow in base currency, bucketed by month, quarter, or year: per-bucket gross inflow/outflow across the organization's bank-backed accounts, plus per-bucket category breakdowns attributing the cash to the non-cash leg of each moving entry. Includes DRAFT and POSTED bank-feed entrie… - [Balance sheet](https://docs.equated.co/api-reference/reports/balance-sheet.md): Assets / Liabilities / Equity as of a date, computed from POSTED entries on or before it. Line amounts are positive magnitudes; `totals.liabilitiesAndEquity` should equal `totals.assets` for balanced books. Non-zero transfer-clearing balances are reclassified by sign into Assets or Liabilities rathe… - [General ledger](https://docs.equated.co/api-reference/reports/general-ledger.md): Chronological journal-entry feed for a date window, with full postings (signed amounts in posting currency plus base-currency mirrors) and each entry's origin (bank transaction, bill/invoice/receipt, integration, manual). Filter to one ledger account for an account history — this is also the P&L dri… - [List posted journal entries](https://docs.equated.co/api-reference/journal-entries/list-posted-journal-entries.md): Chronological feed of POSTED entries with full postings and origins — the same entry shape as the general-ledger report, with the bank-feed scoping that report lacks (`financialAccountIds`, `hasCashLeg`). `source` filters the same way there (e.g. `MANUAL` to find standalone entries eligible for `voi… - [Get a journal entry's activity timeline](https://docs.equated.co/api-reference/journal-entries/get-a-journal-entrys-activity-timeline.md): The audit trail for one entry: every executed action that referenced it (created, edited, voided, settled), with who requested it and when. Derived from the durable action-request log, so history survives reversals. - [Get one journal entry](https://docs.equated.co/api-reference/journal-entries/get-one-journal-entry.md): A single entry with full postings (signed amounts in posting currency plus base-currency mirrors), its origin, and whether it is eligible for `void_journal_entry`. - [Live close checklist for a date window](https://docs.equated.co/api-reference/reconciliation/live-close-checklist-for-a-date-window.md): Cross-account, undated checklist: stale feeds, unconfirmed transactions, draft bills/invoices, unmatched receipts. Read-only. - [Provisional per-account balance checks (feed vs books)](https://docs.equated.co/api-reference/reconciliation/provisional-per-account-balance-checks-feed-vs-books.md): Sign-normalized provider balance vs native posted ledger activity through a date. A signal, not the statement proof. - [The org's one-time non-bank opening (INITIAL_BOOKS)](https://docs.equated.co/api-reference/reconciliation/the-orgs-one-time-non-bank-opening-initial_books.md): Draft lines (persisted as a DRAFT source=OPENING journal entry), the derived Opening Balance Equity plug, and completion state. Null before anything has touched the opening. - [Save the non-bank opening draft](https://docs.equated.co/api-reference/reconciliation/save-the-non-bank-opening-draft.md): Upserts the draft lines (each a postable chart account + signed base-currency balance) and the cutover date. Nothing posts; the draft journal entry stays DRAFT. Refused once the opening is posted. - [Move the cutover the books open on](https://docs.equated.co/api-reference/reconciliation/move-the-cutover-the-books-open-on.md): Re-anchors the whole opening to a new books-start date, in one transaction: every open per-account draft is discarded (they attest to the old date) and the opening draft moves with it. Draft lines are kept. Refused once the opening is posted, or while any account has already opened — reopen those fi… - [Post the non-bank opening](https://docs.equated.co/api-reference/reconciliation/post-the-non-bank-opening.md): Completes every per-account opening draft with an entered statement, then flips the draft opening journal entry to POSTED and completes the INITIAL_BOOKS reconciliation. An empty draft completes with no journal entry. Reversible only via /opening/reopen (+ per-account reopen). - [Reopen the posted non-bank opening](https://docs.equated.co/api-reference/reconciliation/reopen-the-posted-non-bank-opening.md): Returns the posted batch to an editable draft: the opening journal entry flips back to DRAFT and INITIAL_BOOKS to editable. Per-account bank openings are untouched. - [Per-account reconcile state (the hub)](https://docs.equated.co/api-reference/reconciliation/per-account-reconcile-state-the-hub.md): Every active feed-backed account with its anchor (last completed reconciliation), its open draft if any, and status (never / needs / reconciled). Pass providerBalanceAsOf=YYYY-MM-DD to also get the feed balance rolled back to that date per account. - [One account's reconciliation history (chain)](https://docs.equated.co/api-reference/reconciliation/one-accounts-reconciliation-history-chain.md): The account's proof chain, newest first — derived figures for the open draft, frozen figures for completed rows. - [Start or resume the account's reconciliation at a statement date](https://docs.equated.co/api-reference/reconciliation/start-or-resume-the-accounts-reconciliation-at-a-statement-date.md): Get-or-create the single open draft (find-open-first), rolled forward from the last completed proof. Pass `statementDate` (YYYY-MM-DD). - [Set the statement balance on a draft reconciliation](https://docs.equated.co/api-reference/reconciliation/set-the-statement-balance-on-a-draft-reconciliation.md): Records the entered statement closing balance for one account's open draft. The difference is derived; this does not complete or lock anything. - [Complete (freeze) a reconciliation](https://docs.equated.co/api-reference/reconciliation/complete-freeze-a-reconciliation.md): Blocked unless every transaction in the window is posted and the difference is zero (or an accepted discrepancy). Freezes the rolled-forward snapshot. - [Reopen (undo) a completed reconciliation](https://docs.equated.co/api-reference/reconciliation/reopen-undo-a-completed-reconciliation.md): Un-freezes the account's latest completed proof back into its open draft. A link-#0 reopen also voids the account's OPENING journal entry and clears its opening-date cutoff. Refused when a later COMPLETED reconciliation chains from it; an open successor draft is discarded (inputs only). - [Abandon the account's open (uncompleted) reconciliation draft](https://docs.equated.co/api-reference/reconciliation/abandon-the-accounts-open-uncompleted-reconciliation-draft.md): Discards the account's open draft (inputs only, nothing posted) — undoes a 'keep as new' opening so the feed returns to unmatched. No-op if there is no open draft; a completed proof is left alone (reopen it first). - [The jurisdiction's tax line catalog](https://docs.equated.co/api-reference/tax/the-jurisdictions-tax-line-catalog.md): Every line a bookkeeping account may be pointed at in one jurisdiction, and so the table a mapping row's `targetId` resolves through. It is law rather than filer data: the same catalog for every organization, and nothing in it depends on a filing. Each group belongs to one of two surfaces, and which… - [List automation rules](https://docs.equated.co/api-reference/automations/list-automation-rules.md) - [Create a rule](https://docs.equated.co/api-reference/automations/create-a-rule.md) - [Get a rule](https://docs.equated.co/api-reference/automations/get-a-rule.md) - [Delete a rule](https://docs.equated.co/api-reference/automations/delete-a-rule.md) - [Update a rule](https://docs.equated.co/api-reference/automations/update-a-rule.md) - [Pause a rule](https://docs.equated.co/api-reference/automations/pause-a-rule.md) - [Archive a rule](https://docs.equated.co/api-reference/automations/archive-a-rule.md) - [Activate a rule](https://docs.equated.co/api-reference/automations/activate-a-rule.md) - [Search merchants by name](https://docs.equated.co/api-reference/merchants/search-merchants-by-name.md): Fuzzy-search the org's merchants by name, returning lightweight counterparties (id, name, role flags). Optionally filter by role. - [List a merchant's activity](https://docs.equated.co/api-reference/merchants/list-a-merchants-activity.md): Returns the merchant's activity feed — one row per journal entry with at least one posting tagged to this merchant. `role` selects revenue (customer) or spend (vendor) postings; it defaults to the merchant's own role flag. - [Merge merchants](https://docs.equated.co/api-reference/merchants/merge-merchants.md): Merge one or more duplicate merchants into a keeper (the path `id`). All references — transactions, documents, postings, and automation rules — are repointed to the keeper, the source role flags are merged in, and the sources are tombstoned. This is permanent: there is no un-merge. The keeper cannot… - [Get a merchant](https://docs.equated.co/api-reference/merchants/get-a-merchant.md): Get one merchant by id. Returns null if not found or merged. - [List merchants](https://docs.equated.co/api-reference/merchants/list-merchants.md): List the org's merchants with lifetime spend/revenue totals and a 12-month monthly series. Filter by `role` (vendor/customer) and an optional date window; sort by amount or last activity. Merchants are auto-extracted from transaction names — see the Merchants concept doc. - [List project groups](https://docs.equated.co/api-reference/projects/list-project-groups.md) - [Create a project group](https://docs.equated.co/api-reference/projects/create-a-project-group.md) - [Delete a project group; its projects stay, ungrouped](https://docs.equated.co/api-reference/projects/delete-a-project-group;-its-projects-stay-ungrouped.md) - [Rename a project group or change its emoji](https://docs.equated.co/api-reference/projects/rename-a-project-group-or-change-its-emoji.md) - [List projects](https://docs.equated.co/api-reference/projects/list-projects.md) - [Create a project](https://docs.equated.co/api-reference/projects/create-a-project.md) - [Delete a project; its records and lines keep their amounts, with no project](https://docs.equated.co/api-reference/projects/delete-a-project;-its-records-and-lines-keep-their-amounts-with-no-project.md) - [Update a project](https://docs.equated.co/api-reference/projects/update-a-project.md) - [Count the records a project is on](https://docs.equated.co/api-reference/projects/count-the-records-a-project-is-on.md) ## OpenAPI Specs - [openapi](/openapi.json)