{
  "slug": "bank-statement-reconcile",
  "name": "gizza-ai/bank-statement-reconcile",
  "version": "0.1.0",
  "title": "Bank Statement Reconcile — Match Statement and Ledger CSVs — gizza.ai",
  "description": "Match bank-statement CSV rows to ledger rows by date, signed amount, and fuzzy memo similarity, with unmatched and suggested matches.",
  "tags": [
    "bank statement reconcile",
    "ledger reconciliation",
    "csv matching",
    "fuzzy memo match",
    "unmatched transactions",
    "bookkeeping",
    "transaction matching"
  ],
  "category": "data",
  "urls": {
    "page": "https://gizza.ai/tools/bank-statement-reconcile/",
    "markdown": "https://gizza.ai/tools/bank-statement-reconcile/index.md",
    "descriptor": "https://gizza.ai/tools/bank-statement-reconcile/tool.json",
    "deep_link_example": "https://gizza.ai/tools/bank-statement-reconcile/?statement_csv=date%2Camount%2Cmemo%0A2024-01-02%2C-42.50%2CCOFFEE%20SHOP%0A2024-01-05%2C-1200.00%2CRENT%20PAYMENT&ledger_csv=date%2Camount%2Cmemo%0A2024-01-02%2C-42.50%2CCoffee%20Shop%20downtown%0A2024-01-05%2C-1200.00%2CJanuary%20rent&stmt_date=date&stmt_amount=amount&stmt_memo=memo&ledger_date=date&ledger_amount=amount&ledger_memo=memo&date_tolerance_days=3&amount_tolerance=0.01&memo_threshold=70&delimiter=comma&output=markdown"
  },
  "cli": "gizza tool bank-statement-reconcile \"date,amount,memo\n2024-01-02,-42.50,COFFEE SHOP\n2024-01-05,-1200.00,RENT PAYMENT\" 'ledger_csv=date,amount,memo\n2024-01-02,-42.50,Coffee Shop downtown\n2024-01-05,-1200.00,January rent'",
  "tool": {
    "description": "Reconcile a bank-statement CSV against a bookkeeping ledger CSV by signed amount and date, then use fuzzy memo token similarity to classify exact matches, suggested matches, unmatched statement items, and unmatched ledger items. Column references can be header names or 1-based indices; amounts accept signs, currency symbols, thousands separators, and accounting parentheses. Outputs markdown, JSON, or CSV.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "amount_tolerance": {
          "default": 0.01,
          "description": "Maximum absolute signed-amount difference for a candidate match.",
          "minimum": 0,
          "type": "number"
        },
        "date_tolerance_days": {
          "default": 3,
          "description": "Maximum absolute date difference, in days, for a candidate match.",
          "maximum": 30,
          "minimum": 0,
          "type": "integer"
        },
        "delimiter": {
          "default": "comma",
          "description": "CSV field delimiter used by both inputs.",
          "enum": [
            "comma",
            "tab",
            "semicolon",
            "pipe"
          ],
          "type": "string"
        },
        "ledger_amount": {
          "default": "amount",
          "description": "Ledger signed amount column name or 1-based index.",
          "type": "string"
        },
        "ledger_csv": {
          "description": "Bookkeeping ledger CSV text with a header row.",
          "type": "string"
        },
        "ledger_date": {
          "default": "date",
          "description": "Ledger date column name or 1-based index.",
          "type": "string"
        },
        "ledger_memo": {
          "default": "memo",
          "description": "Ledger memo/description column name or 1-based index.",
          "type": "string"
        },
        "memo_threshold": {
          "default": 70,
          "description": "Minimum fuzzy memo token similarity (0–100) to classify a candidate as matched instead of suggested.",
          "maximum": 100,
          "minimum": 0,
          "type": "integer"
        },
        "output": {
          "default": "markdown",
          "description": "Report format: markdown summary, JSON object, or flat CSV table.",
          "enum": [
            "markdown",
            "json",
            "csv"
          ],
          "type": "string"
        },
        "statement_csv": {
          "description": "Bank statement CSV text with a header row.",
          "type": "string"
        },
        "stmt_amount": {
          "default": "amount",
          "description": "Statement signed amount column name or 1-based index.",
          "type": "string"
        },
        "stmt_date": {
          "default": "date",
          "description": "Statement date column name or 1-based index.",
          "type": "string"
        },
        "stmt_memo": {
          "default": "memo",
          "description": "Statement memo/description column name or 1-based index.",
          "type": "string"
        }
      },
      "required": [
        "statement_csv",
        "ledger_csv"
      ],
      "type": "object"
    }
  }
}