Implementation of receiving cryptocurrency in a mobile wallet

Accepting cryptocurrency in an app often fails at launch: transactions hang, accounting doesn't reconcile. We develop and maintain such schemes turnkey — from choosing the acceptance method to support regulations. Stuck transactions disappear, and the share of successfully credited payments grows.

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Our competencies:

Frequently Asked Questions

Latest works

  • Development of a mobile application for FEEDME
    Development of a mobile application for FEEDME
    971
  • Development of a mobile application for XOOMER
    Development of a mobile application for XOOMER
    869
  • Development of a mobile application for RHL
    Development of a mobile application for RHL
    1289
  • Development of a mobile application for ZIPPY
    Development of a mobile application for ZIPPY
    1143
  • Development of a mobile application for Affhome
    Development of a mobile application for Affhome
    1076
  • Development of a mobile application for the FLAVORS company
    Development of a mobile application for the FLAVORS company
    677

Why crypto acceptance in a mobile wallet breaks down at launch

The classic launch scenario: crypto acceptance in an app works while there are five transactions per hour.

As soon as peak evenings begin, the operator cannot keep up with manual reconciliation of incoming payments, the queue grows, and half of users see a zero balance even though funds have already been sent.

The second bottleneck is lost notifications. If the app is closed or the system sent a notification while the service was restarting, payment confirmation does not reach the accounting system.

The transaction sits in “processing” status for hours, and it has to be resolved manually using a statement.

The third is a discrepancy between balance and accounting. The local database and the network exist separately: without repeated checks and protection against double crediting, a single transaction can be credited twice or not credited at all.

Stuck transactions during peak hours turn into refunds, manual corrections, and distrust in the wallet.

All four failures — manual crediting, lost notifications, accounting discrepancies, and stuck transactions — stem from one root: wallet integration without its own network observer and without a journal where each transaction has an identifier and an unambiguous status.

Below we break down how this is addressed and why crypto in a mobile wallet requires a separate accounting loop rather than a screen enhancement.

What crypto acceptance inside the app provides

Built-in crypto acceptance changes not only the list of payment methods but also how many transactions reach completion and how many of them have to be resolved manually. The effect is measured by metrics visible in the transaction journal and load graph, not by feel.

Below is what the client gets as an output and which numbers verify it. We select the currency set to match the service audience: from familiar stablecoins such as Tether to native coins of popular networks.

  • Crediting speed. The balance updates on a network event rather than on a polling schedule: the user sees incoming funds in tens of seconds on average and does not close the app while waiting.
  • Share of manual resolutions. Payments with a mismatched amount, duplicate send, or missed payment reference are matched automatically by rules; only a single-digit percentage of transactions remains in the human review queue.
  • Unified balance. Fiat and crypto accounts are brought into one screen, conversion at the exchange rate is performed at the time of the transaction — no need to keep a second app and reconcile amounts manually.
  • Payment checkout conversion. The address and amount are inserted into the form with one tap, without copying a string or switching between windows: at every step there are fewer reasons to abandon the payment.
  • Elimination of a failure class. The wrong network, an outdated address, and sending against an expired invoice are checked before signing — such transactions no longer lead to stuck funds, and the number of failures drops.

Stability at peaks is maintained through an event queue and processing by transaction identifier: batches of credits do not double the balance.

Each point is verified in a load test and against the real journal — median crediting time, share of manual cases, and failures at the checkout stage.

Payment acceptance schemes: provider, own node, automation

Crypto acceptance in a mobile wallet is not a single integration but a choice of architecture. It determines who holds the keys, who confirms the transfer, and how much manual work remains for support. Below are the options that are actually chosen between at launch.

Option When it fits Limitations
Payment provider Fast launch if there is no in-house blockchain team Fee per transfer, dependence on the platform’s limits and rules, some networks unavailable
Own acceptance node High volume, need control over delays and network fees Own infrastructure, monitoring, and updates when the network changes
Custodial scheme Mass-market service: refunds, access recovery, a simple scenario for a beginner Keys are held by the service — higher security and reporting requirements, higher cost of a leak
Non-custodial scheme Keys must remain with the user, the service does not control funds Access recovery is impossible: losing the key equals losing funds, support is limited

