Get a bank statement import
The bank_statements.imports.get operation: GET /api/v1/bank_statements/imports/{id} in the REST API and the bank_statements_imports_get tool in the MCP server.
GET
/api/v1/bank_statements/imports/{id}Returns one imported bank statement: the file's name, how it was read (delimiter, date
format, decimal separator, the columns used), the booking-date range and its lines counted by match status.
List its lines with bank_statements.lines.list and importId.
At a glance
- REST:
GET /api/v1/bank_statements/imports/{id} - MCP tool:
bank_statements_imports_get - Operation ID:
bank_statements.imports.get - Scope: Legal entity
- Permission:
invoices:read - Risk tier:
read - Dry run: Not supported
- Idempotency: Not needed (read only)
- Modes: Test and live
- Authentication: API key with the
invoices:readscope - Since: M5
Request
Path parameters
| Field | Type | Description |
|---|---|---|
id | bsi_… ID |
Query parameters
This operation takes no query parameters.
Response
200 OK with a JSON object:
| Field | Type | Description |
|---|---|---|
id | bsi_… ID | |
object | "bank_statement_import" | |
entityId | ent_… ID | |
livemode | boolean | |
format | "csv" | |
filename | string or null | |
currency | string | |
lineCount | integer | Transactions in the file. |
counts | object | Lines by match status (kept current as lines are matched or ignored); duplicates were skipped. |
counts.imported | integer | |
counts.duplicates | integer | |
counts.matched | integer | |
counts.partial | integer | |
counts.unmatched | integer | |
counts.ignored | integer | |
from | string or null | |
to | string or null | |
options | object | |
options.delimiter | one of ,, ;, | |
options.dateFormat | one of YYYY-MM-DD, DD.MM.YYYY, DD/MM/YYYY, MM/DD/YYYY or null | |
options.decimalSeparator | one of ., , or null | |
options.columns | object | |
options.columns.bookingDate | string or null | |
options.columns.amount | string or null | |
options.columns.reference | string or null | |
options.columns.counterparty | string or null | |
options.columns.currency | string or null | |
importedBy | object | |
importedBy.type | string | |
importedBy.id | string | |
version | integer | |
createdAt | date-time | |
updatedAt | date-time |
Examples
An import
HTTP
GET /api/v1/bank_statements/imports/bsi_01m4tx5nj8emwbyf7y9vcf48ba
Authorization: Bearer or_test_…
Response (200):
JSON
{
"id": "bsi_01m4tx5nj8emwbyf7y9vcf48ba",
"object": "bank_statement_import",
"entityId": "ent_01m4tx5nj8emwbyf7y9vcf47zm",
"livemode": false,
"format": "csv",
"filename": "statement-2026-11-04.csv",
"currency": "EUR",
"lineCount": 3,
"counts": {
"imported": 3,
"duplicates": 0,
"matched": 1,
"partial": 0,
"unmatched": 2,
"ignored": 0
},
"from": "2026-11-04",
"to": "2026-11-04",
"options": {
"delimiter": ",",
"dateFormat": null,
"decimalSeparator": null,
"columns": {
"bookingDate": "Booking date",
"amount": "Amount",
"reference": "Reference",
"counterparty": "Counterparty",
"currency": null
}
},
"importedBy": {
"type": "user",
"id": "usr_01m4tx5nj8emwbyf7y9vcf47zk"
},
"version": 2,
"createdAt": "2026-11-05T09:00:00.000Z",
"updatedAt": "2026-11-05T09:00:00.000Z"
}
Errors
| Code | HTTP status | When | What to do |
|---|---|---|---|
validation_failed | 400 | A field is malformed or out of range. | Fix the fields listed in details.issues and send the request again. |
resource_not_found | 404 | No bank statement import or line with this ID is visible to the request. | Check the ID and that your credentials are scoped to the right organization, entity, brand and mode. |
permission_denied | 403 | The credentials can't read this entity's invoices (invoices:read). | Ask an organization owner or admin for a role or scope that allows this action. |
It can also return these common errors: api_version_unsupported, authentication_required, api_key_invalid, scope_required, dry_run_not_supported, rate_limited, internal_error.