Monzo for Android - Teardowns & Deep Dives šŸ‘Øā€šŸ’»

Do people get warned off posting the breakdowns on here? :thinking:

I don’t think so, a few Monzo staff have publicly commented that they find it fascinating what people find on here, I just think it’s a lot of work which is generously done by people in the community. The people that normally do them are probably just busy

5 Likes

I never did! :grin: And I was doing teardowns for over a year :stuck_out_tongue_winking_eye:

The only thing I ever chose to hold back, for 1 day, was the crowdfunding code back before that happened because I figured there was going to be a lot of press coverage & wouldn’t want to have stepped on any toes :yum: but whenever I’ve spoken to Monzo staff about it (before I started working here), they were all very happy for me/the community to be doing teardowns :hot_coral_heart:

18 Likes

Then you abandoned us :sob: :broken_heart:

9 Likes

Yes, significantly. Things like much higher cash usage, much lower contactless/chip and pin adoption, different attitudes towards tipping etc.

The reason behind this screen specifically is because it is very common to be paid bi-weekly or weekly in the US, unlike the UK, and we’re experimenting with approaches to help people budget around those pay cycles.

7 Likes

Pay cycles, that makes sense.

Cash usage, low contactless, are a puzzle, can’t imagine features that revolve around those that don’t apply to both sides of The Atlantic… tipping for sure though!

Not a complaint BTW, genuinely curious to the challenges you face.

1 Like

I’d also be curious why pay cycles should be US specific. If the work Monzo-side is done, why not make it UK too? I know I, for one, get paid weekly :man_shrugging:t2:

6 Likes

Actually yes, I do too. Not quite sure how that skipped my attention (pre-caffeine brain be damned!).

Yes, for those of us who are paid fortnightly too.

3.21.0 has landed - no real visible changes, but sounds like lots under the hood…

Anyone got any insight? I might have to reinstall some tools on my laptop to take a look

1 Like

They definitely dropped some hints that there is some exciting stuff in the update. Will be good to see what tear down shows

1 Like

Really missing these tear downs if anybody fancies having a go… pwetty please

1 Like

Very disappointing.

I am not Android developer so it is really not my thing, but new strings in 3.21 since 3.20:

<string name="affordability_info">Info</string>
<string name="business_signup_confirm_identity_message">We need to confirm it’s really you as a safety measure.</string>
<string name="business_signup_confirm_identity_primary_button">Confirm Identity</string>
<string name="business_signup_confirm_identity_title">We need to confirm your identity</string>
<string name="card_activation_confirmation_title">New card activated</string>
<string name="card_design_name_business_boulder_grey">Boulder Grey</string>
<string name="card_design_name_business_pebble_grey">Pebble Grey</string>
<string name="card_replacement_intro_expired_description">"Your card’s expiring soon or it already has, so it’s time to order a new one.

