Crypto Card Development: Real-Time Conversion and Issuance

When a customer wants to pay with cryptocurrency in a regular store, the complexity of technical implementation often stops businesses. We develop crypto cards that automatically convert tokens to fiat at the moment of payment, making the transaction familiar for the terminal. Our team delivers the project turnkey—from selecting a BIN sponsor to card issuance and ongoing support, ensuring reliability and scalability.

Blockchain Development Services

Frequently Asked Questions

Latest works

  • Development of a web application for FEEDME
    Development of a web application for FEEDME
    1335
  • Development of an online store for the company FURNORO
    Development of an online store for the company FURNORO
    1293
  • B2B Advance company logo design
    B2B Advance company logo design
    738
  • Development of a web application for Enviok
    Development of a web application for Enviok
    1031
  • AIDER company logo development
    AIDER company logo development
    978
  • CRM development for Chasseurs
    CRM development for Chasseurs
    1087

How Does Real-Time Crypto-to-Fiat Conversion on Cards Work?

A user holds USDC, wants to pay with a card at a regular store. At the moment of the card transaction: USDC is deducted from the crypto balance, converted to USD/EUR, and the card processing proceeds as a standard fiat payment. To the terminal, it's a normal Visa/Mastercard transaction. This isn't theory—it's the working architecture behind products like Crypto.com Card, Binance Card, and Coinbase Card.

This architecture combines crypto-to-fiat conversion, JIT funding, and BIN sponsorship to deliver a working crypto card. For a successful crypto card launch with crypto-to-fiat conversion, you need reliable BIN sponsorship and real-time JIT funding.

We are a team of blockchain engineers with over 8 years of experience in crypto and payment solutions. We have delivered more than 15 projects integrating cards for digital assets. Our certified engineers guarantee 99.9% uptime with a proven architecture. We design the system turnkey: from BIN sponsor selection to launching virtual and physical cards. Reach out to discuss your project—we'll assess it and propose timelines starting from 6 months. Project costs typically range from $250k to $500k, and our optimized liquidity routing can save you up to 20% on transaction costs. For a $10M annual volume, that's $2M in savings.

Building such a system from scratch involves solving several independent engineering challenges: card issuance, real-time conversion, BIN sponsorship and licensing, compliance. Each is a separate work track.

What Deliverables Can You Expect?

  • Architectural design tailored to your volumes and regions.
  • Selection and integration of a BIN sponsor (Marqeta, Galileo, or others).
  • Implementation of JIT (Just-In-Time funding) logic—authorization webhook under 2 seconds.
  • Connection of liquidity providers (CEX, OTC, embedded liquidity) for digital asset-to-fiat conversion.
  • KYC/AML setup (Sumsub, Chainalysis) and tax-reporting module.
  • Issuance of virtual and physical cards, integration with Apple Pay/Google Pay.
  • Full API documentation, CI/CD pipelines, admin dashboard, 24/7 support during launch, and 6 months of post-launch maintenance.
  • Training for your operations team and access to source code repositories.

Our expertise in crypto-to-fiat conversion, JIT funding, and BIN sponsorship ensures seamless card issuance. This ensures efficient crypto-to-fiat conversion with real-time JIT funding for card issuance.

What Are the Architectural Components?

BIN Sponsorship and Card Issuance

BIN (Bank Identification Number)—the first 6–8 digits of a card identifying the issuer. Without a banking license, you work through a BIN sponsor: a licensed issuing bank that issues cards under its BIN but with your logic. You are the program manager.

Major BIN sponsors and card issuing platforms:

Provider Networks Regions API
Marqeta Visa, Mastercard US, EU, UK REST + Webhooks
Galileo Visa US, LATAM REST
Stripe Issuing Visa, Mastercard US, EU REST
Moorwand Mastercard EU/EEA REST
Railsbank (Railsr) Visa, Mastercard EU, UK REST

Marqeta is the most common in crypto-card projects (Coinbase Card uses Marqeta). Its JIT funding is 2x more reliable than alternative providers. Just-In-Time (JIT) funding is key: Marqeta calls your webhook at authorization, and you approve or decline the transaction with real-time conversion.

Just-In-Time Funding: Real-Time Logic

JIT is the heart of the architecture. Flow:

Card terminal → Visa/MC network → Marqeta → your JIT webhook (< 2 sec) → [you convert digital assets → fiat] → approve/decline response → Marqeta → terminal 

JIT webhook response time: strictly under 2 seconds. That's the hardware timeout of card networks. Miss it and the transaction is automatically declined. According to Marqeta documentation, average API latency is ~200 ms, leaving headroom for the conversion chain. Marqeta's JIT response is 5x faster than traditional batch processing.

// JIT webhook handler
import { FastifyRequest, FastifyReply } from 'fastify';
import { MarqetaJITPayload } from './types';

