Development of a Crypto Card Management System

We design and develop full-cycle blockchain solutions: from smart contract architecture to launching DeFi protocols, NFT marketplaces and crypto exchanges. Security audits, tokenomics, integration with existing infrastructure.
Showing 1 of 1All 1305 services
Development of a Crypto Card Management System
Medium
~1-2 weeks
Frequently Asked Questions

Blockchain Development Services

Blockchain Development Stages

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1354
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1248
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    951
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1186
  • image_logo-advance_0.webp
    B2B Advance company logo design
    643
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    925

Development of a Crypto Card Management System

Note: when a user wants to pay with cryptocurrency at a regular store, a complex chain unfolds: conversion, authorization, settlement—all within 1–2 seconds. We have built more than one such system and know every pitfall: from choosing a card issuing provider to building a real-time webhook handler. This article details the architecture that works in production.

A crypto card is a bridge between on-chain assets and traditional payment infrastructure. The user holds USDC, pays at a regular store—the system converts and deducts in the background. Building this is harder than it seems: it intersects card issuing, real-time conversion, compliance, and blockchain infrastructure. We have implemented such systems for neobank startups and crypto-native platforms, encountering nuances of batch settlement, oracle force majeure, and legal requirements in EU and US jurisdictions. Below are details that saved months of development. If you need such a system, contact us for a consultation.

Card Issuing: Which Provider to Work With

Obtaining a sponsor BIN and issuing cards independently is lengthy and expensive: a partnership with Visa/Mastercard requires a significant deposit and takes 12–18 months. The realistic path is to work through card issuing platforms:

  • Marqeta — market leader, programmable cards via Just-in-Time (JIT) Funding. Key feature: with each authorization, Marqeta sends a webhook to your server, you decide to approve or decline, and instantly fund the transaction. Ideal for crypto cards.
  • Lithic (formerly Privacy) — similar to Marqeta, often preferred by startups for simpler onboarding.
  • Moorwand / Railsr (Europe) — for European cards with IBAN.
  • Monavate / Paymentology — alternatives with more flexible terms for crypto-native companies.

All these providers offer REST APIs for issuing cards, managing limits, and retrieving transactions.

The JIT Funding Mechanism

Just-in-Time Funding means the card balance is always zero, and funds appear only at the moment of authorization. For a crypto card, this means: the user authorizes a purchase → the card processor calls your webhook → you convert crypto to fiat → confirm the transaction—all within 1–2 seconds.

Marqeta documentation: "Just-in-Time Funding allows issuers to control each authorization in real time."

Here is a step-by-step processing sequence:

  1. The card processor (Marqeta, Lithic) sends an HTTP request to your webhook with authorization details.
  2. The service identifies the user by card_token and checks the available USDC balance via local cache or fast blockchain query.
  3. If sufficient funds (including a slippage buffer), the system reserves the amount (soft lock) and returns an APPROVE decision.
  4. After settlement (minutes to hours later), a real conversion of USDC to fiat is triggered via an off-ramp provider.
  5. The user's balance is updated, and a push notification is sent.

The webhook must respond within 1–2 seconds. Timeout means automatic transaction decline. This strict requirement defines the entire architecture: no synchronous blockchain operations in this path. In one of our projects, we optimized the handler to respond in under 0.8 seconds by introducing a local cache for user balances and using asynchronous reservation cleanup.

interface AuthorizationWebhook {
  type: "authorization";
  token: string;
  card_token: string;
  amount: number; // in cents
  currency: string; // ISO 4217
  merchant: {
    descriptor: string;
    mcc: string;
    country: string;
  };
  created: string;
}

async function handleAuthorization(
  webhook: AuthorizationWebhook
): Promise<AuthorizationResponse> {
  // 1. Find user and their crypto balance
  const user = await getUserByCardToken(webhook.card_token);
  const requiredUsd = webhook.amount / 100;
  
  // 2. Check available USDC balance
  const usdcBalance = await getUsdcBalance(user.walletAddress);
  if (usdcBalance < requiredUsd * 1.01) { // 1% buffer for slippage
    return { decision: "DECLINE", reason: "INSUFFICIENT_FUNDS" };
  }
  
  // 3. Reserve funds (soft lock)
  const reservation = await reserveFunds(user.id, requiredUsd, webhook.token);
  
  // 4. Confirm authorization
  return {
    decision: "APPROVE",
    amount: webhook.amount,
    reservation_id: reservation.id,
  };
}

