A custom Home Assistant integration for Starling Bank with UI-based setup, richer read-only account entities, Spaces support, scheduled payment visibility, recurring savings-goal transfer visibility, and integration diagnostics helpers.
This project is an independent third-party Home Assistant custom integration.
This project is not affiliated with Starling Bank. Starling Bank and the Starling logo are trademarks of Starling Bank Ltd.
Work with account types:
- Personal
- Joint
This integration adds:
- UI configuration from Settings → Devices & Services
- Cleared balance and effective balance sensors
- Spaces / savings goals sensors
- Scheduled payments sensors and binary sensor
- Recurring savings-goal transfer sensors and binary sensor
- Savings-goal transfer history sensors with recent-transfer attributes
- Diagnostics sensors for refresh status, request count, and API backoff / rate-limit state
- Options flow to enable or disable entities later
- Reconfigure flow to replace the token without deleting the integration
- Separate domain:
starlingbank_enhanced - Ability to run alongside the built-in
starlingbankintegration
The built-in Home Assistant Starling Bank integration is documented as a legacy integration and uses YAML configuration. This custom integration keeps the same read-only approach, but adds a modern Home Assistant UX, feature-based setup, Spaces support, scheduled payment visibility, recurring transfer visibility, and richer diagnostics.
Optional entities:
- Cleared balance
- Effective balance
You can enable one or both during setup.
Optional entities:
- One sensor per selected Space / savings goal
Behavior:
- Spaces are discovered during setup
- You can choose only the Spaces you want exposed in Home Assistant
- The list can be refreshed later from Configure / Options
Optional entities:
sensor.<account>_scheduled_payments_countsensor.<account>_next_scheduled_payment_datesensor.<account>_next_scheduled_payment_amountsensor.<account>_next_scheduled_payment_payeebinary_sensor.<account>_has_scheduled_payments
Behavior:
- Keeps the next scheduled payments in state attributes
upcoming_limitcontrols how many upcoming payments are stored in attributes- Useful for dashboards, alerts, and automations
For each selected Space, optional entities:
- recurring transfer amount
- recurring transfer next date
- recurring transfer frequency
- latest transfer amount
- latest transfer date
- transfer history count
- binary sensor showing whether a recurring transfer exists
Behavior:
history_limitcontrols how many recent transfers are stored in attributes- Transfer history is based on settled feed items for the account category
- Intended for visibility and automation only, not for money movement
Always-created diagnostics entities:
- Last successful refresh
- Last rate limit at
- Backoff until
- Request count last cycle
These help with debugging, API throttling visibility, and checking when data was last refreshed.
- Add from Settings → Devices & Services → Add Integration
- No YAML required
- Token can be changed later from Reconfigure
- Entity selection is feature-aware
- Options flow lets you change enabled balances, Spaces, and retention limits later
This integration is configured fully from the Home Assistant UI.
You can enable any combination of:
- Main balance
- Spaces
- Scheduled payments
- Savings goal transfers
Notes:
- Selecting Savings goal transfers automatically requires Spaces support as well
- The setup flow validates the token against the selected features
- If permissions are missing, the form shows which scopes are required
You provide:
- a Starling personal access token
- whether to use sandbox mode
Depending on enabled features, you can choose:
- cleared balance sensor
- effective balance sensor
- selected Spaces
- upcoming scheduled payment retention limit
- recent transfer history retention limit
To use this integration with your real Starling account, you need a personal access token from the official Starling Developer Portal.
Official documentation:
- Open the Starling Developer Portal: https://developer.starlingbank.com/docs
- Sign in with your Starling account.
- Link your Starling account in the Developer Portal if prompted (personal or joint).
- Create a personal access token.
- Select the scopes required for the features you want to enable in Home Assistant.
- Copy the token and keep it safe.
- In Home Assistant, paste the token during the integration setup flow.
If you want to test the integration with dummy data instead of your real bank account, use the Starling sandbox and enable sandbox mode during setup.
Minimum scopes depend on the enabled features.
account:readbalance:read
account:readsavings-goal:readspace:read
account:readscheduled-payment:readtransaction:read
account:readsavings-goal-transfer:readsavings-goal:readspace:readtransaction:read
The integration is read-only. It does not move money or create payments.
If your Starling token expires or is revoked, the integration may require reauthentication.
To restore access:
- Create a new personal access token in the Starling Developer Portal.
- Open the integration in Home Assistant.
- Use Reconfigure and paste the new token.
Make sure the replacement token includes the same scopes required by your enabled features.
- Open HACS.
- Go to the top-right menu and select Custom repositories.
- Add the repository URL.
- Select Integration as the category.
- Install Starling Bank Enhanced.
- Restart Home Assistant.
- Go to Settings → Devices & Services → Add Integration.
- Search for Starling Bank Enhanced.
- Copy
custom_components/starlingbank_enhancedinto:
/config/custom_components/starlingbank_enhanced
- Restart Home Assistant.
- Go to Settings → Devices & Services → Add Integration.
- Search for Starling Bank Enhanced.
Main account:
sensor.personal_cleared_balancesensor.personal_effective_balance
Spaces:
sensor.personal_space_holidaysensor.personal_space_emergency_fund
Scheduled payments:
sensor.personal_scheduled_payments_countsensor.personal_next_scheduled_payment_datesensor.personal_next_scheduled_payment_amountsensor.personal_next_scheduled_payment_payeebinary_sensor.personal_has_scheduled_payments
Recurring transfers / transfer history:
sensor.personal_holiday_recurring_transfer_amountsensor.personal_holiday_recurring_transfer_next_datesensor.personal_holiday_recurring_transfer_frequencysensor.personal_holiday_transfer_history_countsensor.personal_holiday_latest_transfer_amountsensor.personal_holiday_latest_transfer_datebinary_sensor.personal_holiday_has_recurring_transfer
Diagnostics:
sensor.personal_last_successful_refreshsensor.personal_last_rate_limit_atsensor.personal_backoff_untilsensor.personal_request_count_last_cycle
Entity IDs depend on Home Assistant naming rules.
The coordinator uses staggered refresh behavior instead of hitting every endpoint on every cycle.
Current defaults in code:
- general scan interval: 10 minutes
- account refresh: 6 hours
- savings / Spaces refresh: 30 minutes
- scheduled payments refresh: 30 minutes
- transfer history refresh: 30 minutes
- rate-limit backoff default: 300 seconds
- transfer history lookback: 90 days
This reduces API load and makes rate-limit handling more predictable.
- Domain:
starlingbank_enhanced - IoT class:
cloud_polling - Read-only integration
- No transaction import UI
- No money movement, transfers, or write actions
- Scheduled payments and transfer history are for visibility only
- Savings-goal transfer history depends on Starling API data returned for settled feed items
- Some Spaces or transfer-related features may not be available for all account types.
- Data refresh is staggered to reduce API load and rate-limit pressure.
- Home Assistant Core 2026.3.1
- Home Assistant OS 17.1
- Supervisor 2026.03.0
.
├── .github/
│ └── workflows/
│ ├── hassfest.yml
│ └── validate.yml
├── .gitignore
├── LICENSE
├── README.md
├── hacs.json
├── custom_components/
│ └── starlingbank_enhanced/
│ ├── __init__.py
│ ├── api.py
│ ├── binary_sensor.py
│ ├── config_flow.py
│ ├── const.py
│ ├── coordinator.py
│ ├── diagnostics.py
│ ├── manifest.json
│ ├── sensor.py
| ├── brand/
│ │ ├── icon.png
│ │ ├── icon.svg
│ │ └── logo.png
│ └── translations/
│ ├── en.json
│ └── pl.json
|
└── tests/
└── components/
└── starlingbank_enhanced/
├── __init__.py
├── conftest.py
├── test_config_flow.py
└── test_init.py
- Restart Home Assistant after installation.
- If installed through HACS, make sure the repository type was set to Integration.
- Make sure you created a personal access token in the Starling Developer Portal.
- Make sure the token includes all scopes required by the enabled features.
- If you are testing with dummy data, enable sandbox mode.
- Your token may have expired or been revoked.
- Create a new token and use Reconfigure in Home Assistant.
- Check that Spaces-related scopes are granted.
- Check whether Space category filters disabled the missing Spaces.
- Check whether the required feature was enabled during setup.
- Check whether the token includes the required scopes.
- Some data may not exist for the selected account.
This repository uses the MIT License.
Contributions are welcome. Feel free to open issues or pull requests.
If this integration is useful to you, please consider giving the repository a GitHub star ⭐
You can also support development here:
Support is completely optional and helps with maintenance and new features.





