×
Services
Exchange & Trading Infrastructure
DeFi & Web3 Core
NFT Ecosystem & Multi-Chain
Tokenization & Fundraising
Crypto Banking & Fintech
AI Development
Custom Development
Exchange & Trading Infrastructure
Create a centralized crypto exchange (spot, margin and futures trading)
Create a centralized crypto exchange (spot, margin and futures trading)
Decentralized Exchange
Development of decentralized exchanges based on smart contracts
Stock Trading App
Build Secure, Compliant Stock Trading Apps for Real-World Brokerage Operations
Custom Trading Software
We build proprietary trading systems from the order management layer to the signal engine
P2P Crypto Exchange
Build a P2P crypto exchange based on a flexible escrow system
Centralized Exchange
Build Secure, High-Performance Centralized Crypto Exchanges
Crypto Trading Bot
Build Reliable Crypto Trading Bots with Real Risk Controls
Crypto Launchpad Development
Build crypto launchpad platforms that handle the full token launch lifecycle
DeFi & Web3 Core
Web3 Development
Build Production-Ready Web3 Products with Secure Architecture
Web3 App Development
Build Web3 Mobile and Web Apps with Embedded Wallets and Token Mechanics
DeFi Wallet Development
Scale with DeFi Wallet Development: from DEX and lending to staking systems
DeFi Lending and Borrowing Platform
Build DeFi Lending Protocols — Overcollateralized Pools, Flash Loans, and Credit Delegation
DeFi Platform Development
Build DeFi projects from DEX and lending platforms to staking solutions
DeFi Exchange Development
Build DeFi Exchanges — AMM, Order Book, Aggregator, and Hybrid Protocols
DeFi Lottery Platform
Build DeFi Lottery Platforms — Provably Fair Jackpots, No-Loss Savings, and NFT Raffle Protocols
DeFi Yield Farming
Build DeFi yield farming platforms with sustainable emission models and multi-protocol yield aggregation
NFT Ecosystem & Multi-Chain
NFT Marketplace Development
Build NFT marketplaces from minting and listing to auctions and launchpads
NFT Music Marketplace
Build NFT music marketplaces where artists mint, sell, and license music as tokens
NFT Wallet Development
Build non-custodial NFT wallets with multi-chain asset support, smart contract integration
NFT Launchpad Development
Build NFT launchpads where projects raise capital, mint tokens, and onboard communities
Tokenization & Fundraising
Real Estate Tokenization
Real estate tokenization for private investors or automated property tokenization marketplaces
Crypto Banking & Fintech
Build crypto banking platforms with wallets, compliance, fiat rails, and payment services
Build Secure Crypto Wallet Apps with a Production-Ready Custody Model
Crypto Payment Gateway
Create a crypto payment gateway with the installation of your nodes
Mobile Banking App
We build secure, regulation-ready mobile banking applications for fintech startups and financial institutions
AI Development
AI Development
We build production-ready AI systems that automate workflows, improve decisions, and scale
LLM Development Company
We design and build production-grade large language model solutions
Enterprise AI Development
We build enterprise AI systems - agents, LLM integration, and predictive analytics
AI Chatbot Development
We build AI chatbots powered by LLM agents, RAG pipelines, and multi-agent orchestration
Custom Development
CRM Software Development
We build custom CRM systems from scratch — multi-role architecture, automated workflows
Marketplace Development
We build two-sided marketplaces from scratch — with multi-role architecture and payment escrow

How to Create a Crypto Wallet App: [Ultimate Guide 2026]

You have read
0
words
Yuri Musienko  
  Read: 12 min Last updated on September 2, 2026
Yuri - CBDO Merehead, 10+ years of experience in crypto development and business design. Developed 20+ crypto exchanges, 10+ DeFi/P2P platforms, 3 tokenization projects. Read more

Crypto wallet app development means building the software layer that generates keys, derives addresses across blockchains, signs transactions, and reconciles balances against on-chain state. The mobile interface is the smallest part of that work. In a full multi-chain build, backend consumes roughly twice the engineering hours of the mobile client.

