{"name":"books","stage":"ga","description":"Package books is double-entry accounting: chart of accounts, ledger, bank reconciliation, and the reports that prove the books balance.","operations":[{"operationId":"get_books_accounts","method":"GET","href":"/v1/books/accounts","summary":"Returns the org's chart of accounts — the seeded fixed chart every posting key in the ledger refers to."},{"operationId":"post_books_ask","method":"POST","href":"/v1/books/ask","summary":"Answers a plain-language question about the caller's own books — \"what is my MRR?\", \"how long is my runway?\" — with figures taken from their ledger, never a guessed number."},{"operationId":"post_books_bank_import","method":"POST","href":"/v1/books/bank/import","summary":"Import a bank statement file into your books"},{"operationId":"post_books_bank_sync","method":"POST","href":"/v1/books/bank/sync","summary":"Pulls every connected bank (Plaid/Teller) for the caller's org, maps each fetched transaction to a posting and books it idempotently, then advances that connector's cursor so the next sync resumes where this one stopped."},{"operationId":"get_books_bank_transactions","method":"GET","href":"/v1/books/bank/transactions","summary":"Returns the org's normalized bank transactions, newest first — every row the import and connector paths have ingested, with its amount in exact cents, its direction, and whether it has been matched to a voucher yet."},{"operationId":"get_books_bank_unreconciled","method":"GET","href":"/v1/books/bank/unreconciled","summary":"Returns the org's unmatched bank inflows and their open clarifying questions — the queue a human answers so an unexplained deposit is never guessed into revenue."},{"operationId":"get_books_export","method":"GET","href":"/v1/books/export","summary":"Returns the complete financial package for the caller's org over (from, to]: the trial balance, the P\u0026L, the balance sheet, and the GL detail behind them — the four statements a tax preparer or an investor asks for, assembled from the one ledger in a single read so they cannot disagree with each other."},{"operationId":"get_books_gl","method":"GET","href":"/v1/books/gl","summary":"Returns the org's most recent GL Entry rows, newest first."},{"operationId":"get_books_inbox","method":"GET","href":"/v1/books/inbox","summary":"Returns the org's open document queue — everything uploaded but not yet booked, newest first, each with its extracted summary and the confidence the scanner resolved its category at."},{"operationId":"post_books_inbox","method":"POST","href":"/v1/books/inbox","summary":"Queue a document for later scanning"},{"operationId":"get_books_metrics","method":"GET","href":"/v1/books/metrics","summary":"Returns the org's deterministic SaaS-metrics snapshot over an optional (from, to] window — MRR, ARR, revenue, COGS, burn, gross margin, net income, cash, deferred revenue, monthly burn and runway — as raw int64-cent figures AND the same figures already formatted."},{"operationId":"get_books_pnl","method":"GET","href":"/v1/books/pnl","summary":"Returns the org's accrual-basis Profit \u0026 Loss over an optional (from, to] window of RFC3339 posting times: recognized revenue, matched cost, and the net."},{"operationId":"get_books_position","method":"GET","href":"/v1/books/position","summary":"Returns the org's Balance Sheet as of `to` (empty = all time), with the Assets == Liabilities + Equity equation proof."},{"operationId":"get_books_questions","method":"GET","href":"/v1/books/questions","summary":"Returns the clarifying questions the caller's own recent GL raises — the unusual postings a founder should look at (outliers, reversals, round-offs, uncosted revenue, an overdrawn wallet), sharpest first."},{"operationId":"get_books_rules","method":"GET","href":"/v1/books/rules","summary":"Returns the org's auto-categorization rules, highest priority first."},{"operationId":"post_books_rules","method":"POST","href":"/v1/books/rules","summary":"Creates or updates one auto-categorization rule, keyed by its pattern — writing a pattern that already exists REPLACES that row's category and priority."},{"operationId":"post_books_scan","method":"POST","href":"/v1/books/scan","summary":"Scan a receipt or invoice into a proposed voucher"},{"operationId":"post_books_scan_book","method":"POST","href":"/v1/books/scan/book","summary":"Posts a reviewed scanned bill to the ledger."},{"operationId":"post_books_sync","method":"POST","href":"/v1/books/sync","summary":"Ingests the caller's OWN org from commerce into BOTH ledgers (live and sandbox) and reports how many new vouchers posted to each."},{"operationId":"get_books_transactions","method":"GET","href":"/v1/books/transactions","summary":"Returns the org's booked ledger as a single-line register, newest first: one row per voucher, with its date, description, vendor, category, source and amount in exact cents."},{"operationId":"get_books_trial","method":"GET","href":"/v1/books/trial","summary":"Returns the org's trial balance over an optional [from, to] window of RFC3339 posting times, including the opening/closing columns and the TotalDebit == TotalCredit proof that the books balance."},{"operationId":"get_books_vendors","method":"GET","href":"/v1/books/vendors","summary":"Returns the org's vendor book: each canonical vendor, the alias spellings a receipt may print it under, and the expense account new bills from it default to."},{"operationId":"post_books_vendors","method":"POST","href":"/v1/books/vendors","summary":"Creates or updates one vendor in the org's vendor book, keyed by its canonical name — writing a canonical name that already exists REPLACES that row's aliases and default category."}],"_links":{"describedby":{"href":"/v1/openapi.json?capability=books"},"self":{"href":"/v1/books"},"up":{"href":"/v1"}}}