Krenno
All projectsCase study
Web AppFintech2024webmobile-web

RasaCard

Instant Virtual Card Issuance with Multi-Rail Payment Orchestration

Virtual Visa cards, issued instantly, funded your way.

View live product

Client

Mango Solutions LLC

Engagement

fintech company

Duration

5 months

Team

4 people

Krenno roleProduct DesignFrontend EngineeringBackend EngineeringAPI Integration+2 more
Positioning

Why this product exists

RasaCard removes the friction between wanting a prepaid Visa card and holding one. Instead of visiting a retail store, waiting for mail delivery, or navigating fragmented bank portals, users complete a single form, verify their phone, choose how they want to pay — credit, debit, cash, or direct debit — and receive a fully funded virtual Visa card in minutes. The platform unifies card issuing APIs, payment gateway processing, phone verification, and document generation into one seamless checkout flow.

RasaCard proves that Krenno Labs can architect and ship a production fintech product that orchestrates multiple payment providers, integrates with card-issuing banking APIs, implements phone-based identity verification, and delivers a consumer-grade checkout experience — all under the regulatory and compliance constraints of the U.S. prepaid card market. This is the class of work a bank, neobank, or fintech startup needs when launching a new card program.

Built for

  • Consumers who need instant access to a prepaid virtual Visa card
  • Unbanked and underbanked individuals seeking alternative financial products
  • Remittance senders who prefer cash-based funding through MoneyGram
  • Online shoppers who want a disposable card for privacy and security
  • Fintech startups evaluating card-issuance program management
  • Financial institutions exploring white-label virtual card solutions
The story

Challenge, approach, solution

01

The Challenge

Consumers — especially those without traditional bank accounts — needed a fast, accessible way to obtain a funded virtual Visa card online. The existing options were fragmented: physical retail kiosks required in-person visits, bank-issued cards demanded extensive onboarding, and online alternatives supported only a single payment method. The challenge was to build a platform that could issue Visa-branded virtual cards instantly, accept payments through multiple rails including cash networks, and do so within the regulatory framework of U.S. prepaid card programs governed by Evolve Bank & Trust and Visa U.S.A.

02

Our Approach

Krenno Labs designed the platform around a payment-orchestration architecture that decouples the card-issuance pipeline from the funding mechanism. This separation allows users to choose their preferred payment method — credit card via MoneyGram's online gateway, debit card through NMI, real-time push via Visa Direct, or cash deposit at any MoneyGram agent location — while the backend consistently creates the cardholder, provisions the account, activates the card, and loads the selected value. Identity verification is handled through Appwrite-powered phone OTP with Vonage as the telecom backbone, and every successful transaction generates a branded PDF invoice with MoneyGram reference details for cash-funded purchases. The frontend delivers a step-by-step guided flow with real-time validation, dynamic fee calculation, and a post-purchase card-redemption walkthrough.

03

The Solution

RasaCard is a production-grade web application built on Next.js that takes a user from form entry to funded virtual Visa card in a single session. The platform integrates with the Pungle card-issuing API for cardholder management, account provisioning, card activation, and value loading. Payments are routed through three distinct processors — MoneyGram for credit, debit, and cash transactions; NMI for gateway-processed card payments with 3D Secure authentication; and Visa Direct for real-time debit-card push funding. Appwrite serves as the backend data layer, managing user records, account-holder mappings, successful purchase logs, and MoneyGram reference numbers across dedicated database collections. The entire system is deployed via PM2 on a production server with ngrok tunneling available for webhook testing, and the frontend is styled with Tailwind CSS and DaisyUI for a dark-themed, responsive consumer experience.

Experience

The Experience

A user lands on the RasaCard purchase page and is presented with a clean billing information form. They enter their personal details — name, address, city, state, country, postal code, email, and phone — and select a load amount from preset tiers ranging from $25 to $500. As soon as the phone number reaches ten digits, the system automatically triggers a phone verification flow: the number is validated against Vonage's Number Insight API, and if legitimate, an OTP is sent via Appwrite's phone session service. The user enters the OTP in a modal dialog to confirm ownership. With identity verified, the user proceeds to checkout, where they choose from credit card, debit card, Visa Direct, or MoneyGram cash as their funding method. Each method opens a tailored payment interface — NMI's hosted tokenization fields with 3D Secure for card payments, a Visa Direct popup for real-time debit pushes, or a MoneyGram reference receipt for cash deposits. Upon successful payment, the platform creates the cardholder record, provisions a virtual account, activates the card, loads the selected value, and redirects the user to a success page displaying their new card's last four digits. A branded PDF invoice is generated with all transaction details, and a step-by-step visual guide walks the user through redeeming their virtual card via the Visa card management portal — including adding it to Apple Pay, Google Pay, or Samsung Pay.

