<!--
  Full-page Markdown export (rendered HTML → GFM).
  Source: https://neotoma.io/ru/types/transactions
  Generated: 2026-04-01T11:48:44.111Z
-->
# Transactions

Payments, receipts, invoices, and ledger entries - versioned, not overwritten. Financial records in Neotoma maintain full provenance: every correction, reconciliation, and status change is a new observation.

## Store[#](#store)

Store a transaction with any fields that describe it. Neotoma auto-discovers the schema from the first observation - no migration required.

MCP

store\_structured({ entities: \[ { entity\_type: "transaction", description: "Monthly hosting - AWS", amount: -284.50, currency: "USD", date: "2026-03-01", category: "infrastructure", account: "business-checking" } \], idempotency\_key: "txn-aws-march-2026" })

CLI

neotoma store --json='\[{ "entity\_type": "transaction", "description": "Monthly hosting - AWS", "amount": -284.50, "currency": "USD", "date": "2026-03-01", "category": "infrastructure", "account": "business-checking" }\]'

REST API

curl -X POST http://localhost:3080/api/store \\ -H "Content-Type: application/json" \\ -d '{ "entities": \[{ "entity\_type": "transaction", "description": "Monthly hosting - AWS", "amount": -284.50, "currency": "USD", "date": "2026-03-01", "category": "infrastructure", "account": "business-checking" }\] }'

Common fields for `transaction`:

| Field | Example |
| --- | --- |
| description | "Monthly hosting - AWS" |
| amount | \-284.50 |
| currency | "USD" |
| date | "2026-03-01" |
| category | "infrastructure" |

Fields are flexible - add any property your workflow needs. The schema evolves automatically via [progressive schema enforcement](/schema-management).

## Retrieve[#](#retrieve)

Query transactions by type, search by keyword, inspect version history, and traverse relationships.

CLI

\# List recent transactions neotoma entities list --type transaction # Search by description neotoma entities search --query "AWS" --type transaction # Trace corrections and reconciliation history neotoma observations list --entity-id <entity\_id> # Find linked invoices or receipts neotoma relationships list --entity-id <entity\_id>

MCP

// Search by keyword retrieve\_entity\_by\_identifier({ identifier: "Monthly hosting - AWS", entity\_type: "transaction" }) // List transactions retrieve\_entities({ entity\_type: "transaction", limit: 50 }) // Timeline view list\_timeline\_events({ entity\_type: "transaction", start\_date: "2026-03-01", end\_date: "2026-03-31" })

## What your agent can answer[#](#example-queries)

With transactions stored in Neotoma, your agent can answer questions like:

-   “How much did we spend on infrastructure in March?”
-   “Show all corrections to the AWS hosting charge”
-   “Which transactions are linked to the Acme Corp account?”

## What Neotoma guarantees[#](#guarantees)

Every transaction stored in Neotoma gets the same set of integrity guarantees:

-   Versioned history - Every change creates a new version. Previous states are always accessible.
-   Deterministic state - Same observations always produce the same entity snapshot.
-   Auditable provenance - Every field traces back to the observation that set it.
-   Schema validation - Fields conform to the discovered or defined schema.

See all [memory guarantees](/memory-guarantees) compared across memory models.

## Next steps[#](#next-steps)

-   [Install Neotoma](/install) \- get started in 5 minutes
-   [Walkthrough](/developer-walkthrough) \- full multi-session example
-   [Financial ops use case](/financial-ops) \- see how transactions fit into a broader workflow