A production wallet consists of six architectural layers:

  • Key layer — BIP32/BIP39/BIP44 HD derivation, or MPC/TSS if you split key control across devices. Runs inside Secure Enclave on iOS and Android Keystore on Android.
  • Chain abstraction layer — one interface over Bitcoin UTXO logic, EVM account logic, Solana, and Tron, so adding a network is configuration rather than a new integration.
  • Node and RPC layer — self-hosted nodes, a node provider such as Alchemy or QuickNode, or both with automatic failover.
  • Indexing layer — detects inbound deposits, tracks confirmations, and feeds balance state. Wallets that skip this miss deposits that already confirmed on-chain.
  • Compliance layer — KYT screening on every inbound transaction, whitelisted source addresses, AML scoring before a balance is credited.
  • Operations layer — hot wallet liquidity monitoring, gas sponsorship, deposit sweeps, and an audit trail that records who moved what and what the balance was before and after.

Budget and timeline: a non-custodial wallet supporting 10 blockchains with two native apps and an admin panel runs $62,000–$74,000 over 2–3 months. A full multi-chain product at the scale of Exodus — desktop, mobile, web, 30+ networks, hardware wallet integration — takes roughly 5,800 engineering hours across a team of six, or 4–6 months.

The Four Decisions That Set Your Wallet Budget

Most wallet projects go over budget because a team picks a UI framework in week one and defers the architectural decisions to week six. By then the accounting model is already written, and reversing a custody or address decision means rewriting it.

Four decisions drive nearly all of the cost and the compliance burden. Make them before design starts.

Decision Options What it drives Reversible later?
Custody model Non-custodial / custodial / MPC-based Regulatory exposure, key management cost, whether you register as an MSB No
Deposit address model Address per user / payment provider / shared buffer wallet Attribution, AML isolation, monthly infrastructure cost Very expensive
Node strategy Self-hosted / node provider / hybrid with failover Uptime, licensing eligibility, project critical path Partially
Chain scope at launch 1–2 / 10 / 30+ networks Direct linear cost — roughly 32 hours per network Yes, if abstracted

Custody: Where the Private Key Actually Lives

Non-custodial describes a legal position, not an architecture. What matters technically is which process holds the material that can sign a transfer, and whether anyone on your team can reach it. That question sits underneath every other choice in Web3 crypto wallet development, and answering it late is what turns a three-month build into a six-month one.

We work with three infrastructure patterns, and they map to different regulatory situations rather than different quality tiers.

Pattern How it works Best fit Trade-off
Third-party node providers (Alchemy, QuickNode) Remote master nodes plus RPC access; the platform holds keys Teams that need to list new tokens quickly and scale Web3 functionality You depend on the provider's uptime and rate limits
Self-hosted nodes Your own Bitcoin and Ethereum nodes inside your perimeter Jurisdictions where the licence requires it — we have deployed this to satisfy Georgian licensing requirements, and similar conditions apply if you plan how to start a crypto business in Dubai Sync time, hardware, and ongoing node operations
Custodial service (Fireblocks and similar) Enterprise custody with policy engine and insurance Institutional products with a fixed token list Limited token coverage, minimal customisation

One rule cuts across all three. In every exchange and wallet deployment we run, key management sits outside developer access, withdrawals above a threshold require manual approval in the back office, and 2FA guards the user-facing side. If your engineers can read private keys from a staging environment, custody model is irrelevant — you already have the vulnerability.

Security in crypto is not about code quality. It is about key ownership and who can approve a withdrawal. If your team can access private keys, the architecture already failed.

Teams building self-custody products for DeFi users generally land on the same conclusion we reach in DeFi wallet development projects: the key never leaves the device, and everything else is an interface problem. If you are attaching a wallet to a fintech gateway with fiat rails, the calculus changes, because how to use KYC stops being optional the moment you touch fiat.

Deposit Address Architecture — and the Attack Most Teams Miss

If your wallet accepts inbound deposits, you choose one of three address models. This decision determines your attribution accuracy, your AML posture, and a recurring line in your monthly infrastructure bill.

Model A — one address per user

The platform generates a dedicated address per user through its own node or a node provider. Every deposit maps unambiguously to a user, a request, and an internal ledger entry. After the KYT check clears, clean assets sweep to the hot wallet. If a risky deposit lands, you archive the address rather than delete it, and isolate the funds into a separate contour. Archiving matters more than it sounds — recovery cases need that history.

Model B — external crypto payment provider

The user goes to the provider, receives an invoice and a generated address. The provider handles address generation, payment processing, whitelist and archive logic, and part of the monitoring. Faster to ship, higher per-transaction cost, and you inherit an external dependency.

Model C — shared buffer wallet with manual verification

