> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.ntropy.com/bank-statements/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ntropy.com/_mcp/server. # 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](#extraction) workflow, that extracts account holder information, account information and transaction records. The [Fast Verification](./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: | Status | Description | |--------------|------------------------------------------------------------------------------------| | `processing` | The upload was successful and extraction is in progress. | | `completed` | The extraction was successful, you may fetch the results. | | `error` | An 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](./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`** ```python title="SDK" from ntropy_sdk import SDK sdk = SDK("cd1H...Wmhl") results = sdk.bank_statements.results("7f8dceac-2848-472d-b5c3-55cdbaf35a9b") txs = [ tx.to_transaction_input(account_holder_id="35b927b6-6fda-40aa-93b8-95b47c2b2cad") for tx in results.accounts[0].transactions ] batch = sdk.batches.create( operation="POST /v3/transactions", data=[tx.dict() for tx in txs], ) ``` -----------------------------------------------------