Automatic crediting is built on top of any option: the balance is topped up at a specified number of confirmations and a minimum amount, a repeated transfer does not double the remaining balance, and disputed transactions go into the manual review queue.

The schemes are compatible with each other: you can start with a provider and later move the flow to your own node while preserving addresses and transaction history.

Implementation stages: from flow audit to handover to support

Implementing crypto acceptance in a wallet is not connecting a single provider but a chain of work where each step relies on the previous one. We fix the order before the start: the client sees what stage the project is at and which decisions are needed on their side. Below is what this sequence looks like.

  1. Payment flow audit. We analyze existing top-up and withdrawal scenarios: which networks and assets are already supported, where balances are accounted for, and how refunds and stuck transactions are handled. The output is a flow map with clearly marked bottlenecks and discrepancies.
  2. Integration scheme. We fix who is responsible for address generation, transaction confirmation, and key storage, how hot and cold loops are separated, and where the boundary of responsibility lies between the wallet and an external service.
  3. Environment setup. We bring up separate loops for development and pre-production verification, and separate credentials and limits by network. This eliminates the situation where test transactions enter the real ledger.
  4. Test transactions. We run the full cycle on test networks and with small amounts on mainnet: crediting, confirmations, duplicate send, cancellation, and stuck transaction. We separately check behavior during desynchronization with the provider.
  5. Accounting reconciliation. We match wallet balances with external service data and internal accounting, and set up regular automatic reconciliation and discrepancy alerts. Discrepancies should be found by the system, not by the user.
  6. Handover to support. We hand over architecture documentation, incident response procedures, key rotation and address update procedures, access rights, and escalation rules. The support team resolves typical failures according to instructions without contacting development.

What remains in the project: schemes, configurations, procedures

After release, the team is left not just with a working mobile crypto wallet but with a set of artifacts by which the product can be developed, handed over to other engineers, and restored after a failure. Below is the minimum that we document during handover.

  • Wallet configurations — networks and tokens, node addresses, limits and fee calculation rules, test and production loops. Everything is in the repository with revision history, not in server settings.
  • Transaction flow schemes — from key generation to transfer confirmation: where keys are stored, who signs, and how stuck and rejected transactions are handled.
  • Access policies — roles of services and administrators, key lifetimes and rotation procedures, rules for releasing builds to app stores, and an action log.
  • Integration documentation — exchange contracts with blockchain services and exchange-rate providers, error codes and handling scenarios, and behavior when an external service fails.
  • Backup scheme — what we save, at what frequency, where copies are stored, and how we verify restoration on a separate loop without touching production data.
  • Support procedures — response time by severity level, update procedures for provider changes, on-call duties, and escalation points.
  • Recovery procedures — step-by-step instructions for node unavailability, balance desynchronization, and access revocation: what we do and what we check afterward.

Artifacts are updated together with the code: a change in the flow scheme or access policy goes into the documentation with the same update.

Case study: how stuck transactions were eliminated in a subscription service app

A subscription service charged payment from a wallet inside the app, and top-ups were made by crypto transfer. Payment accounting was based on periodic network polling: while the transfer flow was small, this was enough.

State before

At peak, about 6% of top-ups got stuck — funds left the user’s address but the balance did not appear in the app. Crediting time ranged from a couple of minutes to several hours, and some transfers were not found at all.

Support manually resolved every third ticket: exported the address history, matched amounts, and credited the balance manually.

What was changed and what was achieved

We moved payment acceptance to an event-driven model: the app receives a transfer notification and matches it against the expected invoice by address, amount, and number of confirmations.

An idempotent transaction key prevents the same top-up from being credited twice, and background reconciliation picks up what was lost on the node — settlements run on the TRON network, where confirmations arrive predictably.

After the rework, the share of stuck transactions remains below 0.2%, the time until the balance appears dropped to a minute instead of hours, and manual resolutions in support decreased by 92%.