The admin sets a buffer address, the user sends funds, copies the transaction hash, and attaches it to their request. An operator verifies the hash and the amount manually. In one of our workshops we estimated this model at roughly ten times cheaper in monthly maintenance than running your own node. That number is a preliminary estimate, not a final budget — but the direction is real.

Model C also carries an attack that most teams do not model until it happens in production.

Transaction hash reuse on a shared wallet. User A sends 100 USDT to the shared address. User B opens a parallel request for the same amount, finds A's transaction on TronScan, and attaches A's hash as proof of their own payment. Checking hash uniqueness in your database removes the duplicate but does not solve competing attribution: with two open requests for an identical amount, the system still cannot prove who actually sent the funds.

A first-come-first-credited rule invites disputes, because the real payer can demonstrate that the transaction originated from their wallet. On top of that, a shared address exposes every user's deposit history through a block explorer, and mixes clean and risky funds into a single AML profile.

A transaction hash proves that a transfer happened. It does not prove that the person who attached it is the sender. Blockchain gives you an immutable audit trail, but correct attribution stays an architecture problem.

Buffer wallet as a quarantine layer

Where compliance risk matters more than transaction cost, we insert a buffer wallet between the outside world and the treasury: deposit lands on a temporary wallet, KYT runs, the source wallet gets verified, and only cleared funds move to the hot wallet. The engineering cost is a second transaction — gas calculation, network fee accounting, and an explicit decision about who covers the internal transfer fee. The user typically pays the first fee. The second one is a business decision you should make before implementation, not after.

Find out
how much it
costs to develop
your crypto wallet app
Share your requirements with our Solutions Architect — we'll send back a per-module hour breakdown within 48 hours, at no cost.
Request an estimate

Node Infrastructure: The Item That Silently Owns Your Timeline

Blockchain node integration is the most consistently underestimated line on a crypto project plan. Not because the integration is hard, but because synchronisation takes calendar time you cannot compress.

Network Full node sync time Effect on the plan
BNB Smart Chain 1–3 days Low risk
Tron 1–3 days Low risk
Ethereum 1–3 days Low risk
Bitcoin 5–10 days on dedicated hardware, longer on shared infrastructure Becomes the critical path if you start it late

We have watched Bitcoin sync delay a production launch by more than a week on projects where every line of code was already merged. Our standing rule now: spin up nodes in week one of any crypto project, in parallel with development, regardless of whether integration work has started. It costs nothing to start early and it removes an entire category of launch-week panic.

Each additional network carries a measurable price. From our own estimation sheets, a standard node — Bitcoin, Litecoin, Ethereum, BNB Chain, Tron, Cardano, Dash, Dogecoin, Monero, NEO, XRP, Zcash, Waves, Polygon — costs 24 development hours plus 8 DevOps hours. Solana, Arbitrum, Algorand and similar chains cost 32 development hours plus 8 DevOps. Token integration inside an existing network adds another 24 hours, except Solana tokens at 46.

Multi-chain support is a linear cost, not a one-time feature. Thirty networks means roughly 960–1,100 hours of node integration alone, before any business logic touches it. Design the abstraction so a new chain is a config entry, not a sprint.

The same reasoning governs RPC strategy. A single node provider without failover looks cheaper on day one and produces failed transactions, delayed confirmations, and wrong balances the first time that provider degrades. Run at least one backup provider from launch. This is the same redundancy logic that shapes crypto exchange architecture at any meaningful volume.

Mobile Security: What Actually Runs on the Device

Half the security scope of a wallet app lives on the phone, and most guides skip it entirely. Here is what we implement by role, mapped to OWASP categories.

Layer What we implement
iOS / Android client Key material inside Secure Enclave and Android Keystore. Biometric login with a PIN fallback — never one without the other. Certificate pinning. Never store access tokens where the OS can leak them. Time-limited tokens handled correctly, without reuse. Reject insecure connections outright.
Backend Server-side RBAC or ABAC. Parameterised queries and input sanitisation. Nonce validation against replay. Locks and transactions around every balance-affecting operation to close race conditions. Rate limiting per IP and per wallet, plus payload size limits.
DevOps Hardened containers and CI/CD, code signing and artifact verification, protected branches. Centralised logging with anomaly detection. WAF and rate limiting at the reverse proxy, Cloudflare or AWS Shield for DDoS. TLS 1.2+ enforced across every environment.

