To create a crypto wallet app, settle five decisions before design starts: the custody model, the build path, the networks you launch with, your node strategy and, if the app will hold user funds, the deposit address model. Then build in this order: architecture and key management, client apps, compliance and app store readiness, and full validation on mainnet with real assets.
The interface is the smallest part of the job. In our hour estimate for a multi-platform wallet, the backend took roughly twice the hours of the mobile client.
Budget and timeline: in our 2026 commercial estimates, a non-custodial wallet with 10 networks, an admin panel and two native apps came to about $65,000 over 3–4 months. A multi-platform product at the scale of Exodus — desktop, mobile, web and 30+ networks — came to roughly 5,800 engineering hours for a team of six.
If you want to set up a wallet for yourself rather than build one, start with hot vs cold wallet storage instead.
This is the full path from requirements to release. The sections after it explain the decisions behind each step.
Most wallet projects go over budget because the team picks a UI framework in week one and leaves the architectural decisions for week six. By then the accounting model is already written, and reversing a custody or address decision means rewriting it.
Five decisions drive nearly all of the cost, the timeline and the compliance burden. Make them before design starts.
| Decision | Options | What it drives | Reversible later? |
| Custody model | Non-custodial (seed on device) / MPC / smart account / custodial | Who can move funds, recovery design, regulatory exposure, whether you need to look at money services business registration in the US | No |
| Build path | Custom code / open-source wallet core / wallet infrastructure provider / white label | Time to market, control over key handling, recurring vendor fees, dependency on a third party | Expensive |
| Chain scope at launch | 1–2 / 10 / 30+ networks | Integration and testing per network — about 32 hours for a standard network in our estimates (24 development + 8 DevOps); a new network family costs more | Yes, if abstracted |
| Node strategy | Self-hosted / node provider / hybrid with failover | Uptime, licensing eligibility, the project's critical path | Partially |
| Deposit address model (custodial and platform wallets only) | Address per user / payment provider / shared buffer wallet | Attribution, AML isolation, monthly infrastructure cost | Very expensive |
The rest of this guide follows the same order: custody, build path, MVP scope, architecture, security, then the extra work that appears only if your wallet holds user funds.
Custody is a technical question before it is a legal one. What matters is which process holds the material that can sign a transfer, and whether anyone at your company can reach it. Answering that late is what turns a three-month build into a six-month one, because the custody model decides your onboarding flow, your recovery design, your backend scope and your compliance obligations.
| Model | Who holds signing material | Recovery if a device is lost | What it adds to the build | Typical fit |
| Non-custodial, seed on device | The user's device: the recovery phrase is stored encrypted under a key protected by Secure Enclave or Android Keystore | Only the user's recovery phrase; nobody can restore access for them | Key generation and signing on device, seed backup and confirmation flow | Self-custody products, DeFi users |
| Non-custodial with MPC | Key shares split between the user's device and other parties; no single share can sign | Through the remaining shares and a recovery provider | Distributed signing infrastructure and a recovery workflow | Mainstream users who should not manage a 12- or 24-word phrase |
| Smart account (ERC-4337) | A contract account whose verification logic you define | Social recovery or other rules written into the account | Bundler and paymaster integration, audited account contracts; EVM networks only | Gas-sponsored onboarding, spending limits, seedless sign-up |
| Custodial, platform-held keys | Your backend, encrypted at rest | Account recovery through your support and identity checks | KYC/AML, transaction screening, node operations, key encryption and rotation, withdrawal approvals | Exchanges, fintech apps, products with fiat rails |
| Custodial through a custody provider (Fireblocks and similar) | The provider's infrastructure under a policy engine | Through the provider's workflows | Provider integration and fees; limited token coverage and customization | Institutional products with a fixed token list |
The regulatory starting point in the US follows the same line. FinCEN's 2019 guidance treats hosted wallet providers as money transmitters and does not treat providers of unhosted, self-custody wallet software as money transmitters, as long as they do not combine that role with hosting. Hybrid setups such as MPC with a server-side share need a case-by-case review with counsel, because the answer depends on whether your company can move funds on its own.
Custodial can look cheaper at the outset because less blockchain logic runs on the client, but compare like-for-like scope before drawing that conclusion. What custodial adds is mandatory rather than optional: KYC and AML integration, node deployment, and usually a fiat gateway.
Where the platform itself can move funds — custodial models, or MPC setups with a server-side share — one rule applies. In the exchange and wallet deployments 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, the custody model is irrelevant — you already have the vulnerability.
A custodial wallet stores private keys in its own database, so the encryption key that protects them becomes the most sensitive asset in the system. That changes what "rotating a secret" means.
During a secrets review the team weighed three ways to rotate those master keys:
Very few teams write wallet cryptography from scratch, and they should not. The real choice is how much of the stack you own and how much you rent.
| Path | What you get | What you still build | Main trade-off | Fits when |
| Custom app on an open-source wallet core (for example, Trust Wallet Core) | Tested key derivation and signing primitives across many networks | Apps, backend, indexing, admin panel, integrations | You own security reviews and updates of everything around the core | You want a branded product with full control of the user experience |
| Fully custom, including key handling | Maximum control | Everything, including the parts open-source cores already solve | Highest cost and audit burden | You have a specific cryptographic or hardware requirement |
| Wallet infrastructure or custody provider | Key management and signing as a service | Apps, business logic, compliance flows | Recurring fees, the provider's token coverage, vendor dependency | Custodial or institutional products that need to launch fast |
| White-label wallet | A finished product with your branding | Configuration and integrations | Least control over roadmap, UX and architecture | You are validating demand, not building a differentiated product |
Our default for mobile wallets is the first row: native apps on top of TrustWalletCore for key and signing primitives, with everything else built for the product. The case later in this article involved a client wallet built the same way. If you are modeling your product on an existing one, our walkthroughs of building a wallet like Trust Wallet and a MetaMask-style browser wallet go deeper into those two form factors. If the wallet is mainly a gateway to dApps, see our breakdown of Web3 crypto wallet development.
An MVP wallet has to be trustworthy on day one, so it is less "minimal" than an MVP in other categories. Security and recovery cannot wait for version two. Revenue features can.
| Capability | Ship in the MVP? | Why |
| Wallet creation with recovery phrase backup and confirmation (or MPC / smart-account onboarding) | Yes | This is the step where users lose funds later if the flow is rushed |
| Recovery path tested end to end | Yes | A wallet you cannot restore on a new device is not a product |
| Send and receive with QR codes and clear network labels | Yes | A send on the wrong network is usually irreversible |
| Transaction history with the full status model | Yes | Collapsed statuses produce wrong balances in the UI and support tickets |
| Biometric login with PIN fallback | Yes | Device-level protection is expected from the first release |
| Launch networks | Only the ones your users need | Every network adds integration, testing and node work; build the chain abstraction layer from day one so later additions stay cheaper |
| In-app swaps | Later, or with two liquidity providers | One provider that degrades stops swaps entirely |
| Fiat on-ramp | Only if it is core to the product | It brings KYC into the flow; keep the architecture KYC-ready either way |
| dApp connectivity | Depends on the audience | Required for DeFi users, optional for payments and storage |
| Staking, NFTs, hardware wallet support | Later | Each is a separate workstream; hardware wallets alone run 144–244 hours per device family in our estimates |
The sections above describe decisions one at a time. Here is how they fit into one plan. This is an illustrative scenario we use to explain the process, not a client project.
| Part of the plan | In this example |
| Business goal | A crypto payments startup wants a branded self-custody wallet for retail users who already hold USDT, ETH and BTC, so it can offer payments without holding customer funds. |
| MVP boundaries | Native iOS and Android apps. Bitcoin, Ethereum and Tron at launch, with USDT on Ethereum and Tron. Create and import wallet, backup with confirmation, send and receive, transaction history, biometric unlock, push notifications for incoming transfers. Deliberately excluded: swaps, fiat on-ramp, staking, NFTs, dApp browser, hardware wallets, web and desktop clients. |
| On the device | Seed generation, encrypted storage under a key protected by Secure Enclave or Android Keystore, derivation and signing through TrustWalletCore. Keys never leave the phone. |
| On the backend | Indexing of the user's addresses, transaction history and status tracking, price data, push notifications. No private keys and no ability to move funds. |
| From providers | Node and RPC access with a fallback provider, a price feed, push delivery. |
| Order of work | 1) Decisions, provider accounts and Apple organization enrollment. 2) A key management and chain abstraction spike on all three networks — everything else depends on it. 3) Backend indexing and the transaction state model. 4) Client flows built against stable APIs. 5) QA, including recovery on a second device. 6) Mainnet validation with small amounts on each network. 7) Store submission. |
| Team | Product owner or business analyst, UI/UX designer, iOS and Android developers, a backend developer with blockchain integration experience, a QA engineer and part-time DevOps. For budget, the nearest reference is the basic tier in the cost section below; three networks instead of ten mainly reduce backend and DevOps integration hours. |
| Ready to launch when | The acceptance tests listed later in this guide pass on mainnet, recovery works on a second device of each platform, and both store reviews are cleared. |
A production wallet consists of six layers. A self-custody wallet without deposit addresses needs the first four; the last two become mandatory once you hold user funds.
Blockchain node integration is the most consistently underestimated line on a crypto project plan. The integration itself is not hard; the problem is that synchronization takes calendar time you cannot compress. The times below are what we observed on our projects; the real figure depends on the node client, sync mode and hardware.
| Network | Full node sync time we observed | 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: spin up nodes in week one, in parallel with development.
Where the nodes live is a separate decision from custody:
Bitcoin's UTXO model adds its own address, fee and change logic on top of this; our guide to Bitcoin wallet app specifics covers it separately.
A recurring architectural failure we find in wallet code reviews is a transaction model with three states — pending, success, failed. That is too coarse: it cannot tell a transaction that reached a block from one that executed successfully, one that can no longer be reversed, or one your platform has credited. The table below is the internal model we start from. It is not a standard every blockchain follows; adapt it to each network you support.
| State | What it means | What the UI should show |
| Created | Intent recorded, nothing signed | Draft, cancellable |
| Signed | Signature produced on the device or by the signing service | Preparing |
| Submitted | Broadcast attempted to an RPC endpoint | Sending |
| Pending | Seen in the mempool, not yet in a block | Pending, with speed-up or cancel where the network supports replacement |
| Included | In a block. On EVM networks the receipt also shows whether execution succeeded or reverted | Confirmations counter, or a failure with the reason if execution reverted |
| Final under your policy | Enough confirmations, or protocol finality, for this network and amount | Complete; for deposits, balance credited |
| Replaced or dropped | Another transaction used the same nonce, or the network discarded it | Explicit outcome with a retry path |
Three consequences follow. Store inclusion, execution result, finality and internal crediting as separate facts — on Ethereum, for example, a transaction can sit in a block well before proof-of-stake consensus finalizes that block. Write a confirmation policy per network and product: when a deposit appears, when it is credited, when it can be withdrawn, and what happens if a reorganization removes the block first. And map every backend error to a user-facing message — we have seen a raw "insufficient gas" response with internal details reach an end user.
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 for sessions with external applications, a dApp browser or deep-link handler, and a signature preview that shows the target contract, method, token allowance and network. Make unlimited-approval prompts look different from a transfer — they are a different class of risk.
If your users will use lending, staking or swap protocols, the patterns in how to create a DeFi app determine what the preview has to decode. If you ship your own contracts alongside the wallet, treat how to develop a smart contract as a separate workstream with its own audit, not a backend ticket. On EVM chains, smart accounts under ERC-4337 are worth evaluating early: a paymaster can sponsor gas and the account can implement social recovery, which removes the seed phrase from onboarding — far cheaper to design in than to retrofit. For DeFi-focused self-custody products, see our notes on DeFi wallet development.
Half the security scope of a wallet app lives on the phone, and most guides skip it. Here is what we implement by layer.
| Layer | What we implement |
| iOS / Android client | Recovery phrase and private keys encrypted at rest under a key protected by Secure Enclave or Android Keystore; signing runs in app code with decrypted material held in memory only for the operation. Biometric login with a PIN fallback — never one without the other. Certificate pinning. Access tokens never stored where the OS can leak them. Time-limited tokens handled correctly, without reuse. Insecure connections rejected outright. |
| Backend | Server-side RBAC or ABAC. Parameterized queries and input sanitization. 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. Centralized 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 generate a disproportionate share of support tickets. 2FA codes need a real 30-second lifetime and single use, and a wrong code should keep the modal open with an inline error instead of restarting the flow. Email verification links with a 24-hour TTL need an explicit path for expired links — we have seen users stuck unable to verify, re-register or request a new link.
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.
These are architecture failures, not bugs. Each one costs more to fix after launch than to prevent in discovery.
Recovery is where a wallet earns or loses trust, and the custody model decides what is even possible. Before development starts, agree on what happens in each scenario, who is responsible, and how you will test it.
| Scenario | Expected behavior | Responsibility | Acceptance test |
| Phone lost or replaced (seed-based wallet) | The user restores from the recovery phrase and sees the same accounts and assets | User keeps the phrase; platform makes the restore flow clear and correct | Restore on a second device of each platform; every network and token reappears with correct balances |
| Backup never confirmed | The app asks the user to confirm the phrase before showing the first receive address | Platform enforces the check; user completes it | Skip backup during onboarding, open Receive: the confirmation prompt appears |
| User asks support to restore a non-custodial wallet | Support explains the recovery options; it cannot restore keys or reverse transfers | Platform provides clear support scripts; the phrase stays with the user | Review support scripts; confirm no admin tool can reach keys |
| MPC or social recovery: provider or guardian unavailable | A documented fallback or export path, so the user is not locked out | Platform and recovery provider, defined in the contract | Simulate the provider being unreachable during a restore |
| App update | Wallets created in the previous version still unlock and sign | Platform | Upgrade from the current production build on real devices |
| Custodial account: lost 2FA device | An identity-verified 2FA reset, with upload limits enforced on the server | Platform | Submit oversized and repeated uploads directly to the API; the limits hold |
The last row comes from our own work. A review of the 2FA reset flow on a custodial trading platform we work on found that the file size limit for identity documents existed only in the browser, so a direct request could bypass it and load the authentication service. In a recovery flow, a browser check is a convenience, not a security boundary — the limit belongs where the system accepts the request.
Everything in this section applies to custodial wallets and to platforms that accept deposits — exchanges, payment apps, fintech products with a crypto balance. A pure self-custody wallet can skip it.
Model A — one address per user. Every deposit maps unambiguously to a user and a ledger entry. Clean assets sweep to the hot wallet after screening; if a risky deposit lands, you archive the address rather than delete it and isolate the funds — recovery cases need that history.
Model B — external crypto payment provider. The provider generates addresses, processes payments and handles part of the monitoring. Faster to ship, higher per-transaction cost, an external dependency. If you would rather own that layer, see how to create a crypto payment gateway.
Model C — shared buffer wallet with manual verification. Users send funds to one address and attach the transaction hash; an operator verifies it. In one of our workshops we estimated this at roughly ten times cheaper in monthly maintenance than running your own node — a preliminary estimate, and the risk below is real.
Where compliance risk matters more than transaction cost, the deposit lands on a temporary wallet first, screening runs and the source wallet gets verified, and only cleared funds move to the hot wallet. The cost is a second transaction and a decision, made before implementation, about who pays the internal transfer fee.
For a platform that holds funds, one identity check at registration is not enough. In production we screen every inbound deposit:
Operations after launch bring their own problems. On one platform with Tron-based USDT deposits:
What you must build for compliance follows from the custody model and from whether fiat touches the product. The table below is an engineering view of the usual triggers in the US, not legal advice — confirm the specifics for your structure with counsel.
| Product setup | What it usually triggers | What to build in |
| Pure self-custody, no fiat | Generally outside money transmitter rules under FinCEN's 2019 guidance | A KYC-ready architecture you can switch on later |
| Fiat on-ramp through a licensed partner | Identity checks at the purchase step, run by the partner | Partner integration and clear hand-offs in the UX |
| Platform holds user funds | Hosted wallet provider status, money services business registration and state licensing to assess | KYC, transaction screening, withdrawal approvals, a full audit trail |
| Swaps through your own liquidity | Depends on the structure — review with counsel before building | Separation of user and platform balances, execution records |
On the identity side, we run KYC through SumSub, and in localized configurations add national ID verification through a government identity app. Dual-path KYC means two verification state machines in the backend, and corporate onboarding is a separate route with its own documents, not an extended personal form.
The app stores add their own gate:
"QA passed" is not a useful sign-off for a wallet. Agree with your vendor on tests like these, adapt them to your architecture, and run them on mainnet with small amounts before release. They are acceptance criteria, not a security audit; a separate review of key handling and any smart contracts still applies.
| What to test | The question the test answers |
| Recovery on another device | Do the same accounts and assets come back on a second device of each platform? |
| RPC provider failure | Does the app show a clear state, and does the fallback take over without wrong balances? |
| Double tap on Send | Does the system prevent an accidental second transfer? |
| Failed transaction | Does the UI distinguish a reverted or dropped transaction from one that is still pending? |
| App update | Do wallets created in the previous version still unlock and sign? |
| Balance mismatch | Can you trace why a displayed balance differs from on-chain state and restore the correct one? |
| On-chain result vs internal status (custodial) | Does a withdrawal that succeeded on-chain always end as completed internally — never as rejected and refunded? |
| Approval vs broadcast (custodial) | Can an approved withdrawal exist without an on-chain transaction, and is someone alerted if it does? |
| Withdrawal fees (custodial) | Is the platform fee deducted exactly once, and do every balance view and the admin panel agree? |
Context. A client ran a non-custodial wallet on iOS and Android, built on TrustWalletCore, with an in-house team committing to the same repository daily. They wanted perpetual futures inside the app without operating exchange infrastructure.
Decision. We isolated the work first: we developed in a private fork and submitted pull requests to the client's main repository for their tech lead to review and merge, so nothing touching key derivation or signing could land without their review. For the trading layer we compared dYdX v4, GMX and HyperLiquid, and integrated HyperLiquid through its API because the client did not want to run validators or indexers. Teams that need operational independence should look at what a dYdX clone script involves — the sovereign AppChain model is a different budget.
Trade-off. Trading uptime depends on HyperLiquid rather than on the client or on us. We recorded that as part of the decision at kickoff.
Outcome. The complete module — markets, charting, order types, margin modes, positions and history — was handed over three months after the start, while the client's team kept shipping wallet features in parallel.
The figures below come from our own commercial estimates and hour breakdowns, not from completed-project invoices or market averages. The source documents date from 2026 and are in US dollars. They describe defined scopes, so use them to compare options rather than as a quote for your project. For a full budget model with current ranges, see our crypto wallet app development cost breakdown.
Prices are per component. The cross-platform app and the two native apps are alternative client options, not a sum.
| Component | Basic | Standard | Maximum |
| Backend + admin panel | $43,000 | $65,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 |
| Estimated timeline | 2–3 months | 3 months | 3-4 months |
At the basic tier, the backend with admin panel plus two native apps comes to about $65,000. Going from 10 to 50 networks adds about $34,000 to the backend in the same estimate.
A light, web-first custodial build was estimated at $25,000–$43,000 for the web app plus $10,000–$18,000 for a cross-platform app or $14,000–$24,000 for two native apps, over 1.5–2 months. The full custodial configuration — 5 to 10 nodes, one to three payment gateways, KYC, a support ticket system and, at the higher tier, cold wallet integration — takes 2–3 months plus a one-month discovery phase, which is where you fix the deposit address model.
Cold wallet software with NFC signing came to $84,000–$119,000 across our estimates, depending on platforms and scope. The difference from a standard mobile wallet is not the interface: the private key never enters the application. The device signs; the app only builds and broadcasts.
From our estimate for a wallet at the scale of a multi-platform wallet like 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 |
The estimate assumed six people over 4–6 months, depending on package. Three things stand out:
Next step: if you have fixed your custody model, launch networks and client platforms, send them to us — we will return a per-module hour breakdown for your scope instead of a market range. See our crypto wallet app development services.
A wallet keeps costing money after release, and several of those costs grow with usage. Agree on ownership before launch; the detailed budget model belongs in the cost breakdown linked above.
| Cost item | What drives it | Usually owned by |
| Node and RPC access | Number of networks, request volume, fallback providers | Product owner pays; DevOps monitors |
| Indexing and transaction history | Watched addresses, transaction volume, data retention | Backend team |
| Network upgrades and forks | Protocol changes on each supported chain | Development team under a support agreement |
| Dependency and SDK updates | Wallet core, chain libraries, OS releases, store policy changes | Development team, with a security re-review for anything touching keys or signing |
| Screening and identity checks (custodial) | Number of deposits and users checked | Compliance owner |
| Credentials and secrets | Third-party API keys, provider accounts, encryption keys | A named owner with a rotation procedure |
| Incident response | RPC outages, indexing delays, stuck transactions | Defined in the SLA: who is on call and how fast they respond |
Draw a line in the contract between support — keeping existing networks, integrations and releases working — and new development, such as adding a network, a provider or a feature. Without it, every network upgrade turns into a scope discussion.
Credentials are the item teams forget. On one platform we work on, a password change on a third-party service broke the email integration, because nobody had mapped which services depended on that credential. The response was an inventory of every credential, the services that consume it and how to rotate it without downtime.
Our default stack for a multi-chain wallet:
| Layer | Stack | Note |
| Mobile | Kotlin, Java, Swift; TrustWalletCore for key and signing primitives | Native gives direct control over Keychain and Keystore protection, biometric gating and how long key material stays in memory |
| Web / desktop | React, Redux, TypeScript; C++ with Qt and OpenSSL for desktop builds | Desktop OS targets are set per project |
| Backend | PHP 8+ with Laravel or Node.js LTS with Express; PostgreSQL or MySQL; Redis | Split into services when load, failure isolation between networks or parallel teams justify it |
| 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 off developer laptops |
The native-first choice for mobile is deliberate; the general trade-offs are covered in our comparison of cross-platform vs native development.
One lesson from our exchange infrastructure carries over to wallets. When we moved 17 microservices from VMs to Kubernetes in one exchange deployment, not everything could autoscale: wallet and order book services hold state. Separate stateless services from stateful ones before you write Helm charts, and treat every deposit and withdrawal as an independent queued job rather than a cron pass.
You will get a more accurate estimate, and a more useful conversation, if you arrive with answers to these:
Our notes on how to choose the right blockchain development company list the questions worth asking a vendor — most are about node operations and key handling, not portfolio screenshots. We have built wallets, exchanges and blockchain infrastructure since 2015; if you want a per-module hour breakdown for your scope, send us the requirements.
Yes, but few teams should write wallet cryptography from scratch. The usual path is a custom app on an open-source wallet core such as TrustWalletCore, or on a wallet infrastructure provider for custodial products. The work that makes a wallet production-grade is everything around the keys: chain integrations, indexing, transaction states, security and, for custodial products, compliance.
In our 2026 estimates, a non-custodial wallet with 10 networks, an admin panel and two native apps came to about $65,000 over 3–4 months. A multi-platform product at Exodus scale came to roughly 5,827 hours for a team of six over 4–6 months, and cold wallet software with NFC signing to $84,000–$119,000. Custody model, network count and client platforms move the number most.
In our estimates, 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.
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 license 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.
A pure self-custody wallet with no fiat rails generally does not, and FinCEN's 2019 guidance does not treat providers of unhosted wallet software as money transmitters. The moment you add a fiat on-ramp, hold user funds or route swaps through your own liquidity, identity checks and transaction monitoring come into play. Build a KYC-ready architecture from the start even if you do not activate it, and confirm your specific structure with counsel.