# Statement Reconciliation

> Statement Reconciliation is a paid API for AI agents from api.zfinia.com, paid per call via x402, $0.24/call, status unknown (last checked 2026-10-10).

Match bank statement lines against ledger lines by reference first, then amount, reporting exact differences for mismatches and validating balance consistency.

## Facts

- Endpoint: POST https://api.zfinia.com/x402/v1/bank-statement-reconciliation?utm_source=zero.xyz
- Price: $0.24/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-10
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/statement-reconciliation-2b458e45
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_3jO4pOE7QJPXHjVVamt4g

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability statement-reconciliation-2b458e45 -d '<json body>'
```

Example prompt: Reconcile these two sets of transactions for me — here's the bank statement and here's the ledger, with an opening balance of $12,450.00 and a closing balance of $15,320.75; allow up to 2 days of date tolerance and tell me which lines don't match and what the exact differences are.

## When to prefer this

Choose this endpoint when you need reference-priority reconciliation logic that correctly pairs transactions by identity before falling back to amount matching, and when you need exact difference reporting for partial matches rather than binary matched/unmatched outcomes. It also validates internal statement balance consistency when opening and closing balances are supplied — making it suitable for both transaction-level matching and statement-level auditing in one call.

## Known failure modes

- Missing required 'date' or 'amount' fields on any line — request rejected with validation error
- Ledger or statement arrays empty or exceeding 20,000 items — rejected
- Invalid date format causing parse failure
- Amount values that cannot be interpreted as numbers — parse error
- Payment failure or insufficient USDC balance — 402 response with no reconciliation performed

## How this service works

Match bank statement lines against ledger lines. References are matched before amounts, because a reference is an identity and an amount is not: matching on amount first pairs two unrelated lines that happen to agree and reports the real pair as unmatched. A reference match with a disagreeing amount or date is reported with the exact difference rather than discarded. With both balances supplied, the statement is also checked for agreeing with itself.

## Output

The endpoint returns matched pairs of statement and ledger lines (matched by reference first, then amount), unmatched lines from either side, and for reference-matched pairs with disagreeing amounts or dates, the exact numerical and date differences. If opening and closing balances are provided, it also checks whether the statement internally agrees with those balances.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "ledger": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "date",
     "amount"
    ],
    "properties": {
     "date": {
      "type": "string",
      "maxLength": 32
     },
     "amount": {
      "type": [
       "string",
       "number"
      ]
     },
     "reference": {
      "type": "string",
      "maxLength": 128
     },
     "description": {
      "type": "string",
      "maxLength": 512
     }
    },
    "additionalProperties": false
   },
   "maxItems": 20000,
   "minItems": 1
  },
  "statement": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "date",
     "amount"
    ],
    "properties": {
     "date": {
      "type": "string",
      "maxLength": 32
     },
     "amount": {
      "type": [
       "string",
       "number"
      ]
     },
     "reference": {
      "type": "string",
      "maxLength": 128
     },
     "description": {
      "type": "string",
      "maxLength": 512
     }
    },
    "additionalProperties": false
   },
   "maxItems": 20000,
   "minItems": 1
  },
  "closing_balance": {
   "type": [
    "string",
    "number"
   ]
  },
  "opening_balance": {
   "type": [
    "string",
    "number"
   ]
  },
  "date_tolerance_days": {
   "type": "integer",
   "maximum": 365,
   "minimum": 0
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/statement-reconciliation-2b458e45/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.zfinia.com](https://www.zero.xyz/host/api.zfinia.com/llms.txt)