Settlement and Actual Deduction

After authorization comes settlement—the actual movement of funds. This can happen minutes or hours after authorization. Here the real crypto conversion takes place.

async function settleTransaction(settlementData: SettlementEvent): Promise<void> {
  const reservation = await getReservation(settlementData.authorization_token);
  
  // For USDC — simply transfer to fiat account via USDC → USD off-ramp
  // (Circle, Stripe Crypto, Bridge.xyz)
  const offRampResult = await circleOffRamp({
    amount: reservation.usdAmount,
    destinationBankAccount: OPERATIONAL_ACCOUNT,
  });
  
  // Update user balance
  await deductUserBalance(reservation.userId, reservation.usdcAmount);
  
  // Send push notification
  await sendTransactionNotification(reservation.userId, {
    amount: reservation.usdAmount,
    merchant: settlementData.merchant.descriptor,
    txId: offRampResult.id,
  });
}

Conversion: USDC vs Volatile Assets

USDC/USDT is the simplest case. Conversion is trivial due to stablecoin pegging. Most first-generation crypto cards work only with stablecoins.

ETH/BTC and others require a real-time price feed and price risk management. Options:

  • Convert to USDC upon card top-up—the user explicitly exchanges ETH → USDC, then everything is as above. The simplest approach.
  • Convert at the moment of transaction—higher risk of slippage (typically 0.5–1%) and price gap between authorization and settlement. Requires a hedging strategy.
  • Virtual balance + periodic settlement—aggregate transactions, convert in batches. Reduces transaction costs but complicates accounting.

Why the Right Card Issuing Provider Matters

The success of a crypto card directly depends on the provider's ability to handle millions of JIT Funding requests with minimal latency. Marqeta is better for JIT Funding due to more detailed webhook configurations, but Lithic is faster to integrate for startups. For the European market, Moorwand or Railsr with SEPA Instant support. A mistake at this stage leads to transaction declines and loss of user trust.

Ensuring Compliance in Crypto Card Issuance

A crypto card with real usage is a financial product, regulated at least as electronic money. Mandatory components:

  • KYC/AML — providers: Sumsub, Persona, Onfido. Integration via REST API + webhook for verification events. Minimum tier: document + selfie. For high limits—Enhanced Due Diligence (EDD). Learn more about KYC and AML.
  • Transaction monitoring — analysis of on-chain history of user addresses. Chainalysis API or Elliptic to check: whether funds come from sanctioned addresses, mixers, darknet markets.
  • Default limits — until KYC is passed: e.g., as per PSD2 exemption. After verification—standard limits. This is a card scheme requirement, not your invention.

Work Process and Evaluation

We follow a structured process to ensure high-quality delivery:

  1. Data collection — gather your business requirements, target jurisdictions, and user scenarios.
  2. Audit and analysis — review existing infrastructure and compliance needs.
  3. Design — architectural design including provider selection, component diagram, and data flow.
  4. Estimation — provide a detailed effort and cost estimate based on the design.
  5. Development — implement the system in iterative sprints.
  6. Testing — unit, integration, and end-to-end testing, including settlement scenarios.
  7. Launch — deploy to production with monitoring and support.

Development Timeline

Stage MVP Full Product
Architecture and stack selection 2 weeks 1 month
Card issuing integration 2–3 weeks 1–2 months
Backend (webhook + core) 2 months 5–7 months
Off-ramp and conversion 3 weeks 2–3 months
KYC/AML module 1 month 2–3 months
Testing and audit 2 weeks 1–2 months
Legal agreements parallel 3–6 months