Product

What we built into the product

Instant Virtual Visa Card Issuance

Provisions and activates prepaid virtual Visa cards on demand through the Pungle card-issuing API, delivering a fully funded card to the user within a single session — no physical delivery or branch visit required.

Multi-Rail Payment Orchestration

Supports five distinct payment pathways — MoneyGram credit, MoneyGram debit, MoneyGram cash, NMI gateway processing, and Visa Direct real-time push — enabling users to fund their card through whichever method is most accessible to them.

Phone-Based Identity Verification

Implements a real-time OTP verification flow that validates the user's phone number against Vonage's Number Insight API and confirms ownership through Appwrite's phone session service before allowing checkout.

Tiered Load Amount Selection

Offers preset funding tiers from $25 to $500 with dynamically calculated activation fees and provider-specific service charges, giving users transparent pricing before they commit to a purchase.

3D Secure Card Authentication

Integrates NMI's 3D Secure protocol for card-present-not-present transactions, adding an additional layer of fraud protection and regulatory compliance for credit and debit card payments.

MoneyGram Cash Deposit Workflow

Generates a branded PDF invoice with MoneyGram reference numbers, receive codes, and agent details, enabling users to fund their card with cash at any MoneyGram point-of-sale location worldwide.

Also included

Visa Direct Real-Time Funding

Allows users to push funds from an existing Visa debit card directly to the platform through Pungle's tokenization and pull-transaction APIs, enabling near-instant card funding.

Automated Invoice Generation

Produces professional PDF invoices using jsPDF with branded logos, structured payment breakdowns, sender details, and compliance disclaimers — automatically generated and downloadable upon successful purchase.

Guided Card Redemption Experience

Provides a visual step-by-step walkthrough with annotated screenshots that guides users through the card redemption process, including adding the virtual card to Apple Pay, Google Pay, and Samsung Pay.

Daily Purchase Limit Enforcement

Enforces per-user daily transaction limits by cross-referencing phone and email against the purchase history database, preventing abuse while maintaining a frictionless experience for legitimate buyers.

Multi-Country Address Support

Supports address entry for multiple countries with ISO-compliant country codes, dynamic state/province dropdowns populated via the country-state-city library, and locale-aware phone code prefixing.

Session Analytics and User Replay

Integrates OpenReplay for real-time session recording and replay, providing the operations team with full visibility into user behavior, drop-off points, and checkout funnel performance.

Privacy Policy and Terms Management

Implements in-app modal dialogs for privacy policies and terms of service with structured legal content components, ensuring compliance transparency without disrupting the purchase flow.

Gallery

Product surfaces

Visual placeholders mark where final screens and captures will live. Drop assets at the paths shown on each tile.

Engineering

How it's built

