API
Language
Ask for a seat

Closed beta. Nothing here is callable yet. These docs describe the day-one contract, and names marked proposed may change before the beta opens. Ask for a seat

Docs · Reference

Bookkeeping

Bookkeeping transactions, each with its category and status.

List bookkeeping transactions

GET/v1/bookkeeping/transactions

Ledger, card and imported transactions, each with its category and bookkeeping status.

Authentication

Bearer token whose client has the scope bookkeeping:read

Parameters

cursorquery · string

The next_cursor from the previous page. Opaque: don't build or edit it

limitquery · integer

Rows per page

min 1 · max 100 · default 50

fromquery · string

Earliest date, inclusive

date

toquery · string

Latest date

date

statusquery · string

Only one bookkeeping status

category_idquery · string

Only transactions in this category

Response · a list of BookkeepingTransaction

dataarray of BookkeepingTransaction

The page of results

next_cursorstring or null

Pass it as cursor to get the next page. null on the last page

Each item in data:

idstringrequired

The bookkeeping transaction's id

datestringrequired

Transaction date

date

amountMoneyrequired

Amount moved

amount.amountstringrequired

Decimal string with two places, never negative. The direction field says which way it moved

pattern ^[0-9]+\.[0-9]{2}$

amount.currencystringrequired

Always USD

One of USD

directionstringrequired

Money in (credit) or out (debit)

One of creditdebit

sourcestringrequired

Where it came from

One of ledgercardimported

statusstringrequired

Bookkeeping status

descriptionstringuntrusted text

Description from the merchant, payer or bank

categoryCategoryRef

Category of the transaction

category.idstring

The category's id. May change during the closed beta

category.namestringuntrusted text

The category's name. Untrusted when the owner created the category

notesstringuntrusted text

Note added in Novo

Responses

  • 200OK
  • 401The token is missing, expired or unknown, or the client was revoked or switched off
  • 403The client lacks the scope, the owner's standing changed, or the API isn't enabled for this business
  • 429Too many requests. Wait for Retry-After
  • 500Something failed unexpectedly on Novo's side. Not retryable: quote request_id to support
  • 503Something the answer depends on is unavailable. Retry after Retry-After
Request
curl "https://$NOVO_API_HOST/v1/bookkeeping/transactions" \
  -H "Authorization: Bearer $ACCESS_TOKEN"
Response · 200
{
  "data": [
    {
      "id": "bkt_example_01",
      "date": "2026-10-01",
      "amount": {
        "amount": "84.20",
        "currency": "USD"
      },
      "direction": "debit",
      "source": "card",
      "status": "EXAMPLE_STATUS",
      "description": "EXAMPLE MERCHANT",
      "category": {
        "id": "cat_example_01",
        "name": "Supplies"
      }
    }
  ],
  "next_cursor": "example_cursor"
}

Planned for bookkeeping

  • Upload receipts

Not available yet, and no endpoints are published for it. They’ll appear here once the contract defines them. Anything marked “needs your approval” waits for the account owner to approve it on their phone, every time. Tell us what you need first when you ask for a seat.