Skip to content
Get AI Business OS

Configuration

PRIMA Bookkeeper

PRIMA Bookkeeper keeps the settings and records for one business in the .prima-bookkeeper folder of your workspace. None of these files holds a credential, so you and your agent can read them.

File What it holds
business.json The business, its bank accounts, its ledger connection and account map, and its document sources
rules.json The classification rules, which grow from your decisions
suppliers.json A profile for each supplier, which grows from each confirmed invoice
bookkeeper.sqlite The store of bank lines, proposals, batches, postings, documents and the audit log

init writes business.json, and the commands write the other three. The setting PRIMA_BOOKKEEPER_CONFIG points the MCP server at a business.json in another place, and the -c option does the same for a terminal command.

Field What it sets
name The business name
jurisdiction The jurisdiction pack, such as IE
vatRegistered and vatNumber Whether the business is registered for VAT, and its number
accountingBasis invoice or cash receipts
returnPeriod The VAT return period, such as bimonthly or fourmonthly
fiscalYearStartMonth The month the financial year starts, from 1 to 12
posts.purchases and posts.sales Whether the tool posts payments out, and whether it posts money in as sales

Each entry in bankAccounts is one bank account mapped to one bank account in your ledger.

Field What it sets
id Your name for the account, such as aib-current
provider revolut, gocardless or csv
accountIds The provider’s ids for the account. Revolut pockets that share one ledger account all go here
ledgerBankAccountId The bank account in your ledger it posts to
csvFormat The CSV profile for a CSV-fed account, saved by csv-inspect --save
Field What it sets
provider sage, xero, quickbooks or freshbooks
businessId The ledger’s business, tenant, account or company id
taxRateMap Which of your ledger’s tax rates stands for each rate in the pack
accountMap Which ledger account stands for each account code in the pack
bankFeeContactId On Sage, the supplier contact that bank and currency charges post against
Field What it sets
sources The folders, drop folder and mailboxes to collect from
ownAddresses The business’s own mail addresses and domains, never taken for a supplier’s
archiveRoot The one folder every document is filed into
priorYears invoice_year or current_year_tagged for invoices from an earlier year
matching How far a document date may sit from the bank date, and the tolerance for currency and card-fee differences
policy Which kinds of payment and which account codes never need a document

Invoices and Receipts explains each source type and the filing rule.

Rules run in priority order, with your own rules first and the jurisdiction pack’s supplier defaults after. When you decide an unknown line with decide, the tool records a rule for that supplier. The tool then places the next payment to them without a question. You can read and edit rules.json directly.

Each supplier your rules name gets a profile in suppliers.json. Every confirmed invoice adds what it shows, such as the legal entity, VAT number, rates, currency, usual amount and the usual gap between invoice and charge. The tool checks each new invoice against the profile, and the invoice itself still governs.