๐ŸŒ…Bank Statement Upload V1.0

Automatically validate, extract and verify transactional data from a valid PDF bank statement.

In Bank Statement Upload V1.0, the validation checks as well as transactional processing is handled simultaneously within the API call. Therefore you are only able to upload one statement at a time. If you are uploading multiple 1-month statements, you would have to do so in three consecutive calls.

Upload Bankstatement V1.0

POST {{baseUrl}}/bank-accounts/:bank_account_id/upload-bankstatement

Upload one or many valid PDF bank statements to a bank_account_id. The bank statements will need to be uploaded one-by-one in sequential calls.

Path Parameters

KeyTypeDescription

bankAccountId*

String

The UUID for a Bank Account that gets generated and returned in the POST Create new Bank Account response. It ensures that the transactional data and statements retrieved in the online login session are saved to the correct Bank Account.

Request Body

KeyValueDescription

statement*

form-data

Select the file you would like to upload. The file needs to be a valid bank PDF statement that the customer has downloaded from their internet banking. See here for more information on the types of statements that can be uploaded.

There is a maximum of 1 bank statement that can be uploaded in one API call.

category_engine

String

To enable refined transaction categorisation you will need to set the category_engine to

x-finch. For more information refer to the Transaction Categorisation page.

Status Codes

201 - Created

Statement Uploaded and Processed Successfully

{
    "data": {
        "id": "{{$randomUUID}}",
        "bank_account_id": "{{bankAccountId}}",
        "statement_date": "2023-01-09",
        "start_date": "2022-12-09",
        "end_date": "2023-01-09",
        "temp_url": "https://fincheck-onboarding.s3.eu-west-1.amazonaws.com/testing/client_b9522c78-728b-4a84-a324-b5781cf4fd04/bank_accounts/9208010020089/d7bc718f-d4b6-42d4-9b09-874e1276ca4c/bank_account/1.2-FNB_ASPIRE_CURRENT_ACCOUNT_49.pdf?X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQOIKJL7BXFF7LDWP%2F20230414%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20230414T091604Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature=75abbd0c4d11c4553685abbc2c4239c4a7a9e87e98c16be2c3acad6a18457e27",
        "expires_in": "60m",
        "file": {
            "id": 8916,
            "name": "1.2 FNB_ASPIRE_CURRENT_ACCOUNT_49.pdf",
            "type": "pdf",
            "url": "https://dev.apply.fincheck.co.za/transunion/documents/1.2%20FNB_ASPIRE_CURRENT_ACCOUNT_49.pdf"
        },
        "transaction_count": 101,
        "month": "Dec 2022",
        "fraud": {
            "fraud_checks": {
                "statement_balance": false,
                "create_date": false,
                "meta_mod_date": false,
                "meta_producer": false,
                "meta_creator": false,
                "meta_author": false
            }
        },
        "processed": true
    }
}
422 - Unprocessable Content

Invalid Bank Account Type

{
    "errors": [
        "This is not a statement bank account. Please create a statement bank account and try again."
    ]
}

Invalid Layout

[
    {
        "code": "invalid_layout",
        "message": "There was an error validating the statement",
        "data": {
            "error": "Invalid bank statement - layout"
        }
    }
]

Invalid Format

[
    {
        "code": "invalid_format",
        "message": "There was an error validating the bank statement.",
        "data": {
            "error": "The bank statement provided is not in an accepted file format. Please upload a PDF bank statement generated from your banking profile."
        }
    }
]  

Invalid Bank

[
    {
        "code": "invalid_bank",
        "message": "There was an error validating the statement",
        "data": {
            "error": "Could not be recognised as a valid FNB statement. Please check if it is a valid bank statement, and that your bank selection is correct."
        }
    }
]

Invalid Password

[
    {
        "code": "invalid_password",
        "message": "There was an error decrypting the bank statement.",
        "data": {
            "error": "The bank statement provided is password protected. Please upload a PDF bank statement that is not password protected."
        }
    }
]

Invalid Period

[
    {
        "code": "invalid_period",
        "message": "There was an error validating the statement",
        "data": {
            "error": "{\"message\":\"The provided statement is too old. Please upload a statement from the last 3 months.\",\"statement_date\":\"Nov 2022\"}"
        }
    }
]

Last updated