RasaCard follows a full-stack Next.js architecture where the client-side React application communicates exclusively with internal API routes (api/v1/*), which in turn orchestrate calls to external payment and banking APIs. A user request flows through the following path: the React frontend collects form data and manages local state with Zustand, then sends requests to versioned internal API endpoints. These server-side handlers authenticate against external services — Pungle for card issuing, MoneyGram for cash payments, NMI for card processing, Vonage for phone verification — using server-side environment credentials. Appwrite serves as the unified persistence layer, storing user profiles, account-holder mappings, and transaction records across isolated database collections. Payment tokenization happens on the client side via provider SDKs (Pungle for Visa Direct, NMI Gateway.js for card payments), ensuring that raw card numbers never touch the application server. The entire system is deployed as a single Next.js application managed by PM2.

API-driven architectureBackend-for-Frontend (BFF) patternMulti-provider payment orchestrationClient-side tokenization with server-side processingCollection-isolated document persistenceModular component architecture

Decision

Use Next.js API routes as a Backend-for-Frontend rather than a separate backend service

Consolidating the frontend and API orchestration layer into a single deployable unit reduces infrastructure complexity, simplifies credential management, and eliminates cross-origin security concerns — while keeping all payment API keys strictly server-side.

Faster development velocity, simplified deployment, and a single security perimeter for credential management.

Decision

Implement client-side tokenization via provider SDKs (Pungle, NMI Gateway.js) rather than server-side card processing

Client-side tokenization ensures that raw card numbers, CVVs, and expiry dates are sent directly to the payment provider's secure infrastructure and never transit the application server, minimizing PCI DSS scope.

Reduced PCI compliance burden, lower security risk, and faster payment processor certification.

Decision

Support five distinct payment methods through a pluggable provider architecture

Different user segments have different payment access — some have credit cards, some only debit, and many only have cash. A pluggable payment architecture allows each provider to be implemented, tested, and maintained independently.

Maximum market reach across banked and unbanked populations, with the ability to add new payment providers without modifying the core checkout flow.

Stack

RasaCard is built on a Next.js full-stack architecture with server-side API routes orchestrating card-issuing, payment processing, and identity verification through multiple third-party providers. The frontend leverages React 18 with Zustand for state management and Tailwind CSS with DaisyUI for a polished dark-themed interface. Appwrite provides the persistence and authentication layer, while TypeScript enforces type safety across the entire codebase — from API request models to payment card interfaces.

Next.js 13React 18TypeScriptZustandTailwind CSS + DaisyUINext.js API Routes (v1)Pungle Card-Issuing APIAppwriteAppwrite DatabasePM2 Process ManagerNode.js 18+Phone OTP Verification3D Secure (NMI)Server-Side API Key ManagementDaily Purchase Limit ControlsRSA Public Key CryptographyMoneyGramNMI (Network Merchants Inc.)
Process

From brief to shipped product

  1. 01Discovery

    Analyzed the prepaid card market, identified underserved segments (unbanked consumers, cash-preferring users), and mapped the regulatory requirements for Visa prepaid card issuance under Evolve Bank & Trust's program.

  2. 02Design

    Designed a streamlined single-page checkout flow with progressive disclosure — billing information first, payment method selection second — using a dark-themed UI with Montserrat typography and DaisyUI components for a modern fintech aesthetic.

  3. 03Development

    Built iteratively — starting with the core card-issuance pipeline (cardholder → account → activation → value load), then layering payment providers one at a time (MoneyGram credit → NMI → Visa Direct → MoneyGram cash), with TypeScript interfaces enforcing API contract compliance throughout.

  4. 04Testing

    Validated each payment pathway end-to-end against Pungle's staging API, tested phone verification flows with real SMS delivery through Vonage, and verified invoice generation accuracy across different load amounts and fee tiers.

  5. 05Launch

    Deployed to production via PM2 with environment-specific configuration for staging and production API endpoints, DNS configured for buy.rasacard.com, and OpenReplay instrumented for post-launch session monitoring.

Challenges

Hard problems, clear outcomes

Multi-Provider Payment Orchestration with Divergent APIs

Problem

Each payment provider — MoneyGram, NMI, and Pungle/Visa Direct — exposes fundamentally different API contracts, authentication mechanisms, and transaction flows. MoneyGram requires signed payloads with RSA keys, NMI uses hosted tokenization with 3D Secure callbacks, and Pungle uses bearer-token authenticated RESTful endpoints. Unifying these into a consistent checkout experience without leaking provider complexity to the user required a carefully designed abstraction layer.

Approach

Implemented a pluggable payment-provider architecture where each provider is encapsulated as an independent React component with its own tokenization, submission, and error-handling logic. The PaymentMethod type system maps payment types (credit, debit, cash) to arrays of provider configurations, each with its own component, supported card types, and selection handler. Server-side API routes handle the provider-specific authentication and request signing, presenting a uniform internal API surface to the frontend.

Outcome

Users select a payment method and interact with a single, consistent checkout interface regardless of which provider processes the transaction. New payment providers can be added by implementing a new component and registering it in the payment method configuration — without modifying the checkout flow or card-issuance pipeline.

Sequencing a Multi-Step Card Issuance Pipeline with Idempotency Constraints

Problem

Issuing a virtual card requires a strict sequence of dependent API calls — create cardholder, provision account, activate card, load value — where each step depends on IDs returned by the previous step, and failure at any point must be handled without creating orphaned records or double-charging the user.

Approach

Built the card-issuance pipeline as a sequential async chain with error boundaries at each step. Account-holder records are checked against the Appwrite database before creation to prevent duplicates. The cardholder ID is passed through the pipeline as a dependency, and the payment transaction is completed before card creation begins — ensuring the user is only charged once a successful payment is confirmed.

Outcome

The platform reliably issues cards across thousands of transactions without orphaned records or double charges, and the account-holder deduplication logic prevents unnecessary API calls to the banking partner.

Real-Time Phone Verification Without Blocking the Checkout Flow

Problem

Phone verification is required before checkout, but a slow or failed OTP flow could cause users to abandon the purchase. The system needed to trigger verification as early as possible while keeping the rest of the form interactive.

Approach

Implemented an auto-trigger mechanism that fires the phone verification flow as soon as the phone field reaches ten digits — using a React useEffect hook that watches the phone value. The verification runs in the background: the Vonage Number Insight check validates the number, and if it passes, an OTP is sent automatically via Appwrite. A modal dialog appears for OTP entry while the rest of the form remains editable. The checkout button enforces the verification gate but does not block form completion.

Outcome

Users complete the verification step without a separate page or explicit trigger, and the form remains responsive throughout. The average time from form completion to checkout is minimized because verification runs concurrently with data entry.

Cash Payment Integration Across Digital and Physical Channels

Problem

Users who prefer cash need a way to initiate a card purchase online but complete the payment at a physical MoneyGram location. This requires generating a reference document with specific agent codes, account numbers, and calculated fees that the MoneyGram agent can process.

Approach

Built a client-side PDF invoice generator using jsPDF that produces a branded receipt containing the MoneyGram receive code, receive agent ID, receive account number, send amount, receive amount, and calculated fee amount. The fee calculation uses a tiered model based on the load amount. The generated PDF is immediately downloadable and contains all details the MoneyGram agent needs to process the transaction.

Outcome

Users who cannot or prefer not to pay online can complete the entire funding process through MoneyGram's global cash network — extending the product's reach to unbanked populations and cash-preferring demographics.

Proof

What this work proves

RasaCard operates as a live consumer product serving users across the United States, with cards issued under Evolve Bank & Trust's Visa prepaid program. The platform processes transactions across five distinct payment rails, verifies user identity in real time, and delivers funded virtual Visa cards within minutes of purchase. The multi-provider payment architecture demonstrates production-grade fintech integration, and the cash-deposit channel extends the product's reach to underserved populations typically excluded from digital financial products.

Fintech Product DevelopmentVirtual Card IssuancePayment Gateway IntegrationMulti-Provider Payment OrchestrationBanking-as-a-Service API IntegrationPhone-Based Identity VerificationPCI-Compliant Tokenization ArchitectureCash-to-Digital Payment WorkflowsReal-Time Push Payment ProcessingDocument Generation and Invoice AutomationRegulatory Compliance ImplementationAnti-Fraud Controls and Velocity LimitsFull-Stack Next.js ArchitectureSession Analytics and User Behavior MonitoringConsumer-Grade Checkout UX

What's next

Cardholder Dashboard and Card Management Portal

Extend the platform with a secure cardholder portal where users can view their card balance, transaction history, freeze or unfreeze their card, set spending limits, and manage their profile — transforming the single-purchase flow into a persistent financial management experience.

Recurring Card Funding and Auto-Reload

Enable users to set up recurring value loads on a schedule — weekly, biweekly, or monthly — with automatic charging of their saved payment method, turning the one-time purchase product into a subscription-like reloadable card service.

Cryptocurrency Payment Integration

Add cryptocurrency as a funding source, enabling users to purchase virtual Visa cards using Bitcoin, Ethereum, or stablecoins — bridging the gap between digital asset holders and traditional card-based commerce.

Have something in mind?

Tell us about your product and we'll help you ship something worth putting on this page.

→Start a project