Fresh Finance
A light, clear, Wise-like financial interface using M green as the active color. Best for payment confidence and fast onboarding.
Risk: can feel too generic if MID and official trust are too quiet.This page is a controlled discussion space for M Wallet design exploration. It helps product, UI, brand, engineering, market, and CX teams compare multiple design routes without changing the official product guide too early.
The goal is not to copy another bank wallet. The goal is to learn from familiar financial UX and then make a distinct M Wallet language around MID verification and FC Chain rails.
A light, clear, Wise-like financial interface using M green as the active color. Best for payment confidence and fast onboarding.
Risk: can feel too generic if MID and official trust are too quiet.A warmer, Monzo-like wallet experience for daily payments, payment requests, receipts, and contact-based transfers.
Risk: can become too casual for government-grade identity.A restrained official account system. It highlights verification, policy gates, signed records, and government communication.
Risk: can feel heavy if daily payment actions are not simple enough.The wallet starts from verified identity and shows assets as financial capability unlocked by MID, NFC card signing, and MPC recovery.
Risk: asset users may need clearer payment shortcuts.FCA, USDF, MXCD Future, IBC account, and selected external assets are arranged as a closed-loop service and payment ecosystem.
Risk: can look like a crypto wallet if identity context is not visible.These are not final screens. They are small layout arguments. Each one asks: what should the user notice first?
Personal account · FC Chain
Action required · MID holder only
FCA, USDF, MXCD Future, BTC, ETH, TRON, SOL, BNB
These schemes translate the design direction into page behavior. They are useful for design reviews because each one states what the first screen prioritizes, which components carry trust, and where the product risk sits.
A fresh finance home screen where MID status, recoverable wallet control, and daily payment actions appear in one calm hierarchy. This should be the default direction for the consumer wallet.
A credential-first layout for digital driving license, address proof, tax number, IBC certificate, and official proofs. It should feel like Apple Wallet, but more official and auditable.
A payment page that feels conversational but only supports payment request, payment note, receipt, and confirmation. This keeps payments human without becoming open chat.
A more operational layout for company accounts, role permissions, official invoices, and service payment records. It should feel business-like without becoming a dense admin system.
A security and recovery design scheme that makes the product difference visible: the user does not lose assets only because a phone or mnemonic is lost, but recovery remains strict and auditable.
Use Scheme 01 as the product baseline, Scheme 02 for the Credential Center, Scheme 03 for Pay, Scheme 04 for IBC, and Scheme 05 for Security and Recovery. This gives M Wallet one consistent system while letting each functional area express its own job.
The key decision is whether the Home page should lead with balance or with DID status. My view: lead with DID status, then balance, because this wallet's unique value is certified and recoverable financial capability.
This gallery turns the product logic into concrete design references. Each card includes a small UI study, the first user signal, the main action, system states, backend anchors, and a discussion question across identity, assets, payments, IBC, government services, recovery, hardware, privacy, operations, policy, and support.
Use when a new user has no approved DID yet. The page should make the wallet promise visible while keeping asset actions locked.
did_application, profile_submission, nfc_card_binding.Use when the user is waiting. The design should reduce anxiety and show that the process is official, signed, and auditable.
review_stage, review_event, issuer_decision.The default consumer home should feel light and financially useful while preserving the MID-first product narrative.
account_summary, asset_balance, security_status.Use for FCA, USDF, BTC, ETH, TRON, SOL, and BNB. External assets are supported for view, receive, and send, but not external-chain swaps.
network_adapter, chain_tx, fee_quote.This is the core payment communication model. It should feel human, but remain structured and auditable.
payment_request, payment_note, receipt.Use when users add each other for future payment requests. It is a payment contact layer, not a social network.
contact, did_lookup, payment_channel.Use for swaps between FC ecosystem currencies and introduced assets where policy allows. This keeps the wallet focused on ecosystem services, not exchange trading.
swap_pair, quote, swap_receipt.Use for official cards and verified certificates. The interaction should resemble Wallet cards but always show issuer, validity, consent, and proof purpose.
credential, proof_request, consent_record.Use when a company account pays an official invoice. The UI must show company context, operator role, invoice signature, and receipt archive.
company, role, invoice, company_receipt.Use for government or system information that must reach users reliably. It should feel signed and official, not like marketing push.
broadcast, issuer_signature, read_receipt.Use when a verified MID holder loses a device or key access. The page should communicate safety and strict process, not convenience alone.
recovery_case, mpc_policy, risk_review.Use when signing identity proof, recovery approval, or protected high-value actions. MID Card proves identity; Vault Card protects higher-value wallet signing.
signing_session, nfc_challenge, vault_policy.Use wherever payment, signing, or credential sharing depends on account context. It prevents users from paying from the wrong identity or company role.
account_context, role_grant, vault_policy.Use to decide the app skeleton. The wallet should not feel like a crypto exchange; navigation should serve identity, payment, credentials, and official services.
feature_flag, account_capability, navigation_state.Use before MXCD is live. The UI should build understanding without implying current availability, guaranteed issuance, or investment value.
asset_policy, eligibility_state, launch_phase.Use to explain USDF professionally and safely: a payment rail intended for USD-denominated use, not a promise that conflicts with future Montserrat stablecoin policy.
asset_disclosure, rail_policy, conversion_reference.Use when users receive BTC, ETH, TRON, SOL, or BNB. The page must prevent wrong-network deposits with clear network selection and confirmation copy.
deposit_address, network_adapter, address_policy.Use before broadcasting external transactions. It should show amount, address, fee, network, confirmation expectation, and irreversible warning.
send_intent, fee_quote, chain_tx.Use for point-of-sale or service counter payments. The wallet should verify merchant identity before payment and create a clean receipt after settlement.
merchant_profile, checkout_intent, payment_receipt.Use for small groups without creating social chat. The wallet sends structured payment requests and tracks who has paid.
payment_batch, payment_request, participant_status.Use when official invoices or service fees have due dates. It should help users avoid missed obligations without silently moving funds.
scheduled_payment, invoice_due_date, reminder_event.Use for user trust and support. Receipts should not be a hidden transaction list; they should be official records across payments, credentials, recovery, and IBC services.
receipt, activity_event, export_job.Use wherever a user pays, swaps, sends externally, or signs a protected operation. The UI should make costs predictable before commitment.
fee_quote, quote_expiry, cost_summary.Use when a network is delayed or unavailable. It should explain impact clearly and prevent users from blaming the wallet for chain conditions.
network_status, service_incident, retry_policy.Use when the wallet prevents a risky action. The block should feel protective, not arbitrary, and should show a safe next step.
risk_signal, policy_decision, step_up_request.Use so users can understand wallet access and security. Device management should connect to MPC recovery and risk controls.
device_session, trusted_device, session_revoke.Use when support must guide the user through strict actions. It should keep support communication structured and auditable.
support_case, case_message, evidence_upload.Use for address proof, license, tax number, and IBC certificates. The wallet should prevent silent expiry from breaking payments or services.
credential_expiry, renewal_case, issuer_review.Use when official services become wallet actions. The design should feel like a trusted service desk, not a commercial app store.
service_catalog, eligibility_check, service_case.Use when a company grants wallet permissions to a director, accountant, or operator. The page must show scope and signing limits clearly.
role_invite, permission_scope, approval_event.Use when the wallet needs Tangem-like card signing for large or sensitive actions. It is separate from the MID Card identity proof.
vault_card, signing_payload, transaction_policy.Use for early users so the wallet's difference becomes clear without long tutorials. Education should appear as timely cards, not marketing pages.
education_card, onboarding_progress, dismissal_event.Use before wallet creation so users understand the difference between a recoverable MPC wallet, MID Card identity signing, and Vault Card protected signing.
wallet_setup_mode, key_policy, card_binding_state.Use when the physical MID Card becomes the identity proof and signing companion. It should feel foundational, not like an optional cold wallet feature.
mid_card_binding, nfc_challenge, identity_signature.Use when a user recovers a wallet through verified MID identity. The interface should show progress, but never make recovery feel casual or instant.
mpc_recovery_case, identity_reverification, cooling_period.Use when the user or risk engine pauses outgoing transfers. This is important because recoverability must be paired with fast damage control.
wallet_freeze, risk_trigger, unfreeze_approval.Use for places where connectivity is unreliable. The wallet can prepare a signed payment request and reconcile it once the device is online.
offline_payment_request, sync_event, request_expiry.Use when the app cannot confirm a network action immediately. The design should prevent duplicate sends and make pending states calm.
transaction_queue, broadcast_attempt, idempotency_key.Use to reduce payment mistakes. Contacts should not be just names; they should carry trust signals, identity proof, and history.
contact_trust_level, did_resolution, address_alias.Use for the limited chat layer we discussed: payment request, payment note, receipt, and simple confirmation messages only.
payment_message, request_status, receipt_event.Use when an IBC sends a payable invoice inside the payment conversation. The payment object should carry invoice data, not just a chat bubble.
invoice_attachment, payable_request, ibc_payment_case.Use when users or IBCs need clean records for tax, accounting, or service proof. It turns wallet history into usable documentation.
receipt_export, statement_period, audit_file.Use for verified merchants who receive frequent USDF payments. It should be simple enough for a counter, but auditable enough for business records.
merchant_account, collection_event, settlement_batch.Use for cashier-style payment. The screen should be readable from a distance, with amount, merchant proof, and expiry visible.
pos_payment_request, merchant_did, payment_expiry.Use when a user authorizes a predictable official or merchant payment. The mandate must show cap, frequency, cancellation, and audit trail.
payment_mandate, spending_cap, mandate_event.Use when an IBC grants operational payment ability without full signing authority. This keeps business payments fast but bounded.
delegated_limit, role_policy, override_request.Use for users who want high-value payments limited to trusted beneficiaries. It is a softer daily alternative to a full wallet freeze.
beneficiary_whitelist, destination_policy, cooling_period.Use when a user is abroad and needs clearer local value display without changing the actual asset or settlement logic.
display_currency, geo_hint, fx_reference_rate.Use to separate asset identity from display currency. This helps users understand USDF, FCA, and external assets without misleading conversion language.
valuation_display, reference_rate, rate_timestamp.Use for BTC, ETH, TRON, SOL, and BNB detail pages. External assets need transparent network information and explorer handoff.
external_asset_account, chain_indexer, explorer_url.Use before first external send or receive. The tone should be calm and practical, not frightening, but the risk must be unmistakable.
risk_acknowledgement, chain_warning, policy_block.Use for business accounts that need more than a token list. The dashboard should show liquidity, obligations, and pending approvals.
ibc_treasury, payable_summary, cashflow_snapshot.Use when IBCs need to pay many verified recipients. It needs validation, clear totals, and a strong approval record.
batch_payment, recipient_validation, approval_signature.Use for sensitive IBC operations. The chain should make it obvious who has acted, who is next, and what policy requires it.
approval_chain, signature_requirement, approval_deadline.Use when official messages carry a task, form, or payment action. Broadcast should connect directly to a safe service flow.
official_broadcast, service_deep_link, deadline_event.Use when the system or government needs to communicate urgent information. It must be visible without causing panic.
incident_alert, service_status, alert_update.Use when a user presents a credential to a person or office. The screen should show exactly what is being shared and what is hidden.
credential_presentation, selective_disclosure, verification_event.Use when several proofs are needed together, such as address proof, tax number, and digital residency status.
credential_bundle, share_link, revocation_event.Use to make identity sharing trustworthy. Users should be able to see what was shared, with whom, when, and whether it can be revoked.
consent_record, data_disclosure, revocation_status.Use for older users, low-vision users, and high-stress payment moments. Accessibility should be a first-class wallet setting.
accessibility_preference, device_setting_sync, ui_mode.Use to keep English as the source while supporting complete Chinese pages. Critical financial terms must stay consistent across languages.
locale_content, term_dictionary, content_version.Use before opening support cases. The wallet should help users understand whether a problem is device, network, policy, or service related.
diagnostic_session, support_case, incident_link.Use to show whether the wallet is fully ready for payments, credentials, recovery, IBC actions, and protected signing.
wallet_readiness, capability_state, next_best_action.Use when an identity proof expires or a higher-risk action requires fresh verification. The message must be firm but not accusatory.
reverification_case, proof_expiry, risk_step_up.Use when submitted identity data conflicts with an existing profile. The user should know exactly what to correct without seeing internal risk language.
profile_mismatch, correction_request, manual_review.Use when an action is blocked by policy, eligibility, or compliance controls. The design should explain the user path without exposing sensitive rules.
policy_lock, eligibility_rule, appeal_case.Use when a payment itself is final, but the service or merchant relationship needs a complaint workflow. It should not promise chargebacks where none exist.
payment_dispute, evidence_upload, case_decision.Use when a merchant sends a refund or voids a receipt. Users need a clear link between the original payment and the returned funds.
refund_event, receipt_link, merchant_case.Use to explain USDF safely as a USD-denominated FC ecosystem payment asset, with reserve or attestation information where policy permits.
usdf_disclosure, attestation_status, issuer_notice.Use to explain why the native FC Chain asset matters even when users mostly pay with USDF. It should be simple, practical, and not speculative.
network_fee_balance, fee_asset, fuel_threshold.Use when the government, a service provider, or a promotional policy covers the network fee. This can make official services feel less technical.
fee_sponsorship, sponsor_policy, fee_receipt.Use for swaps inside the FC ecosystem only. The design should show quote duration, fee, route, and final receive amount without crypto trading clutter.
swap_quote, quote_expiry, fc_liquidity_route.Use when FC ecosystem liquidity cannot support a requested swap. The tone should be service-like, not trading-platform-like.
liquidity_check, route_status, availability_alert.Use when an external asset, network, or token support policy changes. Users need enough time and clear actions to move safely.
asset_support_policy, sunset_notice, action_limit.Use when an app version is too old for sensitive actions. The app should preserve trust by explaining the reason and keeping low-risk access available.
minimum_app_version, security_patch, action_gate.Use when a user moves to a new phone. The flow should feel secure and reassuring, especially because the wallet is recoverable through MID.
device_migration, session_revocation, mpc_share_refresh.Use when a user loses the MID Card. This must be clearly separate from losing the Vault Card or losing the wallet itself.
mid_card_replacement, card_revocation, replacement_order.Use for users or IBCs that need a backup protected signing card. The design should prevent confusion with the MID identity card.
vault_card_set, backup_card_test, signing_device_rotation.Use when users begin a service or IBC task on mobile and continue on desktop. The handoff should never transfer signing authority silently.
session_handoff, handoff_challenge, session_scope.Use when users want to close or pause the wallet. It should protect records, revoke credential shares, and avoid stranded assets.
account_closure, data_export, credential_revocation.Use for long-term account safety planning. This is sensitive and should be policy-led, with strict identity, waiting periods, and legal controls.
trusted_access_plan, inactive_account_policy, legal_review.Use as a reference for the internal side of the product. The wallet experience depends on clear review queues, assignment, and audit trails.
review_queue, case_assignment, operator_audit.Use for the team to discuss how official messages are authored, targeted, approved, scheduled, and audited before reaching wallets.
broadcast_composer, audience_segment, approval_workflow.Use for companies moving from registration to operational wallet use. It should show director verification, wallet capability, and pending blockers.
ibc_kyb_case, director_link, company_wallet_state.Use when an official service has multiple fee lines. Users should see what each fee means before signing or paying.
service_fee_quote, fee_line_item, payment_instruction.Use as a reference for agencies or approved issuers that create, renew, revoke, and audit digital credentials inside the ecosystem.
credential_issuer, issuance_event, revocation_registry.Use when a user shares diagnostic data with support. The product should show what support can see and let users stop sharing.
support_data_grant, data_redaction, grant_expiry.Use when the system adds friction. The user needs a plain reason without exposing fraud-detection internals or enabling circumvention.
risk_level, step_up_reason, friction_policy.Use to align product, engineering, and analytics around meaningful events instead of scattered button clicks.
product_event, funnel_state, analytics_contract.Use to keep samples from becoming disconnected art. Color, elevation, spacing, and state tokens should map to product meaning.
design_token, component_state, theme_mapping.Use to make first-use screens helpful instead of blank. Empty states should point to one useful next action and explain the value of the page.
empty_state_reason, first_action_hint, permission_state.Use for failed payment, signing, recovery, and service actions. The most important message is whether funds moved and what the user can safely do next.
failure_outcome, safe_retry, support_escalation.Use to separate mandatory official or security notices from optional product and merchant messages. Users should feel in control without missing critical information.
notification_preference, required_notice, delivery_channel.Use when the wallet has many messages. Critical notices should be grouped by action and deadline, not mixed into a generic message list.
inbox_priority, message_category, action_deadline.Use when policy requires the user or IBC to explain funds before a high-value action. The flow should feel professional and bounded.
source_of_funds, compliance_request, document_evidence.Use when a transaction crosses a policy or risk threshold. The user should see why the review exists and which actions remain possible.
large_transaction_review, threshold_policy, review_outcome.Use when legal or policy restrictions limit access. The copy must be calm, precise, and avoid implying wrongdoing by the user.
jurisdiction_policy, service_eligibility, restriction_notice.Use when a transaction enters compliance monitoring. The UI should avoid exposing detection rules while keeping the user informed.
monitoring_case, case_status, compliance_hold.Use when BTC, ETH, TRON, SOL, or BNB deposits need network confirmations before becoming spendable.
deposit_confirmation, required_confirmations, chain_event.Use to make external addresses safer for repeated use. Labels must remain user-controlled and not imply verified identity unless confirmed.
address_label, external_address_book, label_origin.Use when a merchant or user wants to send a payment request outside the wallet chat. The link must preserve verified recipient and expiry.
payment_link, request_token, expiry_policy.Use when a merchant applies to receive verified wallet payments. The flow should make the difference between personal, IBC, and merchant accounts clear.
merchant_onboarding, merchant_kyb, merchant_capability.Use for shops where staff need to accept payments without seeing full business treasury or signing authority.
merchant_staff_role, terminal_session, permission_scope.Use when IBC or merchant wallets need external accounting. Start with export formats before promising deep two-way integrations.
accounting_export, ledger_mapping, statement_file.Use when invoices, receipts, and payments do not match exactly. This is a practical business-wallet feature, not a crypto feature.
reconciliation_case, invoice_match, ledger_exception.Use to explain USDF as a transitional USD-denominated FC ecosystem payment asset that prepares users for a future Montserrat stablecoin without overclaiming.
asset_transition_notice, stablecoin_migration, issuer_status.Use to prepare for future MXCD or sovereign stablecoin features without presenting them as currently usable financial products.
future_asset_interest, eligibility_waitlist, availability_notice.Use before a user first holds or uses a stable asset. It should be readable, auditable, and versioned.
asset_disclosure, terms_acceptance, disclosure_version.Use when a verified third party asks the user to share credentials. The wallet must make verifier identity and requested fields unmistakable.
proof_request, verifier_identity, requested_claims.Use before credential sharing. Users need to trust not just the credential, but the party requesting it.
verifier_registry, verification_purpose, trust_status.Use when an issued credential is revoked, suspended, or no longer valid. The user must see consequence and appeal or renewal route.
credential_revocation, revocation_reason, appeal_route.Use when a credential renewal includes a fee and deadline. This links official credential lifecycle to wallet payment logic.
credential_renewal, renewal_fee, scheduled_payment.Use for elderly users or busy business owners who need help managing requests without giving away signing authority.
helper_access, delegated_permission, approval_required.Use when a user nominates a trusted person or institution to support recovery evidence without receiving custody.
recovery_nominee, nominee_verification, recovery_evidence.Use when the protected signing card is lost. Freeze signing authority while keeping identity and wallet visibility separate.
vault_card_lost, signing_freeze, vault_rebind.Use when a user forgets a MID Card or Vault Card PIN. The flow must distinguish card access recovery from wallet recovery.
card_pin_reset, pin_attempt_policy, card_unlock_event.Use when a verifier needs proof but network access is unreliable. The UI should make freshness and expiry clear.
offline_identity_proof, proof_expiry, verification_sync.Use when users monitor external addresses or company reserves without importing signing authority into M Wallet.
watch_only_account, read_only_address, balance_alert.Use when new wallet capabilities ship. Release notes should explain user value, risk changes, and any action needed.
release_note, feature_education, version_notice.Use during design review so every sample is checked for readability, state logic, risk language, localization, and engineering mapping.
design_review_item, qa_status, decision_record.This sample upgrades the top identity banner into a DID status centre. It keeps the wallet familiar, but makes submit, KYC, Government review, failure, and mint-ready states explicit enough for product, design, and engineering teams to discuss together.
The wallet should speak the same language as the protocol layer: did:mid, DID credential, and DID approval. EID reads like a separate product and weakens technical consistency.
The credential state must explain whether the wallet is usable before asset actions compete for attention. This keeps compliance and user action aligned.
Submit, Track, View, Fix, and Mint DID each map to a specific backend state. The UI should avoid generic banners that leave the next step unclear.
Send, receive, swap, and history can stay visible, but they should be disabled until approval unlocks wallet utility. This makes policy gates visible without hiding future value.
This keeps design reviews practical. A beautiful direction is not enough if it weakens trust, recovery confidence, or engineering clarity.
Use this section during team review meetings. It turns subjective feedback into product-level direction.
Identity status, balance, payment task, official notice, or asset rail. The first signal should match the page purpose.
MID verification, NFC card signing, MPC recovery, receipts, and official broadcasts must be visible without overwhelming the user.
Payments should remain fast. Credentials should remain scannable. Risk states should be calm and actionable.
Each UI state should map to a backend state, audit event, permission rule, or receipt outcome.
Prototype three higher-fidelity page sets: Fresh Finance, Civic Trust, and MID-First Identity. Keep the same screens in each set: Home, Pay, Credential Center, IBC Account, and Recovery.
The final M Wallet style will likely combine Fresh Finance for daily payments, Civic Trust for official actions, and MID-First Identity for the product narrative.
When an exploration becomes stable, update the team guide, storyboard, UI system, and engineering spec.