Two authentication details cause more support tickets than anything else in a wallet. First, 2FA codes: we set a real 30-second lifetime and enforce single use, and when a user enters a wrong code the modal stays open with an inline error instead of collapsing the whole flow. Resetting a user to the start of authentication because they mistyped six digits is a self-inflicted abandonment problem. Second, email verification links with a 24-hour TTL need an explicit recovery path — we have seen an address get stuck in limbo where the user could neither finish verification, nor re-register, nor request a new link.

For the broader threat model behind these choices, the mechanics of security of blockchain technology explain why client-side hardening cannot substitute for server-side validation. Once a wallet holds pooled funds rather than individual keys, the threat surface converges with crypto exchange security and the withdrawal approval flow becomes the control that matters most.

The Wallet as a Web3 Client

The moment your wallet talks to contracts rather than just moving balances, it becomes a signing client for other people's code. That changes the security model: you are no longer validating your own transactions, you are asking a user to approve something written by a third party.

Three pieces do the work. WalletConnect v2 or the MetaMask SDK handles the session with external applications. A dApp browser or deep-link handler routes the request into the app. And a signature preview screen renders what the user is actually approving — the target contract, the method, the token allowance, and the network. Unlimited-approval prompts should be visually distinct from a transfer, because they are a different class of risk and users treat them identically without help.

Two decisions follow from this. If your users will interact with lending, staking or swap protocols, the interaction patterns from how to create a DeFi app determine what your preview screen has to decode. And if you plan to ship your own contracts alongside the wallet — a referral programme, a staking module, a token — treat how to develop a smart contract as a separate workstream with its own audit, rather than a backend ticket. Wallet teams that fold contract work into the app sprint end up shipping unaudited code into a product whose entire value proposition is safety.

On EVM chains specifically, the tooling around Ethereum dApp development gives you most of the decoding primitives — ABI parsing, event logs, allowance inspection — without building them from scratch. Account abstraction under ERC-4337 adds another option worth evaluating early: smart accounts let you sponsor gas through a paymaster and implement social recovery, which removes the seed phrase from the onboarding flow entirely. That is a genuine conversion lever, and it is far cheaper to design in than to retrofit.

Transaction Lifecycle: Model It Properly or Ship Wrong Statuses

A recurring architectural failure we find in wallet code reviews is a transaction model with three states — pending, success, failed. Real transactions move through seven, and collapsing them produces a UI that lies to the user.

State What it means What the UI should show
Created Intent recorded, nothing signed Draft, cancellable
Signed Signature produced on device or HSM Preparing
Submitted Broadcast attempted to an RPC endpoint Sending
Propagated Present in the mempool In mempool, with fee bump option
Confirmed Included in a block Confirmations counter
Finalized Past the reorg threshold for that chain Complete, balance credited
Expired Dropped or never mined Explicit failure with a retry path

Two practical consequences follow. Balance credit belongs at finalized, not confirmed, and the reorg threshold differs per chain. And every backend error code needs a mapping to a user-facing message — we have seen a raw "insufficient gas" response with internal details reach an end user, which helps nobody. Keep the technical cause available for diagnostics and show the user what happened, what it means, and what to do next.

KYT and AML: Compliance as Architecture, Not a Checkbox

Running an identity check once at registration and trusting everything afterwards is the pattern regulators now treat as insufficient. In production we wire transaction screening into every inbound deposit.

Two-tier KYT on deposits. The user adds a wallet address to their profile first. That address goes through a KYT check via Crystal, and only after it clears does it enter the whitelist and the platform reveal a deposit address. Then, separately, the system compares the actual sending address against the whitelisted wallet the user selected before the transfer. A mismatch freezes the funds pending manual review. A whitelist only works if a mismatch automatically freezes the deposit — an informational warning changes nothing.

AML scoring before credit. Every inbound transaction receives a risk score before the balance updates. Above threshold, the system creates an admin review task and holds the deposit. The user does not see a balance change until a compliance officer clears it.

Forced address regeneration. When the scoring system or a compliance officer flags a deposit address, the platform automatically generates a new deposit address for that user across every supported network and retires the flagged one. Future deposits to the old address get rejected or quarantined. The user sees a neutral notice — the address was updated for security reasons — which breaks the association without exposing the compliance trigger.

Deposit routing by risk profile. Rather than one hot wallet, we run several, created through the admin panel, each labelled by geography, entity type, and risk profile. The user binds to a hot wallet at the account level, not the address level, and a deposit address locks to its hot wallet after first use. That gives operators the ability to move a user between contours without stopping the platform.

