Split and process multiple Bank Statements
POST/api/v8/partner/bank-statements-set
Veryfi's Bank Statement Splitter allows you to split a multi page PDF with different Bank Statements inside into multiple Documents. This API supports .pdf,.zip. The max pdf file size is 50mb. The max number of pages to process is limited to 100. Returns the response with the document set id immediately and starts processing asynchronously. When processing is finished successfully, you should expect a request to your configured webhook with this payload:
{'event': 'bank_statement_set.created', 'data': {'parent_id': 42000, 'id': [690001, 690003, 690004], 'created': '2025-08-02 06:06:04'}}
If processing fails, the payload will be:
{'event': 'bank_statement_set.failed', 'data': {'parent_id': 42000, 'id': [], 'created': '2025-08-02 06:06:04'}}
Request
- application/json
- multipart/form-data
Body
Possible values: non-empty
Deprecated. Please use meta.external_id instead.
Possible values: non-empty
External ID you want to associate with the document.
Possible values: non-empty
Default value: ``
Tags you want to associate with the document.
Possible values: non-empty
A path to a file in an S3 bucket, e.g. 'some/receipt.jpg
Possible values: non-empty
An S3 bucket for 'package_path', e.g. 'documents'.
Possible values: non-empty
Used to upload a document via base64 encoded string, could be raw or data URI scheme. This is the least effective way to upload a document for processing. See file_urls
or uploading zip files.
Possible values: non-empty
A URL to a publicly accessible document to be sent to Veryfi for processing.
Possible values: non-empty
An array of URLs to publicly accessible documents to be sent to Veryfi for processing.
Possible values: non-empty
An optional filename. Useful to determine file type.
Possible values: >= 1
and <= 50
Default value: 50
Limit processing to number of pages.
Body
Possible values: non-empty
External ID you want to associate with the document.
Possible values: non-empty
Default value: ``
Tags you want to associate with the document.
Possible values: non-empty
Deprecated. Please use meta.external_id instead.
Possible values: non-empty
A path to a file in an S3 bucket, e.g. 'some/receipt.jpg
Possible values: non-empty
An S3 bucket for 'package_path', e.g. 'documents'.
Possible values: non-empty
Used to upload a document via base64 encoded string, could be raw or data URI scheme. This is the least effective way to upload a document for processing. See file_urls
or uploading zip files.
Possible values: non-empty
A URL to a publicly accessible document to be sent to Veryfi for processing.
Possible values: non-empty
An array of URLs to publicly accessible documents to be sent to Veryfi for processing.
Possible values: non-empty
An optional filename. Useful to determine file type.
A binary file. Submitting zipped documents through this parameter is the fastest way to process any document.
Possible values: >= 1
and <= 50
Default value: 50
Limit processing to number of pages.
Responses
- 202
- 400
- 403
- 404
- 413
- 429
- 499
- 500
- 503
- 504
- default
The unique identifier of a document set.
- application/json
- Schema
- Example (from schema)
Schema
- Array [
- ]
The unique identifier of the collections of processed documents.
The unique identifiers of the documents created from processed PDF Splitter.
Possible values: [processed
, in_progress
, deleted
, failed
]
page_breaks object[]
A list of page breaks to split a document. Each object defines what pages to use to create a new document.
Possible values: > 0
Page start
Possible values: > 0
{
"id": 0,
"document_ids": [
0
],
"status": "processed",
"page_breaks": [
{
"page_start": 0,
"page_end": 0
}
]
}
User error
- application/json
- Schema
- Example (from schema)
Schema
- COULDNT_DOWNLOAD_FILE_FROM_PROVIDED_URL
- RECEIVED_EMPTY_OR_MISSING_DATA
- NO_FILES_TO_PROCESS
- FILE_IS_CORRUPTED
- THE_FILE_IS_TOO_BIG
- IMAGE_DIMENSIONS_ARE_TOO_SMALL
- FILE_IS_ENCRYPTED
Default value: fail
Default value: Couldn't download file from provided url.
Default value: [object Object]
Default value: fail
Default value: Received empty or missing data
Default value: fail
Default value: No files to process
Default value: fail
Default value: File is corrupted
Default value: fail
Default value: The file is too big
Default value: fail
Default value: Image dimensions are too small
Default value: [object Object]
Default value: fail
Default value: File is encrypted
{}
User error
- application/json
- Schema
- Example (from schema)
Schema
- AUTHENTICATION_CREDENTIALS_WERE_NOT_PROVIDED
Default value: fail
Default value: Authentication credentials were not provided.
{}
Not found
- application/json
- Schema
- Example (from schema)
Schema
- NOT_FOUND
- DOCUMENT_NOT_FOUND
Default value: fail
Default value: Not found.
Default value: fail
Default value: Document Not Found
{}
Request body too large
- application/json
- Schema
- Example (from schema)
Schema
- REQUEST_BODY_TOO_LARGE
Default value: fail
Default value: Request body too large
{}
Rate limit
- application/json
- Schema
- Example (from schema)
Schema
- YOU_HAVE_BEEN_RATE_LIMITED
Default value: fail
Default value: You have been rate limited
Default value: [object Object]
{}
User error
- application/json
- Schema
- Example (from schema)
Schema
- CLIENT_CLOSED_REQUEST_OR_LOST_CONNECTION
Default value: fail
Default value: Client closed request or lost connection
{}
Unexpected error
Service is temporarily unavailable
- application/json
- Schema
- Example (from schema)
Schema
- SERVICE_IS_TEMPORARILY_UNAVAILABLE_PLEASE_TRY_AGAIN_LATER
Default value: fail
Default value: Service is temporarily unavailable. Please try again later
{}
Gateway timeout. Returned if request takes more than 100 seconds. The request might finish successfully later.
- application/json
- Schema
- Example (from schema)
Schema
- GATEWAY_TIMEOUT
Default value: fail
Default value: Gateway timeout
{}
General error response
- application/json
- Schema
- Example (from schema)
Schema
Default value: fail
{
"status": "fail",
"error": "string",
"details": [
{}
]
}