export async function handleJITFunding(
  req: FastifyRequest<{ Body: MarqetaJITPayload }>,
  reply: FastifyReply,
) {
  const startTime = Date.now();
  const { transaction, card_token } = req.body;

  try {
    // 1. Identify user by card_token
    const user = await userService.findByCardToken(card_token);
    if (!user) return reply.send({ result: 'DECLINED', memo: 'USER_NOT_FOUND' });

    // 2. Get fiat amount
    const { currency_code, amount } = transaction;

    // 3. Calculate crypto amount to deduct
    const cryptoAmount = await pricingService.fiatToCrypto({
      fiatAmount: amount,
      fiatCurrency: currency_code,
      cryptoCurrency: user.primaryAsset, // USDC, BTC, ETH
    });

    // 4. Check balance
    const balance = await walletService.getBalance(user.id, user.primaryAsset);
    if (balance < cryptoAmount.amountWithFee) {
      return reply.send({ result: 'DECLINED', memo: 'INSUFFICIENT_FUNDS' });
    }

    // 5. Reserve digital assets (hold, not immediate deduction)
    const holdId = await walletService.createHold({
      userId: user.id,
      asset: user.primaryAsset,
      amount: cryptoAmount.amountWithFee,
      expiresAt: new Date(Date.now() + 30 * 60 * 1000), // 30 min
      transactionRef: transaction.token,
    });

    // Check we're within timeout
    if (Date.now() - startTime > 1500) {
      await walletService.releaseHold(holdId);
      return reply.send({ result: 'DECLINED', memo: 'TIMEOUT' });
    }

    return reply.send({
      result: 'APPROVED',
      funding: {
        amount,
        currency_code,
      },
    });
  } catch (error) {
    logger.error({ error, transaction }, 'JIT funding error');
    return reply.send({ result: 'DECLINED', memo: 'INTERNAL_ERROR' });
  }
}

The Hold Mechanism

Card authorization and actual debit (clearing) are different events. They can be up to 5 days apart (especially for offline transactions). Holds reserve the crypto balance; real conversion happens at clearing. This prevents overspending from multiple authorizations.

Liquidity Providers and FX

For automatic digital asset-to-fiat conversion:

  • CEX via API: Binance, Coinbase Prime, Kraken. Suitable for medium volumes. Risk: API latency, exchange may be unavailable. Need failover to a second provider.
  • OTC/Prime Brokers: Galaxy Digital, FalconX, Cumberland. For large volumes ($100k+) they offer better rates, work via API or RFQ.
  • Embedded liquidity: Integration with Fireblocks Settlement Network or B2C2. Programmatic access, fixed spreads, enterprise SLA.

Average savings using multi-provider routing can be up to 20% compared to a single provider.

Example LiquidityRouter Implementation
interface LiquidityProvider {
    getQuote(params: QuoteParams): Promise<Quote>;
    executeConversion(quoteId: string): Promise<ConversionResult>;
    getBalance(currency: string): Promise<Decimal>;
}

class LiquidityRouter implements LiquidityProvider {
    private providers: LiquidityProvider[];

    async getQuote(params: QuoteParams): Promise<Quote> {
        // Request quotes from all providers in parallel
        const quotes = await Promise.allSettled(
            this.providers.map(p => p.getQuote(params))
        );

        // Select best quote (by rate considering fee)
        const validQuotes = quotes
            .filter(q => q.status === 'fulfilled')
            .map(q => (q as PromiseFulfilledResult<Quote>).value);

        return validQuotes.sort((a, b) => b.netRate - a.netRate)[0];
    }
}

AML and Tax Considerations

KYC and Transaction Monitoring

Mandatory KYC: identity verification (passport/ID), proof of address, OFAC screening. Providers: Sumsub, Jumio, Onfido. Verification levels affect limits: basic—$500/day, enhanced—$10,000/day.

Transaction monitoring: AML requirements include monitoring suspicious patterns, structuring detection, unusual merchant categories. We use Chainalysis, Elliptic for crypto side; ComplyAdvantage for fiat.

Licensing: In EU—EMI license or partnership with a licensed EMI. In US—Money Transmitter License in each state. Obtaining a license: 6–18 months. Alternative: operate under the BIN sponsor's license.

Conversion of crypto at card payment is a taxable event in the US, UK, most of EU. The system generates tax-lot records: asset, acquisition date, cost basis, spend date, amount, and gain/loss. Providing tax reports (e.g., 1099 in the US) is mandatory for licensed operations.

Physical and Virtual Cards

Virtual cards are issued instantly via Marqeta API, used for Apple Pay/Google Pay—priority for a fast MVP.

Physical cards require a card personalisation bureau (Matica, Entrust). Production time: 5–14 days. Delivery tracking integration.

Freeze/unfreeze—user must be able to instantly freeze a card via the app. Marqeta API: cards/{token}/transitions with state SUSPENDED.

Launch Steps in 5 Phases

  1. Select BIN sponsor and KYC provider – 4–8 weeks.
  2. Develop core wallet and JIT funding – 6–8 weeks.
  3. Integrate liquidity providers – 2–3 weeks.
  4. Build card management and compliance – 6–8 weeks.
  5. Test and launch – 3–4 weeks.

Development Timeline

Phase Content Duration
Setup & licensing BIN sponsor selection, legal structure, KYC provider 4–8 weeks
Core wallet Crypto wallet, balances, holds 3–4 weeks
JIT funding Webhook, pricing engine, hold mechanism 3–4 weeks
Liquidity FX integration, conversion at clearing 2–3 weeks
Card management Virtual cards, Marqeta integration 3–4 weeks
Compliance AML monitoring, tax reporting 3–4 weeks
Physical cards Production, delivery 2–3 weeks
Testing & launch End-to-end, UAT, soft launch 3–4 weeks

Realistic timeline from zero to a working product with virtual cards: 6–9 months. The main blockers—legal/compliance onboarding with the BIN sponsor and KYC provider, not development.

Request a project assessment—get a consultation on architecture and licensing. Contact us for a preliminary evaluation.