This is the same segmentation logic that shows up when teams work out how to build a crypto exchange, and a wallet that later grows into a trading product will need it either way. Routing the first deposit uses either deterministic rules — entity type, geography — or first-deposit source analysis through an AML provider. Since not every provider returns source attribution, the deterministic fallback is mandatory rather than optional.

We do not build one hot wallet. We build isolated financial contours, and we move users between them under control. Changing a deposit address is a risk management tool, not a technical operation.

On the identity side, we run KYC through SumSub as the primary provider, and in localised configurations we support national ID verification through a government identity app alongside standard document upload. Dual-path KYC means maintaining two verification state machines in the backend, because each provider sends different webhook payloads and different status transitions. Separate that from account type: individual, legal entity, and a distinct "not set" state for users who registered but have not chosen yet. Corporate onboarding is a different route with its own document package, not an extended personal form.

Launch your crypto wallet app
get a personal technical solution
Contact us

Case: Adding a Perpetual DEX Inside a Live Non-Custodial Wallet

Challenge. A client ran a working non-custodial wallet on iOS and Android, built on TrustWalletCore, with an in-house team committing to the same repository daily. We had to embed a full perpetual futures module inside the app — as a section users never leave, not a separate product. Two independent development streams in one codebase where any conflict touches key derivation and transaction signing is not a merge problem, it is a risk of losing user funds. On top of that, the client wanted futures without operating exchange infrastructure.

Solution. We split the codebase first: a private fork of their Bitbucket repository that the client could not access, from which we submitted pull requests into their main repo for their tech lead to review and merge. Integration responsibility stayed on their side, and our velocity stopped depending on their release cycle.

Then we chose the perp infrastructure. We evaluated dYdX v4 — a Cosmos AppChain, sovereign but requiring a validator set and indexer — GMX on EVM with liquidity confined to Arbitrum and Avalanche, and HyperLiquid through its API. For a mobile use case where the client did not want to operate infrastructure, HyperLiquid won: documented API, latency competitive with centralised venues, and enough depth on BTC, ETH and SOL for retail flow. Teams that need operational independence instead should look at what a dYdX clone script actually involves, because the sovereign AppChain model is a different budget entirely.

Inside the wallet we shipped the markets list linked to swap and trade, TradingView charting, the order book, limit, market and stop-limit orders, TP/SL, cross and isolated margin, leverage selection, positions, open orders, order and trade and transaction history, deposit and withdraw, portfolio, and a referral programme.

Result. Three months from start to handover for the complete module, with zero interruption to the client's parallel roadmap — their team kept shipping wallet features throughout. We stated the trade-off explicitly at kickoff and record it as part of the decision: trading uptime now depends on HyperLiquid rather than on us.

Forking a client's production repository is not a convenience for the delivery team. It is risk isolation. In a wallet codebase, a careless merge into key derivation code has a worse blast radius than a broken build — and unlike a broken build, it can ship silently. If you run parallel teams on one wallet repo, define the merge boundary before the first commit.

Case: Gas Economics, Liquidity Alerts, and the Audit Trail Gap

Challenge. To sweep USDT from user deposit addresses into the hot wallet on Tron, the platform pre-funded each deposit address with roughly 15 TRX to cover the network fee. As the user base grew, that turned into a permanent TRX drain plus a recurring incident class: an address without TRX is a blocked sweep. Meanwhile the operations team had no proactive signal when hot wallet liquidity ran low, and after a Kubernetes migration we discovered that part of the logging functionality had not made it into the deployment at all.

Solution. We replaced address pre-funding with delegated resources from an external Tron resource provider. The transaction became three-stage: delegate resources, execute the USDT transfer from the deposit address to the hot wallet, then reclaim the delegated resources.

We validated end-to-end rather than screen by screen: a 3.5 USDT deposit, against a 3 USDT platform minimum, verified through confirmation in the user cabinet, arrival at the deposit address in the block explorer, the presence of delegate and reclaim in the chain, the transfer to the hot wallet, and the admin panel record carrying both transaction ID and destination wallet. We also separated user-side fee from platform cost in accounting — they are different entities from different data sources, and mixing them destroys the unit economics of blockchain operations.

For liquidity we built threshold alerting at the equivalent of $800 per asset, delivered to a dedicated Telegram group. Each message carries the coin, the network, the current native balance, the USDT equivalent, the configured threshold, and the exchange rate used for the conversion. Anti-spam logic caps the sequence at five messages ten minutes apart, and stops the moment the balance recovers.

