Skip to content

Build distribution

Android

Desktop locations

GitHub

Android app code is pushed into settle-up-android GitHub repo. GitHub Actions then runs workflow with various ends. RC builds (release candidates) are created on the master branch with workflow "Deploy production app" (view filtered results here). If you want to get the .apk as a file to manually install on a device, click on the run and under Artifacts, download zip archive called app-releases, in which you can find the production (live) or sandbox .apk for testing (apk > live or sandbox > release > app-...-release.apk). There is also the .aab bundle in the zip archive. Move the .apk to your phone and install it by clicking on the file.

Runs on other branches are used for feature development and the apks can be downloaded in the same way. As of April 2026, artifacts expire in 7 days after the run due to price of storage on GitHub, while it can be customized.

Google Play

Go to Test and release > Production > tab Releases > Manage release > App bundles > click arrow next to the desired version > tab Downloads > download Signed, universal APK.

Under tab Testers, you can find the invitation link for internal testing. However, the invited tester needs to be listed first. Then, join the program by accepting the invitation. The tester will receive internal testing versions in their Google Play app just like normal updates. These are release candidate versions:

  • Live: https://play.google.com/apps/internaltest/4697759853991458698
  • Sandbox: https://play.google.com/apps/internaltest/4701301942790968881

Firebase

Each release is also sent to Firebase App Distribution. Tab "Releases" offers to download the .apk directly, and includes release notes and the list of testers. Also, AI tests can be run there. Same goes for sandbox versions. The release note will include a description of the branch and the changes, such as feature/m3-tx-expandable, which means that it's not a release candidate (it's not on master branch).

Slack channels

On Slack, updates about new builds are sent to channels apks-live and apks-sandbox. Each new post includes info whether it's an RC build or branch build, version, description of changes, and the link to download.

For internal testers, it is the easiest to just follow updates via Google Play. Instead of randomly searching for the app name in Play, it's a good idea to install Google Play Console app which provides an overview of versions, orders, reviews and an easy-access button to open the test app in Play to update it.

Another app is App Tester, which is a mobile app that offers the same as desktop browser Firebase App Distribution options. It is not visible in Google Play, so you need to visit the link directly on your mobile device and download the app from the prompt. These are branch builds:

  • Live: https://appdistribution.firebase.google.com/pub/i/4ea4de3bab9a494a
  • Sandbox: https://appdistribution.firebase.google.com/pub/i/7c66a687ef654d89

To test subscriptions, it is vital to install Play Billing Lab app. It allows you to configure settings to test free trials and introductory offers. You as an internal tester then activate a subscription in Settle Up and this app will allow it to act as a free trial etc. Also, you can simulate various errors and response codes. Careful, you need to be signed in Google Play with the same Google account.

iOS

TestFlight

iOS is a specific platform that does not allow to send app archives here and there. The only way to properly test versions is via TestFlight, which is a separate application. The tester needs to be invited via App Store Connect. Both internal and external testing is possible.

The tester will copy the code from their invitation email to TestFlight on their testing iPhone, which will open the testing and they will receive future versions of Settle Up.

The only time that a tester would need to get the app archive is for Robo tests, which require the .ipa file to be uploaded. In that case, contact the iOS developer.

Web app

The web app automatically offers to update any time there is a new version, both on sandbox and production versions.