Bank statement template

Extract bank statement transactions

Upload a bank or card statement and get every transaction row with its date, description, reference, debit, credit and running balance, plus the account details and opening and closing balances.

No account needed for the Playground. The Bank Statement template is already picked for you.

At a glance

  • 19 keys, including Transactions
  • PDF, PNG and JPEG, including scans and photos
  • Output: JSON, Excel (.xlsx), CSV
  • Built to return null instead of guessing
  • Documents are not stored after a request finishes
  • Good for: reconciliation and bookkeeping, loan and rental applications, spending analysis

Keys

What gets extracted

The Bank Statement template, exactly as it is saved in a new workspace. Every key comes back in the response. A value that is not on the document is null.

KeyType
Bank Namestring
Account Holderstring
Account NumberrequiredAs printed, including any masking.string
Account TypeFor example checking, savings, or credit card.string
IBANstring
CurrencyISO 4217 code, for example USD, EUR, or LKR.string
Statement Start Daterequireddate
Statement End Daterequireddate
Opening Balancerequirednumber
Closing Balancerequirednumber
Total CreditsSum of money in for the period, as printed.number
Total DebitsSum of money out for the period, as printed.number
TransactionsrequiredEvery transaction row, in statement order. Skip balance brought forward and carried forward lines.object[]
└ Daterequireddate
└ Descriptionrequiredstring
└ ReferenceCheque number or transaction reference.string
└ DebitrequiredMoney out, as a positive number. Null if none.number
└ CreditrequiredMoney in, as a positive number. Null if none.number
└ BalanceRunning balance after this row, if printed.number

Good to know

Bank statement: keys worth knowing

What the trickier keys in the Bank Statement template hold, and how they relate.

  • Transactions[].Debit and Transactions[].Credit

    The template asks for money out and money in as two separate positive numbers, with null on the side a row does not use. If your bank prints one signed amount column, you can swap them for a single amount field in the layout editor.

  • Transactions[].Balance

    The running balance after each row, when the statement prints one. It is not calculated, so rows without a printed balance come back as null.

  • Opening Balance and Closing Balance

    Copied from the statement summary as printed. A quick check: Opening Balance plus Total Credits minus Total Debits should equal Closing Balance.

Example

From bank statement to JSON

An illustrative bank statement with a made-up company and numbers, and the JSON the Bank Statement template returns for it. Keys that are not on the document come back as null.

Input: made-up example bank statement
Scanned Lakeside Bank PLC account statement for Acme Studio (Pvt) Ltd, October 2026, opening balance 4,200.00, three transactions and a closing balance of USD 5,416.00
Output: values
{
  "Bank Name": "Lakeside Bank PLC",
  "Account Holder": "Acme Studio (Pvt) Ltd",
  "Account Number": "XXXX XXXX 3307",
  "Account Type": "current",
  "IBAN": null,
  "Currency": "USD",
  "Statement Start Date": "2026-10-01",
  "Statement End Date": "2026-10-31",
  "Opening Balance": 4200,
  "Closing Balance": 5416,
  "Total Credits": 2500,
  "Total Debits": 1284,
  "Transactions": [
    {
      "Date": "2026-10-03",
      "Description": "Client payment, Orbit Ltd",
      "Reference": "TRF88120",
      "Debit": null,
      "Credit": 2500,
      "Balance": 6700
    },
    {
      "Date": "2026-10-10",
      "Description": "Office rent",
      "Reference": "CHQ 000214",
      "Debit": 1200,
      "Credit": null,
      "Balance": 5500
    },
    {
      "Date": "2026-10-21",
      "Description": "Card, Cloud hosting",
      "Reference": "POS44102",
      "Debit": 84,
      "Credit": null,
      "Balance": 5416
    }
  ]
}

Common gotchas

Where bank statement extraction trips up

Things that often catch people out with bank statement data, and how to handle them.

  • Masked account numbers

    Account Number is copied as printed, including masking like XXXX 3307. Masked digits stay masked.

  • Transactions over many pages

    Rows that continue across pages come back as one Transactions array in order, with repeated header rows skipped. A statement with no transactions returns an empty array.

  • Credit card statements

    Account Type covers checking, savings and credit card accounts. On a card statement, purchases are normally debits and payments to the card are credits.

How it works

Three steps, no setup.

  1. Step 1

    Upload the document

    Drop a bank statement into the Playground. PDF, PNG and JPEG all work, including scans and phone photos.

  2. Step 2

    Pick the template

    Choose the Bank Statement layout. It is already in every new workspace and guest browser, and you can edit its keys.

  3. Step 3

    Review and export

    The model fills exactly the layout's keys, with numbers as numbers and dates as yyyy-mm-dd. Copy the fields or download Excel or CSV.

Playground

Try the Bank Statement template now

Upload a bank statement with the Bank Statement layout already picked. Edit the keys afterward if you need to match your own records.

FAQ

Bank statement extraction, answered.

Can I get the transactions as CSV or Excel?

Yes. After a parse, use Download and pick CSV for one row per transaction with the account details repeated on each row, or Excel (.xlsx) for the statement summary on one sheet and the transactions on another.

How long a statement can I send?

Free allows up to 10 pages per document, and paid plans allow more. Each page costs one credit, so a 4-page statement uses 4 credits.

Do you store my bank statement documents?

No. The file is processed in memory for the request and then dropped. Neither the document nor the extracted JSON is saved. Only a usage record is kept, with things like the time, page count and credits used.

Can I change the keys?

Yes. Every new workspace, and every guest browser, starts with the Bank Statement template as a normal layout. Edit it, rename keys, add keys or delete it. Changes are yours, and a deleted template does not come back.

What happens when a value is not on the document?

It comes back as null. doc2json is built to return null instead of guessing, so you can tell missing data from real data.

Is it free to try?

Yes. The Playground works without an account, using a small guest allowance. A free account adds monthly credits and saved layouts. One credit is one page.

Try it on your own bank statement.

Open the Playground with the Bank Statement template picked and drop in a file. Sign up free when you want saved layouts and exports at volume.