Skip to main content

BrightMatch Flow (2.0.0)

BrightMatch Flow defines the comprehensive data schema for the BrightMatch lending platform output. This schema encompasses both the member's financial analysis data (derived from open banking) and the loan application details submitted by the borrower.

As a lending partner, you'll receive this structured data as a JSON payload via POST request to your designated endpoint whenever a borrower completes an application through the BrightMatch platform. You can also retrieve application data programmatically using the Flow API.

Endpoints

BrightMatch Flow API endpoints including authentication and application retrieval

Obtain access token using OAuth2 Client Credentials flow

Use this endpoint to authenticate with BrightMatch and obtain an access token required for calling the Flow API endpoints. This implements the OAuth2 Client Credentials grant type.

Request Body schema: application/x-www-form-urlencoded
required
grant_type
required
string
Value: "client_credentials"

Must be 'client_credentials' for this flow

client_id
required
string

Your BrightMatch client identifier

client_secret
required
string

Your BrightMatch client secret

Responses

Response samples

Content type
application/json
{
  • "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  • "token_type": "Bearer",
  • "expires_in": 3600,
  • "scope": "flow/application:read"
}

Retrieve a loan application by ID

Returns the full Flow output for a given loan application, including member financial analysis data and application details.

Authorizations:
bearerAuth
path Parameters
applicationId
required
string
Example: 550e8400-e29b-41d4-a716-446655440000

Unique identifier for the loan application

Responses

Response samples

Content type
application/json
{
  • "member": {
    },
  • "application": {
    }
}

Models

Data models and schemas for BrightMatch Flow output

Schema

TokenRequest

grant_type
required
string
Value: "client_credentials"

Must be 'client_credentials' for this flow

client_id
required
string

Your BrightMatch client identifier

client_secret
required
string

Your BrightMatch client secret

{
  • "grant_type": "client_credentials",
  • "client_id": "your_client_id",
  • "client_secret": "your_client_secret"
}

TokenResponse

access_token
string

The access token for API requests

token_type
string

Token type, typically 'Bearer'

expires_in
integer

Token lifetime in seconds

scope
string

Granted scopes for the token

{
  • "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  • "token_type": "Bearer",
  • "expires_in": 3600,
  • "scope": "flow/application:read"
}

FlowOutput

required
object (MemberData)
required
object (ApplicationDetails)
{
  • "member": {
    },
  • "application": {
    }
}

MemberData

memberId
required
string

Unique member identifier in WeMoney systems

required
object (Profile)
required
object (Serviceability)
required
object (RiskAnalysis)
analysisAsOfDate
required
string <date-time>

The date the analysis was performed

analysisPeriod
required
string

The analysis lookback period

required
Array of objects (Stream)

All transaction streams identified across accounts

required
Array of objects (Account)
required
Array of objects (Transaction)

All transactions across accounts within the analysis period

required
object (NetCapacityComponents)
object or object

Member identity verification. Either a drivers licence or passport is required.

{
  • "memberId": "user_abc123def456",
  • "profile": {
    },
  • "serviceability": {
    },
  • "riskAnalysis": {
    },
  • "analysisAsOfDate": "2026-03-01T00:00:00Z",
  • "analysisPeriod": "90d",
  • "streams": [
    ],
  • "accounts": [
    ],
  • "transactions": [
    ],
  • "netCapacityComponents": {
    },
  • "identity": {
    }
}

Profile