If your card hasn’t expired, you can keep using it until you activate your new one."</string>
<string name="card_replacement_intro_title">Order a new card</string>
<string name="card_replacement_send_action">Confirm address</string>
<string name="com.crashlytics.android.build_id">b8e8ed9f-92c3-4ddb-a030-f1cfe7e5de3f</string>
<string name="declined_loan_repayment">Missed</string>
<string name="deep_link_payment_initiation">payment_initiation</string>
<string name="developer_options_pref_key_ephemeral_environment_id">key_ephemeral_environment_id</string>
<string name="fraud_check_body">"\### Could someone be trying to scam you?
It looks like you’re sending money to an account you haven’t paid before. Please make sure you know the person or company you’re paying. Phone them directly to double check. And always use a number from their official website. Only fraudsters will tell you to ignore warnings like this. If we need to call you we’ll always let you know in advance by email or in-app chat. We’ll never call you out of the blue.
### Common signs of a scam
- The offer seems too good to be true, or doesn’t feel right.
- Someone’s pressuring you into making an unexpected payment. Fraudsters often pretend to be companies like Monzo, the police or HMRC.
- Someone’s contacted you unexpectedly and said your account is at risk, and that you need to send money to another account, or a ā€˜safe account’.
- Someone’s asking you to take out a loan and send it to another account. They might say the account’s in your name, even though it isn’t.
### If you’re unsure, stop
If you have any doubts, stop and [get advice](https://monzo.com/blog/2019/05/23/protect-yourself-agains-app-fraud) from your bank, a family member or friend. You may lose your money if this payment turns out to be a scam."</string>
<string name="fraud_check_continue">Continue payment</string>
<string name="fraud_check_hint">Please read the advice to continue</string>
<string name="fraud_check_stop">Stop and go back</string>
<string name="fraud_check_title">Protect yourself against fraud</string>
<string name="fraud_confirm_checkbox">I understand and want to continue</string>
<string name="fraud_dispute_pick_initial_transaction_title">Which transactions is this about?</string>
<string name="loan_affordability_submit">Next</string>
<string name="loan_affordability_title">Questions</string>
<string name="plans_home_loading_description">We’re still hooking up your account to work with your new benefits. Check back again later.</string>
<string name="plans_home_sync_error_description">It could just be the internet connection. Try refreshing the page.</string>
<string name="plans_home_sync_error_title">Couldn’t refresh features</string>
<string name="plans_loading_error_description_fallback">Make sure you’re connected to the internet before retrying</string>
<string name="plans_loading_error_title">Nothing to see here</string>
<string name="plans_loading_title">Setting up your %s membership…</string>
<string name="plans_month_suffix">/mo</string>
<string name="plans_price_free">Free</string>
<string name="pot_empty_product_reminder_confirmation_subtitle">You’ll get a notification when we’ve got new %s rates.</string>
<string name="pot_empty_product_reminder_confirmation_title">We’ll let you know</string>
<string name="pot_type_empty_product">Remind me</string>
<string name="pot_type_empty_product_subtitle">We’re working on getting new rates, check back later</string>
<string name="select_category_edit">Edit</string>
<string name="select_category_edit_title">Pick category to edit</string>
<string name="special_offers_all_offers">All offers</string>
<string name="special_offers_use_now">Use now</string>
<string name="transaction_loan_action_add_money">Add money</string>
<string name="transaction_loan_action_get_back_on_track">Get back on track</string>
<string name="transaction_loan_action_help">I need help with a payment</string>
<string name="transaction_loan_initial_deposit_paid_subtitle">This is the money you asked us for when you set up your loan.</string>
<string name="transaction_loan_initial_deposit_subtitle">This is the money you asked us for when you set up your loan. You’re paying it back over %1$d months.</string>
<string name="transaction_loan_scheduled_repayment_failed_subtitle">This would have been monthly repayment %1$d of %2$d you set up to repay your %3$s loan. If for any reason you’re unable to pay please let us know as soon as possible.</string>
<string name="transaction_loan_scheduled_repayment_successful_subtitle">This is monthly repayment %1$d of %2$d you set up to repay your %3$s loan. If for any reason you’re unable to pay please let us know as soon as possible.</string>
<string name="transaction_loan_scheduled_repayment_upcoming_warning">This payment might fail</string>
<string name="transaction_loan_stc_initial_deposit_subtitle">This is the money you asked us for to spread the cost of your purchase.</string>

9 Likes

api/ApiAmountCell.smali
api/ApiTotalsRowJsonAdapter.smali
api/CancelRequest.smali
api/ApiPlanSubscription.smali
api/ApiPlanAssets.smali
api/ApiFeatureRow.smali
api/ApiLegalsJsonAdapter.smali
api/AvailablePlansResponseJsonAdapter.smali
api/ApiLegalDocumentJsonAdapter.smali
api/ApiPlanAdditionalFeature.smali
api/PurchaseRequestJsonAdapter.smali
api/ApiLegalDocument.smali
api/ApiComparisonTable.smali
api/ApiActivePlanFeature.smali
api/ApiFirstCardOrderJsonAdapter.smali
api/ApiLimitationsJsonAdapter.smali
api/ApiInsuranceProviderJsonAdapter.smali
api/ApiPlanHeadlineFeature.smali
api/a.smali
api/PurchasePlanResponse.smali
api/ApiPlanDefinitionJsonAdapter.smali
api/ActivePlanResponseJsonAdapter.smali
api/ApiFeatureRowJsonAdapter.smali
api/ApiFeatureDetail.smali
api/ApiPlanInterstitial.smali
api/CancelRequestJsonAdapter.smali
api/ApiPlanHeadlineFeatureJsonAdapter.smali
api/ApiActivePlanFeaturePage.smali
api/ApiActivePlanFeatureJsonAdapter.smali
api/ApiActivePlanSectionRow.smali
api/ApiHeaderRowJsonAdapter.smali
api/ApiComparisonTableJsonAdapter.smali
api/ApiInclusionsAndExclusions.smali
api/ApiExtendedCardInformationDetail.smali
api/PurchasePlanResponseJsonAdapter.smali
api/ApiActivePlanSectionRowJsonAdapter.smali
api/AvailablePlansResponse.smali
api/ApiExtendedCardInformationDetailJsonAdapter.smali
api/ApiActivePlanJsonAdapter.smali
api/ApiCardDispatchInfoJsonAdapter.smali
api/ApiAmountsRowJsonAdapter.smali
api/ApiActivePlanSection.smali
api/ApiConsequence.smali
api/ApiInclusionsAndExclusionsJsonAdapter.smali
api/ApiAmountsRow.smali
api/ApiReplacementOrderParameters.smali
api/ApiPlanInterstitialJsonAdapter.smali
api/ApiActivePlanSectionJsonAdapter.smali
api/ApiCardDispatchInfo.smali
api/CancelResponse.smali
api/ApiPlanDefinition.smali
api/CancellationDetailsResponse.smali
api/ApiAmountCellJsonAdapter.smali
api/ApiComparisonComponent.smali
api/ApiConsequenceJsonAdapter.smali
api/CancelResponseJsonAdapter.smali
api/ApiComparisonComponentJsonAdapter.smali
api/ActivePlanResponse.smali
api/ApiPlanAssetsJsonAdapter.smali
api/ApiPlanSubscriptionJsonAdapter.smali
api/ApiLimitations.smali
api/PlansApi.smali
api/ApiActivePlanFeaturePageJsonAdapter.smali
api/ApiLegals.smali
api/ApiFirstCardOrder.smali
api/ApiImageCell.smali
api/ApiReplacementOrderParametersJsonAdapter.smali
api/ApiActivePlan.smali
api/ApiFeatureDetailJsonAdapter.smali
api/ApiTotalsRow.smali
api/ApiHeaderRow.smali
api/ApiImageCellJsonAdapter.smali
api/ApiInsuranceProvider.smali
api/ApiAdditionalCardInformation.smali
api/ApiAdditionalCardInformationJsonAdapter.smali
api/PurchaseRequest.smali
api/ApiPlanAdditionalFeatureJsonAdapter.smali
api/CancellationDetailsResponseJsonAdapter.smali
api/CategoriesApi.smali
model/ApiEditCategoryBodyJsonAdapter.smali
model/ApiEditCategoryBody.smali
model/CategoriesResponseJsonAdapter.smali
model/ApiCategory.smali
model/ApiCreateCategoryBody.smali
model/ApiArchiveCategoryBody.smali
model/ApiArchiveCategoryBodyJsonAdapter.smali
model/CategoriesResponse.smali
model/ApiCreateCategoryBodyJsonAdapter.smali
model/ApiCategoryJsonAdapter.smali
api/MerchantSearchResponse.smali
api/LocationJsonAdapter.smali
api/Location.smali
api/MerchantSearchResult.smali
api/MerchantFeedbackApi.smali
api/MerchantSearchResultJsonAdapter.smali
api/MerchantSearchResponseJsonAdapter.smali
api/BillPaymentFromPotJsonAdapter.smali
api/LeftToPayFromPot.smali
api/ApiBillsPotIdsJsonAdapter.smali
api/BillsPotApi.smali
api/SetPaymentsFromPotRequestJsonAdapter.smali
api/SetPaymentsFromPotRequest.smali
api/PotsApi.smali
api/BillPaymentFromPot.smali
api/LeftToPayFromPotJsonAdapter.smali
api/ApiBillsPotIds.smali
model/FixedSavingsPotDetailJsonAdapter.smali
model/ApiPotJsonAdapter.smali
model/ApiPotDetail.smali
model/ApiPotUpdate.smali
model/InterestStatementPeriodJsonAdapter.smali
model/InterestStatementResponse.smali
model/ApiPotProduct.smali
model/NationalInsuranceNumberCheckResponse.smali
model/InterestStatementPeriodsResponseJsonAdapter.smali
model/InterestStatementResponseJsonAdapter.smali
model/ApiCharitiesJsonAdapter.smali
model/EasyAccessSavingsPotProduct.smali
model/ApiPot.smali
model/EasyAccessSavingsPotProductJsonAdapter.smali
model/FixedSavingsPotProductJsonAdapter.smali
model/ApiCharityJsonAdapter.smali
model/InterestStatementPeriodsResponse.smali
model/ApiCharities.smali
model/FixedSavingsPotProduct.smali
model/ApiCharity.smali
model/SavingsPotDetail.smali
model/NationalInsuranceNumberCheckResponseJsonAdapter.smali
model/ApiPotUpdateJsonAdapter.smali
model/SavingsPotDetailJsonAdapter.smali
model/FixedSavingsPotDetail.smali
model/PauseMovingMoneyRequestJsonAdapter.smali
model/ApiPotProductsJsonAdapter.smali
model/ApiPotsJsonAdapter.smali
model/ClearMovingMoneyRequest.smali
model/ApiPotDetailJsonAdapter.smali
model/InterestStatementPeriod.smali
model/ClearMovingMoneyRequestJsonAdapter.smali
model/PauseMovingMoneyRequest.smali
model/ApiPots.smali
model/ApiPotProducts.smali
model/ApiPotProductJsonAdapter.smali
api/ApiSectionOptions.smali
api/TransactionsResponseJsonAdapter.smali
api/ApiSpending.smali
api/ApiSectionOptionsJsonAdapter.smali
api/PeriodStartTransactionsResponseJsonAdapter.smali
api/ApiBreakdownDial.smali
api/BreakdownReportResponse.smali
api/ApiCurrentPeriodAndBreakdown.smali
api/ApiPeriodJsonAdapter.smali
api/ApiBreakdownDialJsonAdapter.smali
api/ApiSpendingJsonAdapter.smali
api/ApiActionableTipJsonAdapter.smali
api/BreakdownReportResponseJsonAdapter.smali
api/PeriodStartTransactionsResponse.smali
api/ApiPeriod.smali
api/ApiBreakdownItem.smali
api/TransactionsResponse.smali
api/ApiSectionOption.smali
api/PeriodResponse.smali
api/ApiActionableTip.smali
api/ApiProposedPeriodJsonAdapter.smali
api/ApiBreakdown.smali
api/ApiBreakdownItemJsonAdapter.smali
api/ApiProposedPeriod.smali
api/BreakdownApi.smali
api/ApiBreakdownJsonAdapter.smali
api/ApiSectionOptionJsonAdapter.smali
api/ApiCurrentPeriodAndBreakdownJsonAdapter.smali
api/PeriodResponseJsonAdapter.smali
api/LegacyAffordabilityQuestionSkipOptionsJsonAdapter.smali
api/ApiAffordabilityQuestionsResponse.smali
api/LegacyAffordabilityQuestion_Choice_OptionJsonAdapter.smali
api/ApiAffordabilityQuestionInfo.smali
api/LegacyAffordabilityQuestionsResponse.smali
api/ApiAffordabilityQuestionGroupJsonAdapter.smali
api/ApiAffordabilityQuestion.smali
api/ApiAffordabilityQuestion_ChoiceJsonAdapter.smali
api/LegacyAffordabilityAnswersRequestJsonAdapter.smali
api/ApiAffordabilityOptionJsonAdapter.smali
api/ApiAffordabilitySkipOptionsJsonAdapter.smali
api/ApiAffordabilityOption.smali
api/LegacyAffordabilityQuestion.smali
api/ApiAffordabilitySkipAlertJsonAdapter.smali
api/ApiAffordabilityQuestionsResponseJsonAdapter.smali
api/LegacyAffordabilityQuestion_AmountInputJsonAdapter.smali
api/LegacyAffordabilityQuestionsResponseJsonAdapter.smali
api/ApiAffordabilityQuestionInfoJsonAdapter.smali
api/ApiAffordabilityQuestionGroup.smali
api/ApiAffordabilitySkipOptions.smali
api/LegacyAffordabilityQuestion_ChoiceJsonAdapter.smali
api/LegacyAffordabilityAnswersRequest.smali
api/ApiAffordabilityQuestion_CheckBoxJsonAdapter.smali
api/ApiAffordabilitySkipAlert.smali
api/LegacyAffordabilityQuestionSkipOptions.smali
api/ApiAffordabilityQuestion_AmountInputJsonAdapter.smali

1 Like

Business cards seem to have a Boulder grey as well as a Pebble grey option. :face_with_monocle:

A bit more on fraud self reporting and a APP fraud warning.

Some stuff about paid for plans but it looks like it’s all cleverly vague :sweat_smile:.

Thanks!

Looks like four things in progress:

  • Additional warnings to try to combat fraud :no_entry:
  • More work on business accounts (including a choice of card colour: pebble grey or boulder grey) :office:
  • Paid accounts… :moneybag:
  • Stuff on loans :arrows_counterclockwise:
4 Likes

Looks like something to do with charities is being worked on too. :face_with_monocle:

1 Like

Create category, edit category

6 Likes

Ahhh. Good spot!