The failure class “funds debited, balance not credited” disappeared from requests: every transfer is either credited automatically or enters the reconciliation queue with a clear status for the user.

Is a cold wallet needed for payment acceptance in the app

Short answer: keeping the acceptance wallet permanently offline is unnecessary and harmful — signatures queue up to one device. But a key sitting on the app server is also a single point of failure: its leak means the loss of the entire balance.

Therefore there are two loops. The hot one accepts payments and prepares transaction drafts; the cold one stores keys and signs.

Multisignature adds a threshold — for example, two of three signatures distributed among the founder, accounting, and an engineer: the loss of one device does not block withdrawals, and the compromise of one key does not allow funds to be controlled.

Option Where it is used Limitations
Connected wallet Payment acceptance, automatic payouts Key on the server: compromise equals loss of balance
Offline cold storage Reserve, large balances, manual withdrawal No automation, physical access required
Multisignature Regular payouts, multiple operators More complex setup, need to monitor share thresholds
Hardware storage Signing on a Ledger device Recovery only from a backup

Operational risk here is more often not in cryptography but in operator access. Support has view-only access, treasury has the right to initiate, and the signature is collected separately from initiation. Rotating shares when an employee leaves is a mandatory procedure, not a one-time setup.

We select the scheme for the acceptance volume and the number of people with access: for a flow of small payments, a hot loop with limits is sufficient; for savings, multisignature with hardware storage. Each option comes with procedures: who initiates, who confirms, and what to do if a device is lost.

Technical doubts: keys, refunds, transaction accounting

Five questions come up more often than others during acceptance: engineers check network behavior and transaction statuses; accounting checks whether the books reconcile. Below are short answers to each.

Is the app closed — will a payment notification arrive?

Yes: crediting is tracked by the server side via address subscriptions, not by the wallet on the device itself. The push is sent after a configurable network confirmation threshold — so as not to show a credit that the network later rolls back.

A transaction is stuck in “processing” — what will happen to it?

The status model takes the transaction through steps until confirmation or expiration of the waiting window, so there are no “forever” stuck states. A background sweep picks up forgotten records, and time-based cancellation returns funds to the available balance.

Does the wallet store private keys on the server?

No. The key is generated and remains in the device’s hardware module; the transaction signature is assembled on the device — the server sees only the signed package. If the device is lost, access is restored using a pre-set phrase or backup key.

Are refunds and transfer cancellation possible?

On the network, a refund is a new counter-transaction; only the recipient can initiate it. On the wallet side, we maintain a queue of such refunds: the transaction undergoes manual review, is recorded as a separate entry, and is not mixed with outgoing transfers.

How does transaction accounting reconcile with the books?

Every movement goes into the journal with a unique identifier, the exchange rate at the time of confirmation, and a status. The export is provided in machine-readable form for the required period, so reconciliation is done by identifiers, not manually by amounts.

Let’s discuss the task: what is needed to come back with an estimate and plan

A project estimate becomes accurate when the input is facts rather than generalities: how crypto assets are currently accepted in the mobile wallet, where balances are accounted for, who holds the keys, and which security requirements need to be met.

Without this, we will give a broad timeline range, and after clarifications it will have to be revised — that is more expensive than a short pause to collect data.

What is useful to send before discussing the task:

  • Current acceptance scheme — top-up addresses, supported networks and tokens, and transactions that are still done manually.
  • Accounting model — how incoming payments are matched to the user, where the credit entry is created, and whether there is reconciliation with an external source.
  • Security requirements — who has access to keys, whether a hardware signing loop is needed, and which checks are mandatory before crediting.
  • Release constraints — hard dates, app store requirements, and dependence on a backend or third-party contractor.
  • Client team composition — who is responsible for the product, who for infrastructure, and who approves changes in the accounting system.
  • What already works in the app — authorization, profile, transaction history: we will reuse part of it instead of rewriting.

In response, we will provide a project estimate broken down by stage, a work plan with milestones, a team composition for the task, and a documentation handover procedure: flow schemes, confirmation processing rules, and rollback procedures.

The task discussion is based on these inputs — it immediately shows where the bottlenecks are and what to do first.