name
required
string
age
required
integer
dateOfBirth
required
string <date>
memberSince
required
string <date-time>
maritalStatus
required
string
Enum: "Single" "Married" "Defacto" "Divorced" "Separated" "Widowed"
numberOfDependents
required
integer >= 0
residenceType
required
string
Enum: "Owner with mortgage" "Owner without mortgage" "Renting with investment property" "Renting" "Boarding" "Living with parents" "Employer Supplied"
state
required
string
postcode
required
string
annualPreTaxIncome
required
number
monthlyPostTaxIncome
required
number
incomeSource
required
string
Enum: "detected" "declared"
monthlyPostTaxPartnerIncome
required
number
required
object (OnboardingObjectives)
required
object (EmploymentInfo)
{
  • "name": "Sarah Thompson",
  • "age": 32,
  • "dateOfBirth": "1993-07-12",
  • "memberSince": "2022-06-15T00:00:00Z",
  • "maritalStatus": "Single",
  • "numberOfDependents": 0,
  • "residenceType": "Owner with mortgage",
  • "state": "NSW",
  • "postcode": "2060",
  • "annualPreTaxIncome": 95000,
  • "monthlyPostTaxIncome": 5833.33,
  • "incomeSource": "detected",
  • "monthlyPostTaxPartnerIncome": 0,
  • "onboardingObjectives": {
    },
  • "employmentInfo": {
    }
}

OnboardingObjectives

goals
Array of strings
assets
Array of strings
attribution
Array of strings
{
  • "goals": [
    ],
  • "assets": [
    ],
  • "attribution": [
    ]
}

EmploymentInfo

workField
string
workSchedule
string
primaryIncome
number
secondaryIncome
number
{
  • "workField": "Information Technology",
  • "workSchedule": "Full Time",
  • "primaryIncome": 105000,
  • "secondaryIncome": 5000
}

Serviceability

required
object (DetectedServiceability)
required
object (DeclaredServiceability)
required
object (HemBenchmark)
required
object (HpiBenchmark)
required
object (HousingFloor)
required
object (GuardrailResults)
required
object (Highlights)

Indicates which data sources were used for serviceability calculations

required
object (RepaymentCapacity)
{
  • "detected": {
    },
  • "declared": {
    },
  • "hemBenchmark": {
    },
  • "hpiBenchmark": {
    },
  • "housingFloor": {
    },
  • "guardrailResults": {
    },
  • "highlights": {
    },
  • "repaymentCapacity": {
    }
}

DetectedServiceability

object
object
{
  • "incomeBreakdown": {
    },
  • "expenseBreakdown": {
    }
}

DeclaredServiceability

monthlyLivingExpenses
number
monthlyHousingExpenses
number
monthlyObligationPayments
number
monthlyLoanRepayments
number
monthlyCreditCardPayments
number
monthlyLoansForConsolidation
number
monthlyLoansNotForConsolidation
number
monthlyTotalExpenses
number
monthlyPostTaxEmploymentIncome
number
monthlyPostTaxOtherIncome
number
monthlyPostTaxTotalIncome
number
{
  • "monthlyLivingExpenses": 1800,
  • "monthlyHousingExpenses": 1500,
  • "monthlyObligationPayments": 0,
  • "monthlyLoanRepayments": 0,
  • "monthlyCreditCardPayments": 0,
  • "monthlyLoansForConsolidation": 0,
  • "monthlyLoansNotForConsolidation": 0,
  • "monthlyTotalExpenses": 3300,
  • "monthlyPostTaxEmploymentIncome": 5900,
  • "monthlyPostTaxOtherIncome": 0,
  • "monthlyPostTaxTotalIncome": 5900
}

HemBenchmark

monthlyBenchmark
number
object
{
  • "monthlyBenchmark": 2850,
  • "inputs": {
    }
}

HpiBenchmark

livingMonthly
number
housingMonthly
number
dependentsExceeded
boolean
object
{
  • "livingMonthly": 1850,
  • "housingMonthly": 920,
  • "dependentsExceeded": false,
  • "inputs": {
    }
}

HousingFloor

monthlyFloor
number
object
{
  • "monthlyFloor": 1200,
  • "inputs": {
    }
}

GuardrailResults

object (GuardrailResult)
object (GuardrailResult)
object (GuardrailResult)
object (GuardrailResult)
{
  • "income": {
    },
  • "livingExpenses": {
    },
  • "housingExpenses": {
    },
  • "loanRepayments": {
    }
}

GuardrailResult

passed
boolean
{
  • "passed": true
}

Highlights