On the audit trail we swept every action-oriented tab of the admin wallet module rather than testing one operation. We found a concrete gap: viewing a deposit address produced a log entry, while an actual withdrawal from the hot wallet produced no audit record. We fixed the required fields — who initiated it, when, the requested amount, the amount actually sent, the remaining balance, and the final status.

Result. Effective blockchain fee for the internal sweep now shows as zero in accounting, because the platform consumes a delegated resource instead of spending TRX. An empty TRX balance on a deposit address no longer blocks consolidation. Operators get a liquidity signal before withdrawals stall, without drowning in notifications. We do not have before-and-after MTTR figures for the audit trail work — that result stays qualitative.

After an infrastructure migration we retest the business function and its observability. For a financial system, an operation without an audit record is an unfinished operation — during an incident you will not be able to say who moved the funds, from what balance, with what outcome.

Tech Stack That Holds Up in Production

Our default stack for a multi-chain wallet, drawn from what actually shipped rather than what reads well on a slide.

Layer Stack Note
Mobile Kotlin, Java, Swift; TrustWalletCore for key and signing primitives Native beats cross-platform where Secure Enclave and Keystore access matters
Web / desktop React 16+, Redux, TypeScript; C++11 with Qt 6 and OpenSSL for desktop builds Desktop targets Windows 7+ 32/64-bit and macOS 10.12+
Backend PHP 8+ with Laravel or Node.js LTS with Express; PostgreSQL or MySQL; Redis Microservice architecture from the start if you plan more than 10 chains
Blockchain web3.js, ethers.js, bitcoinjs, solana-web3; Alchemy or QuickNode with fallback RPC Never a single provider
Queues and events Kafka or Redpanda, RabbitMQ, or Laravel Horizon Every deposit and withdrawal as an independent job, not a cron pass
Infrastructure Docker, Kubernetes, Helm, HashiCorp Vault wired into GitLab CI, Horizontal Pod Autoscaler Vault keeps secrets out of the repo and out of developer laptops

One Kubernetes detail catches teams new to this. In one exchange deployment we migrated 17 microservices from monolithic VMs to full orchestration, and the non-obvious lesson was that not everything should autoscale. Order book services and wallet services carry state dependencies that make horizontal scaling non-trivial. Define a scaling policy separating stateless services — API gateway, notifications — from stateful ones such as the wallet manager, and define it before you write Helm charts. Doing it afterwards means rewriting them.

Queue design deserves the same attention. Cron-driven sequential processing works until it does not, and the failure mode is latency under load rather than an error you can catch in staging. Treat every deposit and every withdrawal as an independent job, and split the deposit and withdrawal streams. The queue is not an optimisation you add later, it is the thing that lets the system grow linearly. The same principle carries over to how to create crypto payment gateway workloads, where inbound volume is bursty by nature.

Cost and Timeline: Real Numbers From Our Estimates

The figures below come from our own commercial estimates and hour breakdowns rather than market averages. Two caveats up front: the source documents date from 2022, so treat the dollar figures as structural rather than current, and hours are the more durable number — they have moved far less than rates.

Non-custodial wallet with exchange

Component Basic Standard Maximum
Backend + admin panel $40,000 $62,000 $74,000
Landing web app $5,000 $6,500 $6,500
Cross-platform app $12,000 $16,000 $18,000
Two native apps $22,000 $26,000 $28,000
Blockchains for hot wallet generation 10 30 + NFT support 50 + NFT support
Timeline 2–3 months 2–3 months 2–3 months

Microservice architecture applies to all three tiers. Payment structure runs 20% upfront covering documentation, architecture and design, then three milestones at 30/30/20 split half prepaid and half on delivery, with a 90-day warranty.

Going from 10 to 50 supported networks adds roughly $34,000 to the backend — about $850 per additional chain at package scale. That is the real cost of the word "multi-chain," and most estimates never surface it. For comparison against a heavier product in the same stack, our figures on crypto exchange development cost show where the curve steepens once a matching engine enters the scope.

Custodial wallet

A light web-first custodial build runs $25,000–$43,000 for the web app, $10,000–$18,000 cross-platform, $14,000–$24,000 for two native apps, over 1.5–2 months. The full configuration — backend and admin at $28,000–$36,000, web at $24,000–$29,000, cross-platform at $25,000–$31,000, two native apps at $39,000–$46,000 — takes 2–3 months plus a one-month discovery phase, and includes 5 to 10 blockchain nodes, one to three payment gateways, KYC service integration, rate parsing, a support ticket system, and cold wallet integration at the higher tier.

