Unofficial MoneyDashboard Neon API
Yesterday, I wrote up how to use the MoneyDashboard Classic API. Read that blog post first before reading this one.
MoneyDashboard have launched a new "Neon" service. The API is a bit more simple, but authentication is harder.
Here's a quick guide to the bits of the API that I found useful. I've lightly redacted some of the API responses for my privacy.
List of all supported institutions
MoneyDashboard only supports a limited number of OpenBanking Institutions. Here's a list:
https://neonapiprod.moneydashboard.com/v1/institutions
JSON{
"0": {
"id": "44306c61-9fb9-4221-b4d9-f91cd711f665",
"name": "AIB (NI)",
"active": 1,
"paymentsEnabled": false,
"logo": "https://media.moneydashboard.com/logos/providers/firsttrust.jpg",
"isAvailableFeatureFlagName": null,
"primaryColour": "#7F2B7B"
}
}
List of the User's Accounts
You can add multiple accounts to MoneyDashboard. Here's a list of everything you've added:
https://neonapiprod.moneydashboard.com/v1/accounts
JSON{
"0": {
"cognitoId": "1234",
"accountId": "4567",
"providerId": "7891",
"connectionsUserId": "8910",
"accountType": "CREDIT_CARD",
"accountNumber": null,
"sortCode": null,
"balance": "-123.45",
"accountName": "Platinum Cashback Credit Card",
"currency": "GBP",
"description": null,
"logo": "https://media.moneydashboard.com/logos/providers/amex.jpg",
"providerName": "American Express",
"primaryColour": "#016FD0",
"created": "2020-09-13T12:34:56.533+00:00",
"lastUpdateSuccess": null,
"lastUpdateAttempt": null,
"deactivated": null,
"alias": "Platinum Cashback Credit Card",
"lastRefreshStatus": 0,
"paymentsEnabled": false,
"isOffline": false,
"tokenCreatedDate": "2020-09-13T12:34:56.533+00:00",
"tokenRefreshDate": "2020-09-13T12:34:56.533+00:00",
"tokenExpiryDate": null
}
}
BABS - Balance After Bills
MoneyDashboard can predict what your balance is after bills:
https://neonapiprod.moneydashboard.com/v1/analytics/babs
JSON{
"babs": -1234.56,
"predictedBalance": -2345.67,
"unpaidSeries": 0,
"dailyFlexSpend": 50.99,
"daysRemaining": 19,
"daysElapsed": 0,
"predictedSpending": 123.45
}
Transactions
A full list of every transaction you've made - including tags:
https://neonapiprod.moneydashboard.com/v1/transactions/filter
JSON{
"6": {
"id": "ABCDEFG",
"created": "2020-10-03T00:00:00",
"accountId": "4567",
"customerId": "7891",
"isPredicted": false,
"providerTransactionId": null,
"amount": {
"amount": 168.35,
"currency": "GBP"
},
"sourceAmount": {
"amount": 168.35,
"currency": "GBP"
},
"status": "Booked",
"deactivated": null,
"type": "Debit",
"description": "MORRISONS BRADFORD",
"seriesId": null,
"savedDate": "2020-10-13T12:20:23.176183",
"merchant": "Morrisons Supermarket",
"transactionBatchId": "ABC123",
"excludeFromSpendCalculations": false,
"originalTransactionDate": "2020-10-03T00:00:00",
"originalTransactionDescription": "MORRISONS BRADFORD",
"ProprietaryProviderDetails": null,
"categorisation": [
{
"id": 324978238,
"certainty": 100,
"source": "CategorisationService",
"tag": "Supermarket",
"level": 2,
"created": "2020-10-13T12:20:33.678358"
},
{
"id": 324978239,
"certainty": 100,
"source": "CategorisationService",
"tag": "Groceries",
"level": 1,
"created": "2020-10-13T12:20:33.678356"
}
],
"bookedTransactionId": null,
"merchantLogo": "https://media.moneydashboard.com/logos/merchants/morrisons_supermarket.png"
}
}
Categories
Get your spending broken down by category. For example, how much do you spend on takeaways?
There are some weird JSON handling of floating point numbers in here. Beware!
https://neonapiprod.moneydashboard.com/v1/analytics/spend/category
JSON{
"1": {
"categoryName": "Eating Out",
"amount": 76.29666666666667,
"transactionCount": 8,
"transactions": [
{
"id": "ABCDEFG123793",
"created": "2020-07-22T00:00:00",
"accountId": "4567",
"customerId": "7891",
"isPredicted": false,
"providerTransactionId": null,
"amount": {
"amount": 22.47,
"currency": "GBP"
},
"sourceAmount": {
"amount": 22.47,
"currency": "GBP"
},
"status": "Booked",
"type": "Debit",
"description": "JUST EAT.CO.UK LTD LONDON",
"seriesId": null,
"merchant": "Just Eat",
"merchantLogo": "https://media.moneydashboard.com/logos/merchants/just_eat.png",
"deactivated": null,
"savedDate": "2020-10-13T12:20:23.176338",
"ProprietaryProviderDetails": null,
"categorisation": [
{
"id": 324978297,
"certainty": 100,
"source": "CategorisationService",
"tag": "Takeaway",
"level": 2,
"created": "2020-10-13T12:20:33.679618"
},
{
"id": 324978298,
"certainty": 100,
"source": "CategorisationService",
"tag": "Eating Out",
"level": 1,
"created": "2020-10-13T12:20:33.679617"
}
]
}
],
"cycleStartDate": "2020-06-01T00:00:00Z",
"cycleEndDate": "2020-08-31T00:00:00Z"
}
}
Authentication
OK, this is where it gets horrible and I get confused. MoneyDashboard uses Amazon Cognito. It does a complex authentication dance, passing along lots of different SRP_A
tokens until, eventually, it gives you an IdToken
. You can grab that by opening Developer Tools in your browsers. It will be a very long string.
You need to pass this as an x-auth
header in your request, like so:
curl 'https://neonapiprod.moneydashboard.com/v1/accounts'\
-H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:81.0) Gecko/20100101 Firefox/81.0'\
-H 'Accept: */*'\
-H 'Accept-Language: en-GB,en;q=0.5'\
--compressed -H\
'Referer: https://app.moneydashboard.com/'\
-H 'x-auth: aBcDeFgHiJkLmNoPqRsTuVwXyZ1234567890'\
-H 'Cache-Control: no-cache, no-store, must-revalidate'\
-H 'Pragma: no-cache'\
-H 'Expires: 0'\
-H 'Origin: https://app.moneydashboard.com'\
-H 'DNT: 1'\
-H 'Connection: keep-alive'\
-H 'TE: Trailers'
I don't know of any easy way to automated getting the token from your own username and password.
Good luck!