detectedIncome
boolean
detectedLiving
boolean
detectedHousing
boolean
detectedLoans
boolean
declaredIncome
boolean
declaredLiving
boolean
declaredHousing
boolean
declaredLoans
boolean
hemBenchmark
boolean
housingFloor
boolean
{
  • "detectedIncome": true,
  • "detectedLiving": true,
  • "detectedHousing": false,
  • "detectedLoans": true,
  • "declaredIncome": false,
  • "declaredLiving": false,
  • "declaredHousing": false,
  • "declaredLoans": false,
  • "hemBenchmark": false,
  • "housingFloor": true
}

RepaymentCapacity

monthlyIncome
number
monthlyExpenses
number
monthlyAvailableSurplus
number
{
  • "monthlyIncome": 5833.33,
  • "monthlyExpenses": 4350.5,
  • "monthlyAvailableSurplus": 1482.83
}

RiskAnalysis

required
object (RiskMetric)
required
object (RiskMetric)
required
object (RiskMetric)
required
Array of objects (Stream)

Transaction streams flagged as risk indicators

{
  • "gambling": {
    },
  • "atmWithdrawals": {
    },
  • "currentSaccLoans": {
    },
  • "streams": [
    ]
}

RiskMetric

totalCount
integer
monthlyAmount
number
monthlyPercentageOfTotalDebits
number
{
  • "totalCount": 3,
  • "monthlyAmount": 450,
  • "monthlyPercentageOfTotalDebits": 1.85
}

Stream

id
required
string <uuid>
required
Array of objects (Transaction)
groupDescription
required
string

Normalized description used to group transactions

direction
required
string
Enum: "credit" "debit"
categoryName
required
string
categoryCode
required
string
categoryConfidence
required
number [ 0 .. 1 ]
categoryIncomeType
required
string
categorySource
required
string
Enum: "rules" "txformer" "llm_agree" "llm_disagree" "llm_transfer" "merchant" "internal_transfers_heuristic"
hemCategory
string
Enum: "hem_essential" "hem_discretionary_basic" "non_hem_obligation" "excluded_non_basic"

HEM classification. Present on expense-related streams.

cadence
required
string
Enum: "Irregular" "Weekly" "Fortnightly" "Monthly"
occurrences
required
integer >= 1
minimum
required
number
maximum
required
number
standardDeviation
required
number
average
required
number
sum
required
number
median
required
number
status
required
string
Enum: "active" "inactive"
calculationComponent
required
string
Enum: "primary_income" "other_income" "living_expenses" "loans" "excluded" ""

Indicates how this stream contributes to serviceability calculations

object (Merchant)
{
  • "id": "f2ba4ce9-fe2b-4606-bef8-55e4348e04da",
  • "transactions": [
    ],
  • "groupDescription": "transfer from cba netbank salary",
  • "direction": "credit",
  • "categoryName": "Salary & Wages",
  • "categoryCode": "income.employment.salary_wages",
  • "categoryConfidence": 1,
  • "categoryIncomeType": "",
  • "categorySource": "rules",
  • "hemCategory": "hem_essential",
  • "cadence": "Fortnightly",
  • "occurrences": 7,
  • "minimum": 2950,
  • "maximum": 2950,
  • "standardDeviation": 0,
  • "average": 2950,
  • "sum": 20650,
  • "median": 2950,
  • "status": "active",
  • "calculationComponent": "primary_income",
}

Transaction

id
required
string
date
required
string <date-time>
description
required
string
amount
required
number
direction
required
string
Enum: "credit" "debit"
accountId
required
string
accountName
required
string
accountType
required
string
Enum: "Bank Accounts" "Credit Cards" "Loans"
accountSubType
required
string
Enum: "Transaction Accounts" "Credit Cards" "Mortgage"
type
required
string
Enum: "payment" "transferIncoming" "transferOutgoing" "interestCharged" "fee" "other"
category
required
string

Provider-assigned transaction category

brightMatchCategory
required
string

BrightMatch-assigned category name

