SchemaExtractSchemaExtract home

Reconciliation · finance ops

Bank statement to JSON API — transactions as JSON

Extract account holder, statement period, and transactions with amount and running balance from a PDF statement.

Why this page exists

Reconciling a PDF statement by hand is slow. SchemaExtract returns dated rows you can match to a ledger.

Default bank statement schema

  • account_holder
  • period_start
  • period_end
  • transactions
{
  "type": "object",
  "properties": {
    "account_holder": {
      "type": "string"
    },
    "period_start": {
      "type": "string",
      "format": "date"
    },
    "period_end": {
      "type": "string",
      "format": "date"
    },
    "transactions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date"
          },
          "description": {
            "type": "string"
          },
          "amount": {
            "type": "number"
          },
          "balance": {
            "type": "number"
          }
        }
      }
    }
  }
}

Call the API

curl -sS -X POST https://schemaextract.shop/v1/extract \
  -F "preset=bank_statement" \
  -F "file=@bank-statement-harbor.pdf"

Self-serve. No sales call. Same path as the playground. Slow models: POST /v1/extract/jobs.

Questions

Which statement fields are returned?
account_holder, period_start, period_end, and transactions[{date, description, amount, balance}]. Amounts are JSON numbers.
Is this a bank login product?
No. You upload a statement you already have. Files stay in memory and are discarded after extract.
Can I change the schema?
Yes. Paste your own JSON Schema or example object. The API never adds keys that are not in the schema.