Transactions

Transactions represent bank transactions synced from Plaid or created manually. They are the core data type for bank feeds, categorization, and reconciliation.

Transaction Lifecycle

  1. Sync — Transactions arrive from Plaid or are created manually
  2. Clean — Merchant names are normalized automatically
  3. Categorize — AI, rules, or manual assignment to ledger accounts
  4. Review — User confirms the categorization
  5. Reconcile — Match against bank statements

List Transactions

bash
curl "https://api.ondayzero.com/api/v1/transactions?limit=25&status=not_posted" \
  -H "Authorization: Bearer dz_your_token_here" \
  -H "x-business-id: YOUR_BUSINESS_ID"

Filter Parameters

Parameter Type Description
status string not_posted, posted, deleted
review_status string unreviewed, reviewed
reconciled boolean Filter by reconciliation status
personal boolean Filter personal expenses
start_date date Filter from date
end_date date Filter to date
ledger_id UUID Filter by account

Key Fields

Field Type Description
amount integer Amount in cents (positive = income, negative = expense)
currency string ISO currency code
datetime datetime Transaction date
description string Raw bank description
counterparty string Cleaned merchant name
posted_status string not_posted, posted, deleted
review_status string unreviewed, reviewed
categorization_method string ai, rules, similarity, user, uncategorized

Categorization

Transactions can be categorized via the journal entry system:

bash
curl -X POST "https://api.ondayzero.com/api/v1/journal-entries" \
  -H "Authorization: Bearer dz_your_token_here" \
  -H "x-business-id: YOUR_BUSINESS_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "description": "Office supplies purchase",
    "datetime": "2026-03-15T00:00:00Z",
    "line_entries": [
      { "ledger_id": "EXPENSE_LEDGER_UUID", "amount": 5000, "debit_credit": "debit" },
      { "ledger_id": "BANK_LEDGER_UUID", "amount": 5000, "debit_credit": "credit" }
    ]
  }'