Skip to main content

Extract transactions from bank statement (PDF)

Turn your customer's PDF bank statements into enriched and categorized transaction data. Upload a statement and get structured data with automatic transaction classification.

Prefer using the web app?

When you upload a bank statement in the Walker Street Data sandbox application, extraction and classification are handled automatically in the background. This guide details the equivalent workflow using the API.

What You Need

  • Customer ID see Create a Customer
  • Official, machine-readable PDF bank statement (not scanned images)
  • Under 10MB file size
  • Supported banks include: ANZ Bank, Bank of Melbourne (BOM), Bank of Queensland (BOQ), BankSA, Bendigo, Commonwealth Bank (CBA), National Australia Bank (NAB), St George, Suncorp, Tyro, Westpac, plus Illion Bank statements.

Upload Your Statement

curl -X POST "https://api.walkerstdata.com.au/v1/customer/{customerId}/transactions/pdf" \
-H "x-api-key: YOUR_API_KEY" \
-F "file=@statement.pdf"

You'll get back a jobId to track the extraction and classification progress.

What Happens Next

Walker Street Data automatically:

  1. Identifies the bank and account
  2. Extracts every transaction from the submitted statement
  3. Enriches the transactions by adding further detail and classifications

Check Extraction Status

curl -X GET "https://api.walkerstdata.com.au/v1/jobs/{jobId}/status" \
-H "x-api-key: YOUR_API_KEY"

Wait for status to show Completed.

Get Your Extracted Transaction Data

Once extraction is complete, retrieve your clean, categorized transactions:

curl -X GET "https://api.walkerstdata.com.au/v1/customer/{customerId}/transactions?jobId={jobId}" \
-H "x-api-key: YOUR_API_KEY"

What You Get

Each enriched transaction includes:

  • Original data: Date, amount, description, balance (preserved exactly)
  • Unique identifiers: Transaction ID, job ID, customer ID
  • Account context: Available in a separate accounts array with bank name, BSB, account number, account type, and account name
  • Transaction state: Posted status
  • Hierarchical categorization: 3-level classification system
    • Level 1: Broad categories (e.g., "expenses", "sales")
    • Level 2: Specific categories (e.g., "office_expenses", "credit_sales_eftpos")
    • Level 3: The receiving or originating counterparty (when available)
  • Confidence scores: Probability scores for each classification level
  • Enrichment source: Indicates whether enrichment came from Cypher classification engine or pre-enriched import

Example Response

{
"data": {
"accounts": [
{
"accountId": "7a2c4e1b-39a5-41d2-98f3-d1e8c6b5a4f2",
"bsb": "484732",
"accountNumber": "004749327",
"accountName": "CAMBRIDGE HOTEL MANAGEMENT PTY LTD",
"accountType": "Business Account",
"accountPurpose": "Business Operating",
"institutionId": "f5a6b7c8-d9e0-1234-5678-90abcdef1234",
"institutionName": "Suncorp"
}
],
"transactions": [
{
"transactionDate": "2023-11-01",
"amount": 1242.0,
"description": "MERCHANT SETTLEMENT 315799424037154 CAMBRIDGE MOTEL",
"balance": 4491.63,
"state": "Posted",
"enrichment": {
"level1": {
"value": "credit_sales",
"classificationModelId": "credit_sales_v1",
"confidence": "1.00"
},
"level2": {
"value": "credit_sales_eftpos",
"classificationModelId": "credit_sales_eftpos_v1",
"confidence": "1.00"
},
"level3": {
"counterpartyId": "unknown",
"counterpartyABN": "unknown",
"counterpartyName": "unknown",
"classificationModelId": "level3_originator_v1",
"confidence": "0.00"
}
},
"enrichmentSource": {
"value": "Cypher"
},
"transactionId": "262b22a7-e9ea-4093-8f46-ce33b9101ca2",
"customerId": "524ba9bc-06e7-417e-bd54-b99785f5194a",
"clientId": "a0ced7e1-da3a-40ea-a18f-4c829f816c6a",
"accountId": "7a2c4e1b-39a5-41d2-98f3-d1e8c6b5a4f2",
"jobId": "34e1bbd4-36be-4d95-9351-a047eed5bf97",
"sourceType": "Extraction"
}
],
"totalCount": 1,
"currentPage": null,
"pageSize": 20,
"totalPages": 1
},
"message": null
}

What's Next

With enriched transactions available, you can now request insights for your customer:

  • Aggregations — Summarise cashflow and financial behaviour patterns
  • Completeness — Assess data coverage and reliability for the assessment
  • Risk Score — Get a risk signal for credit decisioning