Custodial looks 15–25% cheaper than non-custodial at the outset because less blockchain logic runs on the client. What it adds instead is mandatory rather than optional: KYC and AML integration, node deployment, and a fiat gateway.

The discovery month is not padding — that is where you fix the deposit address model, and changing it later means rewriting the accounting layer. If you are pairing a wallet with banking rails, the scope of crypto banking app development sits on top of everything listed here.

Cold wallet software

Configuration Price Timeline
Mobile apps (iOS/Android), 10 nodes, NFC, fiat provider $84,000 2–3 months + 1 month discovery
Web app, 10 nodes, microservices $96,000–$97,000 2 months + 1 month discovery
Web app, extended scope $115,000 3 months + 1 month discovery
Mobile apps, 10 nodes, NFC, fiat $119,000 2–3 months

The functional core is identical across configurations: key generation, private key storage, PIN validation, transaction signing, wallet recovery, biometric login, a 6-digit PIN, transaction signing over secure NFC, Key Card activation and restore, a protected-time setting at 5, 15 or 30 minutes, and auto-lock from immediate to five hours. The difference from a standard mobile wallet is not the interface — it is that the private key never enters the application. The device signs, and the app only builds and broadcasts.

Hour breakdown for a full multi-chain build

From the estimate for a wallet at the scale of Exodus, covering desktop, mobile and web:

Track Hours
Backend 1,865
Desktop 1,022
Frontend 1,010
Mobile 894
Investigation / R&D 600
DevOps 436
Total ≈ 5,827 hours

Six people, 4–6 months depending on package. Three things stand out. Backend takes double the mobile hours — the product looks like a mobile app and costs like a backend system. The 600 hours of investigation are a budget line, not a contingency buffer; they cover network behaviour, address derivation, and provider quirks, and projects that delete that row pay for it later in rework. And hardware wallet integration is 144 hours for Ledger, 244 each for Trezor, SecuX and KeepKey. "We'll support Ledger and Trezor" is 388 hours — close to a full month of team time, not a checkbox.

For a wider view of how these numbers scale across blockchain products generally, our breakdown of how much does blockchain technology cost covers the same estimation logic applied to non-wallet systems.

Mistakes We Keep Finding in Wallet Code Reviews

These are architecture failures, not bugs. Each one costs more to fix after launch than to prevent in discovery.

  • Plain-text seed storage. We reviewed a wallet that stored recovery phrases unencrypted in a database. Key material belongs in encrypted, isolated storage, and key management belongs in the architecture document, not the backlog.
  • No chain abstraction layer. Teams integrate several blockchains directly and end up with fragile, inconsistent transaction logic that breaks differently on every network.
  • Collapsed transaction states. Three states instead of seven produces a UI that shows wrong statuses under load.
  • Single node provider, no fallback. Cheaper on day one, and it produces failed transactions and wrong balances the first time the provider has an incident.
  • Missing or weak indexing. If the indexing layer is thin, deposits that confirmed on-chain never get detected, and support absorbs the difference.
  • Single liquidity provider for swaps. One API degrades and swap functionality stops entirely. Integrate a secondary provider from day one — we would do this differently on a past project if we ran it again.
  • Incremental IDs. Sequential identifiers invite enumeration attacks. Move to long UIDs, and account for the routing changes that creates in a microservice setup.
  • Confusing three different limits. Minimum deposit, dust threshold, and minimum withdrawal per asset and network are three separate business rules. Merging them into one parameter reliably produces crediting or withdrawal errors.

One more, on release readiness. We do not consider a wallet launch-ready until deposit and withdrawal flows have run with real mainnet assets — real USDT, real BTC, real ETH. Testnet behaviour diverges in ways that matter: confirmation times vary with congestion, fee estimation behaves differently under real mempool conditions, and network-economic minimums only appear with real value at stake. Expect non-deterministic failures as a consequence, and design the test suite to distinguish infrastructure conditions from application bugs.