brightMatchCategoryCode
required
string

BrightMatch-assigned category code

hemCategory
string
Enum: "hem_essential" "hem_discretionary_basic" "non_hem_obligation" "excluded_non_basic"

HEM classification. Present on expense-related transactions.

{
  • "id": "501837264",
  • "date": "2026-01-15T09:22:47Z",
  • "description": "Direct Credit ANZ Internet, Salary",
  • "amount": 2950,
  • "direction": "credit",
  • "accountId": "24801056",
  • "accountName": "Everyday Transaction",
  • "accountType": "Bank Accounts",
  • "accountSubType": "Transaction Accounts",
  • "type": "payment",
  • "category": "Salary & Regular Income",
  • "brightMatchCategory": "Salary & Wages",
  • "brightMatchCategoryCode": "income.employment.salary_wages",
  • "hemCategory": "hem_essential"
}

Merchant

id
integer
name
string
websiteUrl
string <uri>
object (MerchantAssets)

Account

id
required
string
number
required
string

Last digits of the account number

orgName
required
string
type
required
string
Enum: "Bank Accounts" "Credit Cards" "Loans"
subType
required
string
Enum: "Transaction Accounts" "Credit Cards" "Mortgage"
name
required
string
status
required
string
Enum: "Open" "Closed"
classification
required
string
Enum: "asset" "liability"
numberOfTransactions
integer

Number of transactions in the analysis period. Present when the account has transactions.

transactionPeriodStart
string <date>

Start date of transaction data. Present when the account has transactions.

transactionPeriodEnd
string <date>

End date of transaction data. Present when the account has transactions.

interestRate
required
number
balance
required
number
isMainAccount
required
boolean
required
Array of objects (BalanceHistoryEntry)
daysNegative90d
required
integer

Number of days the account balance was negative over 90 days

lowestBalance90d
required
number

Lowest balance in the last 90 days

isOb
required
boolean

Whether this account is sourced via Open Banking

{
  • "id": "24801056",
  • "number": "4821",
  • "orgName": "ANZ",
  • "type": "Bank Accounts",
  • "subType": "Transaction Accounts",
  • "name": "Everyday Transaction",
  • "status": "Open",
  • "classification": "asset",
  • "numberOfTransactions": 156,
  • "transactionPeriodStart": "2025-12-01",
  • "transactionPeriodEnd": "2026-02-28",
  • "interestRate": 0,
  • "balance": 12450.3,
  • "isMainAccount": true,
  • "balanceHistory": [
    ],
  • "daysNegative90d": 0,
  • "lowestBalance90d": 4215.6,
  • "isOb": true
}

BalanceHistoryEntry

date
string <date>
balance
number
{
  • "date": "2026-03-01",
  • "balance": 12450.3
}

NetCapacityComponents

primaryIncome
number
otherIncome
number
livingExpenses
number
housing
number
loans
number
netCapacity
number
{
  • "primaryIncome": 5830,
  • "otherIncome": 4,
  • "livingExpenses": 2150.5,
  • "housing": 1200,
  • "loans": 950,
  • "netCapacity": 1482.83
}

ApplicationDetails

referenceId
string

Reference ID returned by the external lender system when the application was submitted

required
Array of objects (Applicant)
required
Array of objects (Loan)
required
Array of objects (Identity)
required
Array of objects (Employment)
required
object (Residence)
required
Array of objects (Expense)
{
  • "referenceId": "ref_9a8b7c6d5e4f",
  • "applicants": [
    ],
  • "loans": [
    ],
  • "identities": [
    ],
  • "currentEmployment": [
    ],
  • "currentResidence": {
    },
  • "expenses": [
    ]
}

Applicant

