Mobills Budget Planner data API
Mobills: Budget Planner is 3APPS SOLUTIONS' Brazilian personal-finance app (package br.com.gerenciadorfinanceiro.controller, site mobills.com.br). Households keep checking, cash, poupança and investment contas, log despesas and receitas, move money between accounts, track credit-card faturas with closing and due days, set monthly budgets and tags, connect a Nubank card so invoices land in the same ledger, scan receipts, and keep the same book on web.mobills.com.br. Premium is a Google Play or Pagar.me subscription; Gympass members get an in-app partnership track. Google Play lists it as a free BRL listing at about 4.2 stars from roughly 293 thousand reviews. It sits with Organizze, GuiaBolso and Wallet for people who want one Brazilian household book rather than a bank's own app.
Checking and poupança rows carry saldo plus tipoConta (corrente, dinheiro, poupança, investimentos) and instituicaoBancariaId; despesas land with valor, dataDespesa and status, receitas with dataReceita, and transfers as deContaId / paraContaId legs. Nubank-linked cards expose limite, diaFechamento, diaPagamento and integration statusIntegracao, after hasCard / statusCard says a card is waiting.
A monthly snapshot folds those books into somaDespesas, somaReceitas, weekday valorGastoSeg…valorGastoDom and per-card valorFatura. Excel export filters on dataInicial, contas and tipoMovimentacoes; session rows list identifier, type and connectionDate. Household dashboards, card-ops bots and bookkeepers 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.
Firebase external auth
POST
/v1/session/exchangeopendataExchanges a Firebase / Google identity for auth_token, assinanteAndroid and diasExpiracao so ledger sync can attach a bearer token.
Auth: Unauthenticated sign-in call. Body carries the federated identity (id = provider uid, externalToken, provider, userName, password, nome, idioma, origemCadastro, conviteCodigo). Later calls send Authorization: Bearer <access_token> plus X-Client-Platform and X-Client-Version headers.
- id
- userName
- password
- nome
- provider
- externalId
- externalFoto
- externalToken
- origemCadastro
- idioma
- conviteCodigo
- auth_token
- expires_in
- dataCadastro
- assinanteAndroid
- diasExpiracao
- isNewUser
- migratedUser
POST /v1/session/exchange HTTP/1.1 Content-Type: application/json X-Client-Platform: android X-Client-Version: 5.0.5 { "id": "firebaseUid_ada", "userName": "[email protected]", "password": null, "nome": "Ada Lovelace", "provider": "google", "externalId": "116429104109", "externalFoto": "https://cdn.example.com/a/photo", "externalToken": "<provider_token>", "origemCadastro": 1, "idioma": "pt-BR", "conviteCodigo": null }{ "id": "usr_9f21c0ab", "auth_token": "<access_token>", "expires_in": 3600, "userName": "[email protected]", "nome": "Ada Lovelace", "dataCadastro": "2019-03-12T11:04:00", "assinanteAndroid": true, "diasExpiracao": 18, "isNewUser": false, "migratedUser": false }Profile info
GET
/v1/household/owner/profileopendataReads the signed-in profile wrapped as infoUser: email, nome, telefone, fotoPerfil, quantidadeMobills score and origemCadastro.
Auth: Bearer access token (Authorization: Bearer <access_token>) plus X-Client-Platform and X-Client-Version headers.
- infoUser
- usuarioId
- nome
- fotoPerfil
- telefone
- quantidadeMobills
- dataModificacao
- origemCadastro
GET /v1/household/owner/profile HTTP/1.1 Authorization: Bearer <access_token> X-Client-Platform: android X-Client-Version: 5.0.5 Accept: application/json{ "infoUser": { "usuarioId": "usr_9f21c0ab", "nome": "Ada Lovelace", "email": "[email protected]", "fotoPerfil": "https://cdn.example.com/ada.jpg", "telefone": "+55 11 99999-0000", "quantidadeMobills": 420, "dataModificacao": "2026-10-18T14:22:00", "origemCadastro": 1 } }Synchronize accounts
POST
/v1/ledger/accounts/syncopenbankingPushes and pulls the account book (tipoConta 1 corrente / 2 dinheiro / 3 poupança / 4 investimentos / 5 outras) with saldo, telaInicial and bank-institution metadata.
Auth: Bearer access token (Authorization: Bearer <access_token>) plus X-Client-Platform and X-Client-Version headers.
- id
- uniqueId
- nome
- saldo
- cor
- tipoConta
- telaInicial
- ativo
- arquivado
- instituicaoBancariaId
- origemIntegracaoId
- statusIntegracao
- dataContaAutomatica
POST /v1/ledger/accounts/sync HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json X-Client-Platform: android X-Client-Version: 5.0.5 [ { "id": 4411, "uniqueId": "cap_nubank_corrente", "nome": "Nubank conta", "saldo": 1840.55, "cor": 16711935, "tipoConta": 1, "telaInicial": true, "ativo": true, "arquivado": false, "instituicaoBancariaId": "nubank", "origemIntegracaoId": 1, "statusIntegracao": 1, "dataContaAutomatica": "2026-10-01T00:00:00" } ][ { "id": 4411, "uniqueId": "cap_nubank_corrente", "nome": "Nubank conta", "saldo": 1840.55, "tipoConta": 1, "telaInicial": true, "ativo": true, "arquivado": false, "instituicaoBancariaId": "nubank", "origemIntegracaoId": 1, "statusIntegracao": 1 } ]Synchronize expenses
POST
/v1/ledger/expenses/syncopenfinanceSyncs cash and account despesas: descricao, valor, dataDespesa, status (0 efetuada / 1 pendente) and optional receipt anexo.
Auth: Bearer access token (Authorization: Bearer <access_token>).
- id
- uniqueId
- descricao
- valor
- dataDespesa
- status
- contaId
- tipoDespesaId
- subcategoriaId
- observacao
- anexo
- favorito
- ativo
- origemIntegracaoId
- despesaFixaId
- despesaCartaoId
POST /v1/ledger/expenses/sync HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json X-Client-Platform: android X-Client-Version: 5.0.5 [ { "id": 8821, "uniqueId": "exp_almoco_20261018", "descricao": "Almoço", "valor": "42.90", "dataDespesa": "2026-10-18T12:30:00", "status": 0, "contaId": "4411", "tipoDespesaId": 3, "subcategoriaId": 18, "observacao": "com a equipe", "anexo": "receipts/almoco.jpg", "favorito": true, "ativo": true, "origemIntegracaoId": 0 } ][ { "id": 8821, "uniqueId": "exp_almoco_20261018", "descricao": "Almoço", "valor": "42.90", "dataDespesa": "2026-10-18T12:30:00", "status": 0, "contaId": "4411", "tipoDespesaId": 3, "ativo": true } ]Synchronize incomes
POST
/v1/ledger/incomes/syncopenfinanceSyncs receitas with dataReceita, valor, status (0 efetuada / 1 pendente) and optional receitaFixaId for recurrences.
Auth: Bearer access token (Authorization: Bearer <access_token>).
- id
- uniqueId
- descricao
- valor
- dataReceita
- status
- contaId
- tipoReceitaId
- receitaFixaId
- observacao
- favorito
- ativo
- origemIntegracaoId
- subcategoriaId
POST /v1/ledger/incomes/sync HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json X-Client-Platform: android X-Client-Version: 5.0.5 [ { "id": 2204, "uniqueId": "inc_salario_202610", "descricao": "Salário", "valor": "8500.00", "dataReceita": "2026-10-05T09:00:00", "status": 0, "contaId": 4411, "tipoReceitaId": 1, "receitaFixaId": "12", "observacao": "CLT outubro", "favorito": true, "ativo": true, "origemIntegracaoId": 0 } ][ { "id": 2204, "uniqueId": "inc_salario_202610", "descricao": "Salário", "valor": "8500.00", "dataReceita": "2026-10-05T09:00:00", "status": 0, "contaId": 4411, "receitaFixaId": "12", "ativo": true } ]Synchronize transfers
POST
/v1/ledger/transfers/syncopenfinanceSyncs account-to-account transfers with deContaId / paraContaId legs, valor and optional transferenciaFixaId. The date key is spelled dataTransfencia on the wire.
Auth: Bearer access token (Authorization: Bearer <access_token>).
- id
- uniqueId
- dataTransfencia
- valor
- deContaId
- paraContaId
- observacao
- transferenciaFixaId
- ativo
POST /v1/ledger/transfers/sync HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json X-Client-Platform: android X-Client-Version: 5.0.5 [ { "id": 91, "uniqueId": "tr_poupanca_20261012", "dataTransfencia": "2026-10-12T10:00:00", "valor": "500.00", "deContaId": "4411", "paraContaId": "4412", "observacao": "reserva poupança", "transferenciaFixaId": 0, "ativo": true } ][ { "id": 91, "uniqueId": "tr_poupanca_20261012", "dataTransfencia": "2026-10-12T10:00:00", "valor": "500.00", "deContaId": "4411", "paraContaId": "4412", "ativo": true } ]Synchronize credit cards
POST
/v1/ledger/cards/syncopenbankingSyncs cards (bandeira 0 VISA / 1 MASTERCARD / 2 HIPERCARD / 3 AMEX / 8 ELO) with limite, diaFechamento and diaPagamento (due day).
Auth: Bearer access token (Authorization: Bearer <access_token>).
- id
- uniqueId
- nome
- limite
- bandeira
- diaFechamento
- diaPagamento
- contaId
- origemIntegracaoId
- statusIntegracao
- ativo
- arquivado
- dataCartaoAutomatico
POST /v1/ledger/cards/sync HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json X-Client-Platform: android X-Client-Version: 5.0.5 [ { "id": 12, "uniqueId": "card_nubank_roxinho", "nome": "Nubank Roxinho", "limite": "8000.00", "bandeira": "1", "diaFechamento": "8", "diaPagamento": "15", "contaId": 4411, "origemIntegracaoId": 1, "statusIntegracao": 1, "ativo": true, "arquivado": false } ][ { "id": 12, "uniqueId": "card_nubank_roxinho", "nome": "Nubank Roxinho", "limite": "8000.00", "bandeira": "1", "diaFechamento": "8", "diaPagamento": "15", "contaId": 4411, "statusIntegracao": 1, "ativo": true, "arquivado": false } ]Monthly analytics snapshot
POST
/v1/insights/monthly-snapshotsopenfinanceUploads a monthly household snapshot: somaDespesas vs somaReceitas, weekday spend, category totals and per-card valorFatura / valorLimite.
Auth: Bearer access token (Authorization: Bearer <access_token>).
- periodo
- pais
- estado
- cidade
- moeda
- situacao
- porcentagem
- quantReceitas
- somaReceitas
- quantDespesas
- somaDespesas
- somaDespesasFixas
- somaInvestimentos
- somaContaPoupanca
- tipoInvestimento
- diaMaiorGasto
- categorias.nome
- categorias.valorTotal
- cartoes.nome
- cartoes.valorFatura
- cartoes.valorLimite
- valorGastoSeg
- valorGastoDom
POST /v1/insights/monthly-snapshots HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json X-Client-Platform: android X-Client-Version: 5.0.5 { "periodo": "2026-10", "pais": "BR", "estado": "SP", "cidade": "São Paulo", "moeda": "BRL", "situacao": "positivo", "porcentagem": 22.5, "quantReceitas": 4, "somaReceitas": 9200.00, "quantDespesas": 38, "somaDespesas": 6120.40, "quantDespesasDividas": 2, "somaDespesasDividas": 800.00, "quantDespesasFixas": 6, "somaDespesasFixas": 2400.00, "quantInvestimentos": 1, "somaInvestimentos": 500.00, "tipoInvestimento": "renda_fixa", "somaContaPoupanca": 12000.00, "plataforma": "Android", "dispositivo": "Pixel 8", "diaMaiorGasto": 12, "categorias": [{"nome": "Alimentação", "tipo": 1, "valorTotal": 980.10}], "cartoes": [{"nome": "Nubank Roxinho", "bandeira": 1, "tipo": 0, "valorFatura": 1234.67, "valorLimite": 8000.00, "valorPago": 0}], "valorGastoSeg": 210.00, "valorGastoTer": 95.00, "valorGastoQua": 140.00, "valorGastoQui": 80.00, "valorGastoSex": 310.00, "valorGastoSab": 420.00, "valorGastoDom": 180.00, "porcGastoSeg": 0.14, "porcGastoTer": 0.06, "porcGastoQua": 0.09, "porcGastoQui": 0.05, "porcGastoSex": 0.21, "porcGastoSab": 0.29, "porcGastoDom": 0.16 }{}Start Nubank card integration
POST
/v1/card-links/startopenbankingStarts Nubank card linking: login, local cardId/accountId, cardName and category map mobillsCategoryId → integrationSourceCategoryId.
Auth: Bearer access token (Authorization: Bearer <access_token>).
- login
- cardName
- cardId
- accountId
- associateCategories
- mobillsCategoryId
- integrationSourceCategoryId
POST /v1/card-links/start HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json X-Client-Platform: android X-Client-Version: 5.0.5 { "login": "[email protected]", "cardName": "Nubank Roxinho", "cardId": 12, "accountId": 1, "associateCategories": [ {"mobillsCategoryId": 3, "integrationSourceCategoryId": 88} ] }{}Nubank non-integrated card probe
GET
/v1/card-links/pendingopenbankingAsks whether a Nubank card is waiting to be linked (hasCard) and returns statusCard.hasCredentials / login / status.
Auth: Bearer access token (Authorization: Bearer <access_token>).
- hasCard
- statusCard
- hasCredentials
- login
- status
GET /v1/card-links/pending HTTP/1.1 Authorization: Bearer <access_token> X-Client-Platform: android X-Client-Version: 5.0.5 Accept: application/json{ "hasCard": true, "statusCard": { "hasCredentials": true, "login": "[email protected]", "status": "PENDING_DEVICE" } }Export transactions Excel
POST
/v1/exports/transactionsopenfinanceBuilds an Excel download URL for the filtered ledger window (dataInicial/dataFinal, contas, categorias, tipoMovimentacoes). Companion CSV and PDF export options exist alongside.
Auth: Bearer access token (Authorization: Bearer <access_token>).
- dataInicial
- dataFinal
- periodoPersonalizado
- categorias
- contas
- tipoMovimentacoes
POST /v1/exports/transactions HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json X-Client-Platform: android X-Client-Version: 5.0.5 { "dataInicial": "2026-01-01", "dataFinal": "2026-10-31", "periodoPersonalizado": true, "categorias": [1, 3, 8], "contas": [1, 2], "tipoMovimentacoes": [1, 2, 3] }https://downloads.example.com/exports/ada-2026-10.xlsxList connected devices
GET
/v1/me/devicesopendataLists sessions on the household book: identifier, name, type (0 phone / 1 computer / 2 tablet), city/state and connectionDate. Connect, disconnect and disconnect-all actions sit alongside the list.
Auth: Bearer access token (Authorization: Bearer <access_token>).
- success
- data
- devices
- id
- identifier
- name
- type
- city
- state
- status
- connectionDate
- disconnectionDate
GET /v1/me/devices HTTP/1.1 Authorization: Bearer <access_token> X-Client-Platform: android X-Client-Version: 5.0.5 Accept: application/json{ "success": true, "data": { "devices": [ { "id": 88, "identifier": "pref_device_uuid_pixel8", "name": "Google Pixel 8", "type": 0, "city": "São Paulo", "state": "SP", "status": true, "connectionDate": "2026-10-18T11:04:00", "disconnectionDate": null } ] } }
Data categories
- accounts
- balances
- transactions
- credit cards
- budgets
- bank integrations
- devices
Where teams use this data
Household ledger recon
Nightly jobs pull the account sync rows (saldo, tipoConta, instituicaoBancariaId) then overlay expense and income syncs so an ERP or family dashboard matches Mobills without scraping the UI.
Nubank fatura ingest
A card-ops bot checks the pending-card probe, then submits a card-link request with login, cardId and associateCategories so Nubank invoices land as credit cards with limite, diaFechamento and diaPagamento.
Monthly spend cockpit
A PFM widget consumes monthly snapshots — somaDespesas, somaReceitas, categorias.valorTotal and cartoes.valorFatura — to chart weekday spend without replaying every ledger row.
Accountant Excel handoff
A bookkeeper posts dataInicial, dataFinal, contas and tipoMovimentacoes to the transactions export and stores the returned URL for the monthly close.
Frequently asked questions
Does Mobills expose live bank balances or only on-device cash?
Synced ledger balances. The accounts sync call (POST /v1/ledger/accounts/sync) returns each conta with saldo, tipoConta (1 checking / 2 cash / 3 poupança / 4 investments) and instituicaoBancariaId. Nubank-linked cards add limite, diaFechamento and diaPagamento once the card-link request has been accepted.
How are expenses and incomes shaped on the wire?
The expenses sync call (POST /v1/ledger/expenses/sync) sends descricao, valor, dataDespesa and status (0 done / 1 pending). Incomes use dataReceita, status and optional receitaFixaId. Transfers carry deContaId, paraContaId, valor and the date key dataTransfencia.
What does the monthly analytics snapshot contain?
The monthly snapshot call (POST /v1/insights/monthly-snapshots) uploads periodo, pais, moeda, somaDespesas, somaReceitas, somaInvestimentos, somaContaPoupanca, categorias[].valorTotal, cartoes[].valorFatura and weekday valorGastoSeg through valorGastoDom.
How is the session authenticated?
The sign-in exchange (POST /v1/session/exchange) swaps a federated identity (uid plus externalToken) for auth_token, expires_in and assinanteAndroid. Later calls send Authorization: Bearer <access_token> plus platform and version headers.
Apps similar to Mobills: Budget Planner
- Organizze — Organizze is a Brazilian finance tracker and budget planner that registers expenses, incomes and transfers across multiple wallets and accounts, with access from phone or computer.
- Minhas Economias — Minhas Economias is a Brazilian personal-budget app that monitors expenses and income by category and can pull account and credit-card updates through Open Finance.
- Wallet: Budget Expense Tracker — Wallet is a personal finance manager that connects bank accounts to track expenses, sets custom budgets, and can share accounts with family.
- Spendee — Spendee is a budget and expense tracker that syncs bank accounts, e-wallets and crypto wallets, auto-categorizes transactions, and lets people plan category budgets.
- Money Manager Expense & Budget — Money Manager Expense & Budget records income and expenses with double-entry bookkeeping, graphs budget versus spending, and tracks credit-card settlement dates.
- AndroMoney — AndroMoney is a personal-finance tool for Android, iOS and the web that tracks daily expenses across multiple accounts and currencies, with category budgets and charts.
- Bolso Organizado — Bolso Organizado is a Brazilian personal-finance app that records spending and income offline on the device and sends reminders for recurring expenses.
- Money Tracker-Expense & Budget — Money Tracker-Expense & Budget is a money-management app that combines an expense tracker, cash book and bill organizer.
Topics
- Mobills API
- Brazilian budget planner ledger
- Nubank card integration
- somaDespesas monthly analytics
- account saldo sync
- Excel transaction export
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