Development Process

  1. Discovery. Fix the four decisions from the top of this article, write the SRS, and start node synchronisation. Roughly 160 hours for documentation alone on a full build.
  2. Architecture and data model. Chain abstraction, transaction state machine, ledger structure, and the deposit address model. Microservice split if the chain count justifies it — 240 hours in our estimates.
  3. Design. User flows for onboarding, send, receive, swap, recovery, and the compliance paths that block a user mid-flow.
  4. Build. Backend and chain integrations first, clients against stable APIs. Keep key handling isolated from feature code.
  5. QA. Unit, integration and regression, plus penetration testing and explicit verification of seed handling. Around 360 hours across tracks.
  6. Compliance and store readiness. KYC and AML wiring, terms and privacy policy, App Store and Play custodial disclosure rules.
  7. Mainnet validation and release. Full deposit, trade and withdrawal cycles on every supported network with real assets. Deployment runs about 112 hours including DevOps.

Teams building a broader Web3 product on top of the wallet will recognise most of this sequence from how to build a Web3 app, with the difference that a wallet has no tolerance for an imperfect key layer.

Where to Start

Lock the four decisions before design: custody model, deposit address model, node strategy, and launch chain scope. Start node synchronisation the same week. Everything downstream — the interface, the swap integrations, the feature roadmap — is cheaper to change later than any of those four.

If you are still comparing vendors, the questions worth asking are in our notes on how to choose the right blockchain development company — most of them are about node operations and key handling, not portfolio screenshots.

We have been building wallets, exchanges and blockchain infrastructure since 2015, across spot and margin trading, derivatives, P2P and instant exchange platforms. If you want a per-module hour breakdown for your own scope rather than a range, send us the requirements.

FAQ

  • How much does it cost to build a crypto wallet app?

    A non-custodial wallet with 10 blockchains, two native apps and an admin panel runs $62,000–$74,000 over 2–3 months based on our own estimates. A full multi-chain product across desktop, mobile and web with 30+ networks takes roughly 5,827 hours and a team of six over 4–6 months. Cold wallet software with NFC signing sits at $84,000–$119,000.

  • What does each additional blockchain actually cost?

    A standard node integration takes 24 development hours plus 8 DevOps hours. Solana, Arbitrum and Algorand take 32 plus 8. Token integration inside an existing network adds 24 hours, and Solana tokens 46. At package scale, going from 10 to 50 chains adds about $34,000 to the backend.

  • Should we run our own nodes or use a provider?

    Use a provider such as Alchemy or QuickNode when you need to list new tokens quickly and scale Web3 functionality. Run self-hosted nodes when your licence requires it — we have deployed that configuration to meet jurisdictional licensing conditions. Either way, run a fallback RPC. A single provider without failover produces failed transactions and wrong balances during any provider incident.

  • How long does node synchronisation take?

    Ethereum, Tron and BNB Smart Chain sync in one to three days. A Bitcoin full node takes five to ten days on dedicated hardware and longer on shared infrastructure. Start node sync in week one of the project, in parallel with development — otherwise Bitcoin becomes your critical path at go-live.

  • Is a shared deposit wallet ever acceptable?

    Only for low volume with trusted counterparties and manual verification. A shared address is vulnerable to transaction hash reuse, where one user attaches another user's hash as proof of payment. It also exposes every user's deposit history through a block explorer and mixes clean and risky funds into one AML profile. For regular operations, use unique addresses per user or a payment provider.

  • Does a non-custodial wallet need KYC?

    A pure self-custody wallet with no fiat rails generally does not, but that boundary is tightening in the EU and elsewhere. The moment you add a fiat on-ramp, hold user funds, or route swaps through your own liquidity, KYC and transaction monitoring become mandatory. Build a KYC-ready architecture from the start even if you do not activate it — retrofitting compliance into a live ledger is significantly more expensive.

  • How do you cut gas costs on deposit sweeps?

    On Tron, replace pre-funding each deposit address with roughly 15 TRX with delegated resources from an external resource provider. The transaction becomes delegate, transfer, reclaim — and the effective blockchain fee for the internal sweep shows as zero in accounting. An empty native token balance on a deposit address then stops blocking consolidation.

  • What is the single most underestimated line item?

    Investigation. In a full multi-chain build it takes 600 hours, over ten percent of the total, covering network behaviour, address derivation, and provider quirks. Second place goes to hardware wallet integration at 144 hours for Ledger and 244 each for Trezor, SecuX and KeepKey.

Rate the post
4.4 / 5 (162 votes)
We have accepted your rating
Do you have a project idea?
Send
Yuri Musienko
Business Development Manager
Yuri Musienko specializes in the development and optimization of crypto exchanges, trading platforms, P2P solutions, crypto payment gateways, and asset tokenization systems. Since 2018, he has been consulting companies on strategic planning, entering international markets, and scaling technology businesses. More details