Bank Statements

The Bank Statements API allows you to manage and extract information from bank statements. Bank statements must be in a PDF format.

The API provides two workflows. The main extraction workflow, that extracts account holder information, account information and transaction records. The Fast Verification workflow that quickly identifies key details about the institution and the account holder by looking at the beginning of the bank statement.

Extraction

The extraction process of bank statement information is an asynchronous operation with the following stages that are encoded in the status attribute:

StatusDescription
processingThe upload was successful and extraction is in progress.
completedThe extraction was successful, you may fetch the results.
errorAn error occurred during extraction. Check the field error for more information.

Submit a bank statement

When you submit a bank statement you will receive an identifier of the bank statement id that you can later use to check its status or to fetch the extraction results once they’re ready.

Webhooks

In production environments, we strongly recommend that you integrate with the bank statements API via webhooks.

Whenever there’s a status change (with the exception of the initial processing status) the webhook will be called with the bank statement resource. Each event includes an event type, allowing you to easily categorize and handle different status updates.

Polling

If you’re unable to integrate via webhooks, you can also poll for changes in the bank statements that you have submitted.

Enriching transactions

Once you have the transactions from your bank statement, you may want to submit them for enrichment. Using the SDK, you can convert a bank statement transaction to an enrichment input transaction.

SDK
1from ntropy_sdk import SDK
2
3sdk = SDK("cd1H...Wmhl")
4results = sdk.bank_statements.results("7f8dceac-2848-472d-b5c3-55cdbaf35a9b")
5txs = [
6 tx.to_transaction_input(account_holder_id="35b927b6-6fda-40aa-93b8-95b47c2b2cad")
7 for tx in results.accounts[0].transactions
8]
9batch = sdk.batches.create(
10 operation="POST /v3/transactions",
11 data=[tx.dict() for tx in txs],
12)