firstName
required
string
middleName
string
lastName
required
string
dateOfBirth
required
string <date>
gender
required
string
Enum: "Male" "Female" "Other"
email
required
string <email>
phoneNumber
required
string
maritalStatus
required
string
Enum: "Single" "Married" "Defacto" "Divorced" "Separated" "Widowed"
numberOfDependents
required
integer >= 0
australianPermanentResident
required
boolean
{
  • "firstName": "Sarah",
  • "middleName": "Jane",
  • "lastName": "Thompson",
  • "dateOfBirth": "1985-03-15",
  • "gender": "Female",
  • "email": "sarah.thompson@gmail.com",
  • "phoneNumber": "0412345678",
  • "maritalStatus": "Married",
  • "numberOfDependents": 2,
  • "australianPermanentResident": true
}

Loan

amount
required
string
termInMonths
required
integer
Enum: 12 24 36 48 60 72 84
paymentFrequency
required
string
Enum: "Weekly" "Fortnightly" "Monthly"
purpose
required
string
Enum: "Debt Consolidation" "Boat / Jet Skis" "Car Loan" "Caravan" "Educational Expenses" "Funeral Expenses" "Holiday / Travel" "Home Furnishings" "Home Improvements" "Insurance" "Investments" "Legal Costs" "Medical / Dental Expenses" "Motorbike" "Other" "Pay Off Credit Card" "Pay Off Loan" "Second Property" "Tax Debt" "Tiny Home" "Wedding Expenses" "Sporting Equipment" "Car Repairs" "Moving Costs" "Rental Bond" "Pay Bills" "Solar Battery" "Professional Service Fees" "Business" "Mortgage Cost Funding"
purposeOtherReason
string

Required if purpose is 'Other'

{
  • "amount": "25000",
  • "termInMonths": 60,
  • "paymentFrequency": "Monthly",
  • "purpose": "Debt Consolidation",
  • "purposeOtherReason": "Consolidating multiple high-interest debts"
}

Identity

type
required
string
Enum: "passport" "driversLicense"
object (DriversLicense)
object (Passport)
{
  • "type": "passport",
  • "driversLicense": {
    },
  • "passport": {
    }
}

DriversLicense

state
string
licenseNumber
string
cardNumber
string
expiryDate
string <date>
{
  • "state": "NSW",
  • "licenseNumber": "D123456789",
  • "cardNumber": "1234567890",
  • "expiryDate": "2027-08-15"
}

Passport

passportNumber
string
country
string
{
  • "passportNumber": "N1234567",
  • "country": "AU"
}

Employment

type
required
string
Enum: "Full Time" "Part Time" "Self Employed" "Casual" "Contractor" "Unemployed" "Retired" "Home Duties" "Seasonal"
employerName
required
string
startDate
required
string

Start date of employment in YYYY-MM format

amount
required
string

Income amount

isPreTax
required
boolean
frequency
required
string
Enum: "Weekly" "Fortnightly" "Monthly" "Quarterly" "Annually"
{
  • "type": "Full Time",
  • "employerName": "Westpac Banking Corporation",
  • "startDate": "2020-02",
  • "amount": "85000",
  • "isPreTax": true,
  • "frequency": "Annually"
}

Residence

type
required
string
Enum: "Owner with mortgage" "Owner without mortgage" "Renting with investment property" "Renting" "Boarding" "Living with parents" "Employer Supplied"
startDate
required
string

Start date of residence in YYYY-MM format

unitNumber
string
streetNumber
required
string
streetName
required
string
streetType
required
string
suburb
required
string
state
required
string
postCode
required
string
countryCode
required
string
Value: "AU"
{
  • "type": "Owner with mortgage",
  • "startDate": "2020-02",
  • "unitNumber": "12A",
  • "streetNumber": "45",
  • "streetName": "Collins",
  • "streetType": "Street",
  • "suburb": "Fremantle",
  • "state": "NSW",
  • "postCode": "6160",
  • "countryCode": "AU"
}

Expense

type
required
string
Enum: "Rent" "Mortgage" "Living Expenses"
amount
required
string
frequency
required
string
Enum: "Weekly" "Fortnightly" "Monthly" "Quarterly" "Annually"
{
  • "type": "Mortgage",
  • "amount": "2800",
  • "frequency": "Monthly"
}