{"id":22424058,"url":"https://github.com/dullage/starlingbank","last_synced_at":"2025-10-15T16:08:14.095Z","repository":{"id":57471090,"uuid":"147250848","full_name":"dullage/starlingbank","owner":"dullage","description":"A python package that provides limited access to the Starling bank API.","archived":false,"fork":false,"pushed_at":"2019-12-18T13:22:48.000Z","size":26,"stargazers_count":8,"open_issues_count":1,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-07-30T15:21:04.874Z","etag":null,"topics":["api","api-client","bank","banking","python","starling"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dullage.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-09-03T20:30:37.000Z","updated_at":"2024-07-01T18:27:48.000Z","dependencies_parsed_at":"2022-09-10T02:12:06.498Z","dependency_job_id":null,"html_url":"https://github.com/dullage/starlingbank","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dullage/starlingbank","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dullage%2Fstarlingbank","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dullage%2Fstarlingbank/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dullage%2Fstarlingbank/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dullage%2Fstarlingbank/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dullage","download_url":"https://codeload.github.com/dullage/starlingbank/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dullage%2Fstarlingbank/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268185560,"owners_count":24209392,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-01T02:00:08.611Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","api-client","bank","banking","python","starling"],"created_at":"2024-12-05T18:13:56.054Z","updated_at":"2025-10-15T16:08:14.018Z","avatar_url":"https://github.com/dullage.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![PyPI](https://img.shields.io/pypi/v/starlingbank.svg)\n\n# starlingbank\n\nAn **unofficial** python package that provides access to parts of the Starling bank API. Designed to be used for personal use (i.e. using personal access tokens).\n\n* [Change Log](#change-log)\n* [Links](#links)\n* [Installation](#installation)\n* [Usage](#usage)\n  * [Import](#import)\n  * [Initialisation](#initialisation)\n  * [Data](#data)\n    * [Basic Account Data](#basic-account-data)\n    * [Balance Data](#balance-data)\n    * [Savings Goal Data](#savings-goal-data)\n  * [Update a Single Savings Goal](#update-a-single-savings-goal)\n  * [Add to / withdraw from a Savings Goal](#add-to--withdraw-from-a-savings-goal)\n  * [Download a Savings Goal Image](#download-a-savings-goal-image)\n\n\n## Change Log\n18/12/2019\n* Removed `available_to_spend` property as this is no longer supported by the API.\n\n23/02/2018\n* Updated to use v2 API.\n* `currency` is no longer a property of the balance data.\n* `id` and `name` are no longer properties of the account data.\n* `account_number` is now `account_identifier`.\n* `sort_code` is now `bank_identifier`.\n* An API call is now made when initialising a StarlingAccount instance, even with `update=False`. This is to get the minimum data needed to start working with an account.\n\n## Links\n\n* https://www.starlingbank.com/\n* https://developer.starlingbank.com/\n\n## Installation\n```shell\npip install starlingbank\n```\n\n## Usage\n### API Key Scope Requirements\nTo use all of the functionality this package affords, the following API scopes are required:\n\n* account:read\n* account-identifier:read\n* balance:read\n* savings-goal:read\n* savings-goal-transfer:read\n* savings-goal-transfer:create\n\n### Import\n```python\nfrom starlingbank import StarlingAccount\n```\n\n### Initialisation\n```python\nmy_account = StarlingAccount(\"\u003cINSERT API TOKEN HERE\u003e\")\n```\nIf using a sandbox token:\n```python\nmy_account = StarlingAccount(\"\u003cINSERT API TOKEN HERE\u003e\", sandbox=True)\n```\nBy default, to save on wasted API calls only minimal data is collected when you initialise a StarlingAccount. To optionally update all data on initialisation use the following:\n```python\nmy_account = StarlingAccount(\"\u003cINSERT API TOKEN HERE\u003e\", update=True)\n```\n\n### Data\n3 data sets are currently supported:\n\n1. Basic Account Data\n2. Balance Data\n3. Savings Goal Data\n\n You have to request / refresh each set of data as required with the following commands:\n\n```python\nmy_account.update_account_data()\nmy_account.update_balance_data()\nmy_account.update_savings_goal_data()\n```\n\n#### Basic Account Data\nProperties:\n\n* account_identifier\n* bank_identifier\n* currency\n* iban\n* bic\n* created_at\n\nExample:\n```python\nprint(my_account.account_identifier)\n```\n\n#### Balance Data\nProperties:\n\n* cleared_balance\n* effective_balance\n* pending_transactions\n* accepted_overdraft\n\nExample:\n\n```python\nprint(my_account.effective_balance)\n```\n\n#### Savings Goal Data\nSavings goals are stored as a dictionary of objects where the dictionary key is the savings goals uid. To get a list of savings goal names and their respective uids you can run:\n\n```python\nfor uid, goal in my_account.savings_goals.items():\n    print(\"{0} = {1}\".format(uid, goal.name))\n```\n\nEach goal has the following properties:\n\n* uid\n* name\n* target_currency\n* target_minor_units\n* total_saved_currency\n* total_saved_minor_units\n\n_Note: Values are in minor units e.g. £1.50 will be represented as 150._\n\nExample:\n```python\nprint(my_account.savings_goals['c8553fd8-8260-65a6-885a-e0cb45691512'].total_saved_minor_units)\n```\n\n### Update a Single Savings Goal\nThe `update_savings_goal_data()` method will update all savings goals but you can also update them individually with the following method:\n```python\nmy_account.savings_goals['c8553fd8-8260-65a6-885a-e0cb45691512'].update()\n```\n\n### Add to / withdraw from a Savings Goal\nYou can add funds to a savings goal with the followng method:\n```python\nmy_account.savings_goals['c8553fd8-8260-65a6-885a-e0cb45691512'].deposit(1000)\n```\n\nYou can add funds to a savings goal with the followng method:\n```python\nmy_account.savings_goals['c8553fd8-8260-65a6-885a-e0cb45691512'].withdraw(1000)\n```\n\n_Note: Both methods above will call an update after the transfer so that the local total_saved value is correct._\n\n### Download a Savings Goal Image\nYou can download the image associated with a savings goal to file with the following method:\n```python\nmy_account.savings_goals['c8553fd8-8260-65a6-885a-e0cb45691512'].get_image('\u003cYOUR CHOSEN FILENAME\u003e.png')\n```\n_Note: If the filename is ommitted the name of the goal will be used. You can optionally specify a full path alongside the filename if required._","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdullage%2Fstarlingbank","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdullage%2Fstarlingbank","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdullage%2Fstarlingbank/lists"}