What's Included in Development

  • Architecture design and stack selection tailored to your business model (B2C or B2B).
  • Integration with a card issuing provider, JIT Funding setup.
  • Backend in Go or Node.js handling webhooks (latency < 1 sec).
  • Off-ramp integration (Circle, Bridge.xyz) for USDC → fiat conversion.
  • KYC/AML module with Sumsub or Persona support.
  • Transaction monitoring, limits, and locking mechanisms.
  • API documentation and operations manual.
  • Technical support during launch and the first 2 months after release.

We guarantee compliance with card scheme and regulatory requirements. Our experience: 5+ years in crypto service development, from wallets to full neobank solutions.

Typical Mistakes When Integrating JIT Funding

  • Synchronous blockchain calls in the webhook — guaranteed timeout.
  • No local balance cache — 100ms+ added latency per request.
  • Incorrect fee calculation — settlement may fail due to limit breaches.
  • Ignoring multi-currency settlements — negative balances can arise during conversion.

Contact us to get an individual assessment of your project. Order the development of a crypto card management system — we'll prepare a proposal in 2 days.

We develop crypto wallets turnkey — from custodial solutions for fintech to smart contract accounts on EIP-4337. 5+ years in blockchain development, 40+ projects implemented. Let's examine which architecture to choose for your task and why MPC or Account Abstraction solve the private key problem that MetaMask and classic HD wallets could not close.

Why are classic wallets dangerous for business?

A seed phrase in a browser extension is the only way to restore access. For retail users, this is a barrier to entry (lost phrase = lost money). For corporate treasuries, it is incompatible with compliance (KYC/AML, role model, multisignature). Any single key leak compromises all funds. These risks are built into the architecture, not poor UX.

We eliminate them at the protocol level: MPC wallets (key never fully assembled), smart contract wallets (authorization logic in code), hardware HSM for institutional storage. Details below.

What is the real difference between custodial and non-custodial?

Custodial — the provider stores the private key. User authenticates via email/password/OAuth. Recovery is trivial, KYC/AML built-in. For centralized financial applications, often the only regulatory acceptable option. Risk: single point of failure (e.g., Bitfinex hack — $72M, FTX — $600M+ client funds).

Non-custodial — keys are with the user. Provider has no access to funds. Storage responsibility falls on the user. For 99% of people, this model is unworkable without additional protection — hence MPC.

MPC wallets: the key that doesn't exist

Multi-Party Computation (MPC) is a cryptographic protocol that allows multiple parties to jointly sign a transaction without revealing their partial secrets. The private key never exists in its assembled form.

Standard scheme: 2-of-3 MPC between user (share on device), provider server, and backup cloud storage. Transaction is signed by any two of three parties. Lost phone — recovery via server + cloud. Server compromised — attacker holds only one share, signing impossible.

TSS (Threshold Signature Scheme) is a concrete implementation of MPC for ECDSA/EdDSA. Algorithms: GG18, GG20, CGGMP21 (the latter is faster and has better security proofs). Libraries: tss-lib (Go, from Binance), multi-party-sig (Go, from Coinbase), ZenGo-X/multi-party-ecdsa (Rust).

MPC requires no on-chain changes — to the blockchain, the signature looks like a normal single-key signature. This saves gas and keeps the key management scheme confidential (not published in chain) — unlike multisig.

Account Abstraction (EIP-4337): smart contract as wallet

EIP-4337 completely changes the model: instead of EOA (Externally Owned Account), a smart contract Account is used. Authorization logic is in contract code, not in protocol cryptography. This opens up arbitrary signing logic, social recovery, session keys, sponsored transactions, and batch operations.

How the EIP-4337 stack works:

User → UserOperation → Bundler → EntryPoint contract → Account contract
                                          ↑
                                    Paymaster (optional, pays gas)

UserOperation — a new type of object (not an L1 transaction). Bundler collects UserOps from an alternative mempool, packs them into one transaction, and sends to EntryPoint. EntryPoint calls validateUserOp on the Account contract — Account decides if the signature is valid.

Practical capabilities:

Social recovery. The contract stores a list of guardians (other addresses or a service). Lost key — guardians vote for replacement. Argent has used this scheme since 2020.

Session keys. A temporary key with limited rights: interaction only with a specific contract, until a certain date, up to a certain amount. For GameFi and dApps — user does not sign every micro-transaction.

