{"id":18521760,"url":"https://github.com/transferwise/banks-reference-android","last_synced_at":"2025-10-18T07:26:30.052Z","repository":{"id":54727271,"uuid":"234093083","full_name":"transferwise/banks-reference-android","owner":"transferwise","description":"Reference Android code integrating TransferWise's services into a (Demo) Bank App","archived":false,"fork":false,"pushed_at":"2023-04-07T01:25:03.000Z","size":1546,"stargazers_count":222,"open_issues_count":6,"forks_count":33,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-04-03T01:11:15.802Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://transferwise.github.io/api-docs-banks/#transferwise-for-banks-api","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/transferwise.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-15T14:02:16.000Z","updated_at":"2025-03-10T08:17:00.000Z","dependencies_parsed_at":"2024-11-06T17:45:37.709Z","dependency_job_id":null,"html_url":"https://github.com/transferwise/banks-reference-android","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transferwise%2Fbanks-reference-android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transferwise%2Fbanks-reference-android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transferwise%2Fbanks-reference-android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transferwise%2Fbanks-reference-android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/transferwise","download_url":"https://codeload.github.com/transferwise/banks-reference-android/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248161270,"owners_count":21057554,"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","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":[],"created_at":"2024-11-06T17:27:31.197Z","updated_at":"2025-10-18T07:26:25.032Z","avatar_url":"https://github.com/transferwise.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bank Integrations Reference Implementation (Android)\nThe reference implementation for designing the international payments experience with the TransferWise API.\n\nThis implementation is based on the following documents:\n\n- [Bank Integrations Design Guide](https://www.notion.so/Bank-Integrations-Design-Guide-8c375c5c5f1e4c64953b4b601ff6abc6)\n- [TransferWise for Banks API](https://transferwise.github.io/api-docs-banks/#transferwise-for-banks-api)\n\nHave a look at [Bank Integrations Reference Implementation (Backend)](https://github.com/transferwise/banks-reference-backend) for a reference backend implementation.\n\n# Overview\nThe reference application consists of three main modules:\n\n- `app module`: simulates a demo banking application and doesn't contain any TransferWise reference code\n- `transferwise module`: implementation of all code and screens to integrate the [TransferWise for Banks API](https://transferwise.github.io/api-docs-banks/#transferwise-for-banks-api)\n- `dynamicform module`: reusable library that renders dynamic forms returned by the [TransferWise for Banks API](https://transferwise.github.io/api-docs-banks/#transferwise-for-banks-api)\n\n## App module\n\u003e This module doesn't contain any TransferWise reference code and shouldn't be reused.\n\nA very basic module that simulates a bank application and integrates the TransferWise component.\n\n\u003cimg src=\"readme/main_activity_1.png\" width=\"260\"\u003e\u0026emsp;\u003cimg src=\"readme/main_activity_2.png\" width=\"260\"\u003e\n\n### Learn more\n:point_right: [Learn more about the App module](https://github.com/transferwise/banks-reference-android/tree/master/app/README.md).\n\n## TransferWise module\n\u003e This module can be copied to bootstrap your integration of the [TransferWise for Banks API](https://transferwise.github.io/api-docs-banks/#transferwise-for-banks-api). Note that only the full flow can easily be reused, not the different steps independently.\n\nThis module represents the reference implementation of the [TransferWise for Banks API](https://transferwise.github.io/api-docs-banks/#transferwise-for-banks-api) and contains all screens to handle an international payment flow.\n\n![Navigation graph](readme/navigation_graph.png)\n\n### Learn more\n:point_right: [Learn more about the TransferWise module](https://github.com/transferwise/banks-reference-android/blob/master/transferwise/README.md) and its architectural choices.\n\n## Dynamic forms module\n\u003e This module can reused to render dynamic forms returned by the [TransferWise for Banks API](https://transferwise.github.io/api-docs-banks/#transferwise-for-banks-api). While it is fully tested and has a simple, generic API, its interface needs more polish to distribute it as a Maven artifact (e.g. thread safety, review contracts,...).\n\nSome endpoints in the TransferWise API return a dynamic UI that needs to be rendered to the user.\n\nThese endpoints are:\n\n- [Recipient account requirements](https://transferwise.github.io/api-docs-banks/#recipient-accounts-requirements), used to get the necessary fields to create a new recipient.\n- [Transfer requirements](https://transferwise.github.io/api-docs-banks/#transfers-requirements), needed to get the necessary fields to complete a transfer.  \n\nRendering such a dynamic UI is quite challenging and therefore, the reference implementation contains a separate module `dynamicforms` that handles all that complexity for you.\n\n### Learn more\n:point_right: [Learn more about the Dynamic forms module](https://github.com/transferwise/banks-reference-android/blob/master/dynamicform/README.md) and how to integrate it.\n\n# Development setup\nThe banks reference requires Android Studio version 3.6 or higher. The latest version can be downloaded from [here](https://developer.android.com/studio).\n\nThis project uses the Gradle build system:\n\n- To build this project, use `./gradlew assembleDebug`\n- To run all unit tests, use `./gradlew testDebugUnitTest`\n\nFor more resources on learning Android development, visit the [Developer Guides](https://developer.android.com/guide/) at [developer.android.com](https://developer.android.com/).\n\n## Getting started\nThe banking reference implementation can be tested both offline and online.\n\n### Offline\nCheckout the source code and install the application on an Android device. Make sure to check the \"Enable offline demo mode\" toggle and you can go through most of the flow without needing to set up an instance of the reference backend.\n\nLimitations:\n\n- All requests will be simulated to be successful, so you won't see any backend failures\n- The simulated customer already has a TransferWise account connected, so the anonymous quote (step 2) and sign up flow (steps 3) are skipped\n- All server responses are static (e.g. entering a different quote amount won't change the receiving amount)  \n\n### Online\nCheckout the source code and provide your own values of the following templated variables (found [here](https://github.com/transferwise/banks-reference-android/blob/master/app/build.gradle#L14-L16))\n\n - `DEFAULT_SERVER_URL` -\u003e where the [Bank Integrations Reference Implementation (Backend)](https://github.com/transferwise/banks-reference-backend) is running\n - `loginUrl` -\u003e the reference example is pointing to TransferWise's Sandbox API. Change this to our production environment before making the code available to customers.\n - `LOGIN_CLIENT_ID` -\u003e unique Id identifying your product (Please contact `banks@transferwise.com` to get started.)\n\n## Code style\nThis project uses [ktlint](https://github.com/pinterest/ktlint), provided via the [spotless gradle plugin](https://github.com/diffplug/spotless).\n\nPlease run `./gradlew spotlessApply` before merging pull requests to format all code and apply the appropriate copyright headers.\n\n# License\n```\nCopyright 2019,2020 TransferWise Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftransferwise%2Fbanks-reference-android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftransferwise%2Fbanks-reference-android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftransferwise%2Fbanks-reference-android/lists"}