Wallet by BudgetBakers data API
Wallet: Budget Expense Tracker is BudgetBakers' Android personal-finance app (the droid4you package that became the Wallet brand). Households and freelancers log cash and card spending, split envelopes and category budgets, connect checking and credit accounts through Salt Edge, Yodlee and FastLink, follow stocks, ETFs and crypto, import bank CSV/PDF statements, and let Pay & Track turn Google Pay notifications into booked records. Version 9.3.12 ships the prodWallet flavor. It sits with Spendee, Money Manager and YNAB for people who want one ledger across cash, bank feeds and investments rather than a bank's own mobile app.
Salt Edge and Yodlee logins surface account rows with balance and currencyCode (Checking, CreditCard, Savings, Ewallet), then a refresh call pulls the remote transaction stream into the same owner/login. Investment screens resolve symbol, exchangeCode and dated value series for stocks and crypto; multi-currency ledgers convert through from/to rate.
Google Pay notification rows go out as payee plus mobilePaymentService and come back with merchantId, categoryId and envelopeId. CSV/PDF imports expose parsed rawValue tokens before activation. Household dashboards, portfolio widgets and rent bots consume those objects; openData Studio turns them into callable open data.
Screenshots
API surface
The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.
SSO authenticate
POST
/v1/identity/sso-loginopendataExchanges an SSO token for a Wallet session JWT so bank-sync, prices and enrichment calls can attach Authorization: Bearer.
Auth: Unauthenticated; email/Google/Facebook SSO body. Later calls send Authorization: Bearer plus X-Client-ID, X-Client-Version-Name, X-Client-Source-Platform.
- ssoToken
- ssoKey
- identificationType
- identification
- token
- tokenId
- loginExpiresAt
- tokenExpiresAt
POST /v1/identity/sso-login HTTP/1.1 Content-Type: application/json X-Client-Version-Name: 9.3.12 X-Client-Source-Platform: ANDROID { "ssoToken": "<sso-provider-token>", "ssoKey": "google", "identificationType": "EMAIL", "identification": "[email protected]" }{ "token": "<session-jwt>", "tokenId": "tok_8f21c0ab", "loginExpiresAt": "2026-11-19T12:00:00Z", "tokenExpiresAt": "2026-10-21T12:00:00Z" }Bank-sync countries
GET
/v1/bank-links/countriesopenbankingLists ISO country codes that have at least one Salt Edge, Yodlee or BudgetBakers bank-sync provider so the connect-bank picker can filter.
Auth: Bearer token from POST /v1/identity/sso-login; X-Client-ID and X-Client-Version-Name.
- countries
- code
GET /v1/bank-links/countries HTTP/1.1 Authorization: Bearer <session-jwt> X-Client-ID: user_ada X-Client-Version-Name: 9.3.12{ "countries": [ {"code": "DE"}, {"code": "FR"}, {"code": "ES"}, {"code": "US"} ] }Frequent bank providers
GET
/v1/bank-links/countries/{countryCode}/popular-institutionsopenbankingReturns the most-used bank and e-wallet providers for a country, including Salt Edge vs Yodlee source, history window and whether Premium is required to connect.
Auth: Bearer token from POST /v1/identity/sso-login; X-Client-ID and X-Client-Version-Name.
- providers
- name
- countryCode
- integrationSource
- logoUrl
- code
- maxTransactionHistoryInDays
- needPremiumToConnect
- isAutomatic
GET /v1/bank-links/countries/DE/popular-institutions HTTP/1.1 Authorization: Bearer <session-jwt> X-Client-Version-Name: 9.3.12{ "providers": [ { "id": "prv_sparkasse", "name": "Sparkasse", "countryCode": "DE", "integrationSource": "SALTEDGE", "logoUrl": "https://cdn.example.com/bank-logos/sparkasse.png", "code": "sparkasse_de", "maxTransactionHistoryInDays": 90, "needPremiumToConnect": true, "isAutomatic": true } ] }Linked bank accounts
GET
/v1/owners/{ownerId}/bank-links/{source}/logins/{loginId}/accountsopenbankingReads remote checking, credit-card, savings and e-wallet accounts for a bank login, with live balance and the Wallet ledger id they map to.
Auth: Bearer token from POST /v1/identity/sso-login; X-Client-ID identifies the owner.
- accounts
- id
- name
- type
- balance
- currencyCode
- connectedAppAccountId
GET /v1/owners/user_ada/bank-links/SALTEDGE/logins/login_77c1/accounts HTTP/1.1 Authorization: Bearer <session-jwt> X-Client-ID: user_ada{ "accounts": [ { "id": "acc_remote_checking", "name": "Girokonto", "type": "Checking", "balance": 2481.55, "currencyCode": "EUR", "connectedAppAccountId": "acc_wallet_giro" } ] }Connect bank accounts
POST
/v1/owners/{ownerId}/bank-links/{source}/logins/{loginId}/accounts/linkopenbankingMaps a remote bank account onto a Wallet ledger account (and optional cash counterpart) after the user picks which feeds to keep.
Auth: Bearer token from POST /v1/identity/sso-login; X-Client-ID identifies the owner.
- accounts
- remoteAccountId
- appAccountId
- cashAccountId
POST /v1/owners/user_ada/bank-links/SALTEDGE/logins/login_77c1/accounts/link HTTP/1.1 Authorization: Bearer <session-jwt> Content-Type: application/json { "accounts": [ { "remoteAccountId": "acc_remote_checking", "appAccountId": "acc_wallet_giro", "cashAccountId": "acc_wallet_cash" } ] }{ "accounts": [ { "remoteAccountId": "acc_remote_checking", "appAccountId": "acc_wallet_giro", "cashAccountId": "acc_wallet_cash" } ] }Refresh bank transactions
POST
/v1/owners/{ownerId}/bank-links/{source}/logins/{loginId}/syncopenbankingTriggers a Salt Edge / Yodlee pull so new remote transactions land in the Wallet record stream for that bank login.
Auth: Bearer token from POST /v1/identity/sso-login; X-Client-ID identifies the owner.
- loginId
- status
- integrationSource
POST /v1/owners/user_ada/bank-links/SALTEDGE/logins/login_77c1/sync HTTP/1.1 Authorization: Bearer <session-jwt> X-Client-ID: user_ada{ "loginId": "login_77c1", "status": "OK", "integrationSource": "SALTEDGE" }Financial instruments catalog
GET
/v1/markets/instrumentsopenfinanceSearches listed stocks, ETFs and related instruments so the investments screen can attach a holding to an exchange symbol and quote currency.
Auth: Bearer token from POST /v1/identity/sso-login.
- financialInstruments
- symbol
- name
- currencyCode
- type
- exchange
- exchangeCode
- country
GET /v1/markets/instruments?type=STOCK&query=AAPL&limit=20 HTTP/1.1 Authorization: Bearer <session-jwt>{ "financialInstruments": [ { "symbol": "AAPL", "name": "Apple Inc.", "currencyCode": "USD", "type": "STOCK", "exchange": "NASDAQ", "exchangeCode": "XNAS", "country": "US" } ] }Stock price history
GET
/v1/markets/equities/{symbol}/historyopendataReturns dated close prices for a stock or ETF so investment accounts can mark holdings to market.
Auth: Bearer token from POST /v1/identity/sso-login.
- metadata
- history
- temporaryFrom
- validFor
- date
- value
GET /v1/markets/equities/AAPL/history?from=2025-10-01&to=2026-10-01 HTTP/1.1 Authorization: Bearer <session-jwt>{ "metadata": { "temporaryFrom": "2024-01-01", "validFor": 86400000 }, "history": [ {"date": "2026-10-01", "value": 227.41}, {"date": "2026-10-02", "value": 229.08} ] }Crypto price history
GET
/v1/markets/crypto/{cryptoId}/historyopendataReturns dated crypto quotes used by INVESTMENT_CRYPTO accounts to value Bitcoin and altcoin lots.
Auth: Bearer token from POST /v1/identity/sso-login.
- metadata
- history
- date
- value
- temporaryFrom
- validFor
GET /v1/markets/crypto/BTC/history?from=2026-09-01&to=2026-10-01 HTTP/1.1 Authorization: Bearer <session-jwt>{ "metadata": { "temporaryFrom": "2020-01-01", "validFor": 3600000 }, "history": [ {"date": "2026-10-01", "value": 64210.5}, {"date": "2026-10-02", "value": 65102.0} ] }FX pair rate
GET
/v1/rates/{from}/{to}opendataLooks up a mid-market rate so multi-currency ledgers can convert a record amount into the user's referential currency.
Auth: Bearer token from POST /v1/identity/sso-login.
- from
- to
- rate
GET /v1/rates/EUR/USD HTTP/1.1 Authorization: Bearer <session-jwt>{ "from": "EUR", "to": "USD", "rate": 1.0852 }Pay & Track enrichment
POST
/v1/transactions/annotateopendataClassifies Google Pay (and other Pay & Track) notification rows into a category, merchant, envelope and labels so the ledger does not stay as a raw payee string.
Auth: Bearer token from POST /v1/identity/sso-login.
- userId
- accountId
- mobilePaymentService
- records
- amount
- payee
- note
- categoryId
- merchantId
- envelopeId
- envelopeAssignSource
- labelIds
POST /v1/transactions/annotate HTTP/1.1 Authorization: Bearer <session-jwt> Content-Type: application/json { "userId": "user_ada", "accountId": "acc_wallet_giro", "mobilePaymentService": "GooglePay", "records": [ { "id": "rec_gpay_1001", "amount": -12.4, "payee": "STARBUCKS 1234 BERLIN", "note": "Google Pay" } ] }[ { "id": "rec_gpay_1001", "categoryId": "cat_coffee", "merchantId": "mrc_starbucks", "envelopeId": "env_food", "envelopeAssignSource": "MERCHANT", "labelIds": ["lbl_dining"] } ]Statement import records
GET
/v1/imports/{itemId}/rowsopenfinanceReturns parsed columns from an uploaded CSV/PDF statement so the mapping UI can bind Amount, Payee, RecordDate and CurrencyCode before activation.
Auth: Bearer token from POST /v1/identity/sso-login.
- itemId
- accountId
- fileName
- transactionId
- tokens
- colName
- rawValue
- type
- colIndex
GET /v1/imports/imp_44c0/rows HTTP/1.1 Authorization: Bearer <session-jwt>{ "itemId": "imp_44c0", "accountId": "acc_wallet_giro", "fileName": "sparkasse-sep-2026.csv", "transactionId": "parse_9aa1", "tokens": [ {"colName": "amount", "rawValue": "-12,40", "type": "Amount", "colIndex": 3} ] }Bill-pay providers
GET
/v1/bill-pay/providersopenbankingLists Zaplaceno bill-pay banks with routing code and max amount so the user can pick a funding account for a domestic transfer.
Auth: Bearer token from POST /v1/identity/sso-login.
- providers
- source
- providerCode
- providerName
- logoUrl
- bankCode
- maxAmountLimit
GET /v1/bill-pay/providers HTTP/1.1 Authorization: Bearer <session-jwt>{ "providers": [ { "source": "SALTEDGE", "providerCode": "csas", "providerName": "Česká spořitelna", "logoUrl": "https://cdn.example.com/bank-logos/csas.png", "bankCode": "0800", "maxAmountLimit": 50000.0 } ] }Bill-pay checkout
POST
/v1/bill-pay/checkout-sessionsopenbankingStarts a Zaplaceno domestic payment and returns a bank-hosted redirect plus paymentId for later status polling.
Auth: Bearer token from POST /v1/identity/sso-login.
- amount
- currencyCode
- providerCode
- fromBankAccountNumber
- fromBankCode
- toBankAccountNumber
- toBankCode
- iban
- variableSymbol
- note
- paymentId
- redirectUrl
POST /v1/bill-pay/checkout-sessions HTTP/1.1 Authorization: Bearer <session-jwt> Content-Type: application/json { "amount": 1299.0, "currencyCode": "CZK", "providerCode": "csas", "fromBankAccountNumber": "1234567890", "fromBankCode": "0800", "toBankAccountNumber": "9988776655", "toBankCode": "0100", "iban": "CZ6508000000192000145399", "variableSymbol": 20261020, "note": "Rent October" }{ "paymentId": "pay_zap_3310", "redirectUrl": "https://bank-redirect.example.com/checkout/pay_zap_3310" }
Data categories
- bank accounts
- balances
- transactions
- investments
- fx rates
- merchants
- payments
Where teams use this data
Open-banking ledger recon
Nightly jobs pull linked checking and credit accounts (balance, currencyCode, type) then trigger a transaction sync so an ERP or household dashboard matches Wallet's Salt Edge / Yodlee feed without scraping the UI.
Mark-to-market investments
A portfolio widget searches financialInstruments for symbol/exchangeCode, then overlays stock and crypto price-history value series onto Wallet investment accounts.
Google Pay merchant tagging
Pay & Track rows (payee, amount, mobilePaymentService=GooglePay) go through the annotation call to obtain merchantId, categoryId and envelopeId for spend analytics that stay aligned with the user's envelopes.
Domestic bill-pay handoff
A rent or invoice bot lists Zaplaceno bill-pay providers, then posts amount, iban and variableSymbol to the checkout call and stores paymentId until the bank returns OK.
Frequently asked questions
Does Wallet expose live bank balances or only on-device cash?
Live remote balances. After the session exchange, GET /v1/owners/{ownerId}/bank-links/{source}/logins/{loginId}/accounts returns balance and currencyCode for each Salt Edge or Yodlee account the user connected, and POST .../sync pulls new remote rows.
How does Wallet attach prices to stocks and crypto?
GET /v1/markets/instruments searches symbol, exchange and currencyCode. Dated closes come from /v1/markets/equities/{symbol}/history and /v1/markets/crypto/{cryptoId}/history as history[].date and history[].value.
What does Pay & Track send for a Google Pay notification?
POST /v1/transactions/annotate sends userId, accountId, mobilePaymentService (default GooglePay) and records with amount, payee and note. The reply maps each id to categoryId, merchantId, envelopeId and labelIds.
How is the session authenticated?
POST /v1/identity/sso-login exchanges ssoToken for token, tokenId, loginExpiresAt and tokenExpiresAt. Later calls send Authorization: Bearer plus X-Client-ID and X-Client-Version-Name.
Apps similar to Wallet: Budget Expense Tracker
- Spendee — Spendee is a money-management app that tracks cash, bank, e-wallet and crypto spending, sets budgets and shared wallets, and imports transactions by connecting accounts.
- YNAB — YNAB (You Need A Budget) is a zero-based envelope budgeting app for iOS, Android and the web that assigns every dollar a job and can import bank transactions through Plaid.
- Money Manager Expense & Budget — Money Manager Expense & Budget is a personal-finance app for tracking spending, setting category budgets, saving receipt photos and reviewing weekly and monthly totals on Android and iOS.
- Goodbudget — Goodbudget is a home-budget app for the web, Android and iPhone that uses virtual envelope budgeting to track spending, save for goals and pay down debt.
- PocketGuard — PocketGuard is a money-management app that links accounts to track spending, build personalized budgets and help pay bills, debt and savings goals.
- Toshl Finance — Toshl Finance is a personal-finance app that tracks expenses, organizes bills and budgets, and consolidates bank accounts across devices.
- Monarch — Monarch is an all-in-one money-management app for budgeting, tracking accounts and net worth, and collaborating with a partner.
- Mobills: Budget Planner — Mobills is a Brazilian personal-finance app that logs expenses and income, connects accounts and credit cards, and sets monthly budgets and financial goals.
Topics
- Wallet BudgetBakers API
- Salt Edge bank sync
- Yodlee account balance
- Google Pay merchant enrichment
- stock price history API
- Zaplaceno payment
Need this app's data API integrated?
We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.
- NDA + SOW on every engagement
- Delivery in 3–7 days
- Payment only after acceptance
- Work scoped to authorized use