Paymaster. A third-party contract pays gas for the user. Onboarding pattern: user does not hold ETH, gas is sponsored by dApp or taken from ERC-20 tokens.

Implementations: Safe{Core} Protocol, Biconomy SDK (Stackup), ZeroDev (Kernel), Alchemy (Rundler bundler). EntryPoint v0.6/v0.7 is deployed and active on Ethereum mainnet, Polygon, Arbitrum, Optimism. We guarantee compatibility with the latest contract versions.

What is a Hardware Security Module for corporate wallets?

For treasuries and institutional storage: HSM (Hardware Security Module). The key is generated and never leaves the secure chip. Signing happens inside the HSM. Hardware attestation is supported. Solutions used: AWS CloudHSM, Azure Dedicated HSM, Thales Luna, YubiHSM 2 (for small volumes). Integration via PKCS#11 or cloud-specific API.

A combination of HSM + MPC is optimal for institutional use: key shares are stored in HSMs on different servers/jurisdictions, signing via TSS. This ensures compliance with regulatory requirements (e.g., for crypto custodians).

Integration with dApps: WalletConnect and standards

Any wallet must be able to interact with dApps. Standard: WalletConnect v2 (Sign API): QR code or deep link, peer-to-peer encrypted channel via relay server. For browser extensions: EIP-1193 (Ethereum Provider API).

On the frontend, we use wagmi + viem — one interface for MetaMask, WalletConnect, Coinbase Wallet, injected providers. For Account Abstraction: EIP-5792 (wallet capabilities) and EIP-7677 (paymaster service).

Development process

  1. Threat model — who is the user (B2C, B2B, institutional), what operations, what is the acceptable risk model. Architecture depends on this.
  2. Selection and design of key storage scheme — MPC, HSM, multisig, or a combination.
  3. Development of Account contract (if EIP-4337) or integration of MPC library.
  4. Backend — MPC coordination, session management, paymaster service (if needed).
  5. Mobile/browser application — UI with WalletConnect integration, biometrics, QR.
  6. Integration with dApps — EIP-1193, WalletConnect v2.
  7. Audit of contracts and cryptographic implementations — mandatory step. MPC libraries have known vulnerabilities (GG18 susceptible to attack with malicious participant without abort protocol). We use libraries with up-to-date security reviews (CGGMP21). Experience passing audits with Certik, Hacken, Trail of Bits — we have certificates.

What is included in the work (deliverables)

  • Source code of smart contracts (Solidity/Rust) with documentation
  • Backend MPC coordination service (Go or Rust) with API
  • Mobile application (iOS/Android) or browser extension
  • Integration with WalletConnect, Ledger/Trezor (if required)
  • Preparation for security audit (vulnerability report)
  • Administrator and user documentation
  • Access to repository, CI/CD, monitoring (Tenderly, Etherscan API)
  • Training of your team (2-3 sessions)
  • Post-launch support — 1 month

Timeline and cost

Solution type Timeline (working weeks)
Custodial with basic UI 4–8
Non-custodial with MPC integration 8–16
EIP-4337 Account with paymaster 6–12
Institutional (HSM + MPC + compliance) from 16

Cost is calculated individually for your project. We will estimate within one day — contact us by email or Telegram. We provide a guarantee on code and timeline.

Typical mistakes in crypto wallet development (and how to avoid them)

  • Using outdated MPC libraries — GG18 without abort protocol. Choose CGGMP21 or tss-lib with up-to-date audit reports.
  • Tight coupling to a single blockchain — not abstracting for L2/sidechains. Use viem/wagmi for cross-chain.
  • Ignoring MEV attacks — when using multisig without timelocks. Add tx simulation (Tenderly) and sandwiching protection.
  • Lack of fallback recovery mechanism — for Account Abstraction, not setting up social recovery. Include from the first release.

We eliminate these pitfalls at the design stage — for each project, we create a threat model and security checklist.

Need a reliable wallet with no compromises? Get a consultation from our architect — we will analyze your task and propose an architecture with a precise estimate. Leave a request — we will respond within a day.