Create your own Fintech app in minutes using Crossmint wallets and onramp.
Key features
- Login with email or social media
- Automatically create non-custodial wallets for your users
- Top up with USDC using a credit or debit card
- Transfer USDC to another wallet or email address
- View your wallet activity
- Withdraw USDC to your bank account
- Support for Base mainnet (automatically enforced in production) and Base Sepolia testnet (development only)
- Passkey-based wallet security
- Leverage more than +200 onchain tools integrating GOAT
DeFi Strategies 🚀
- Aave V3 Vault Deployment: Deploy custom ERC-4626 vaults backed by Aave's Base USDC reserve
- Yearn V3 Integration: Full ERC-4626 compliant vault interactions with deposit/withdrawal flows
- MaxLoss Protection: Configurable slippage protection for safe withdrawals
- Token-Gated Access: Premium strategies unlocked with Unlock Protocol memberships
- Multi-Strategy Support: Deploy and manage multiple yield strategies
See the Yearn V3 Integration Guide and Quick Start for details.
Coming soon
- Currency conversion
- Issue a debit card linked to your wallet
Get in touch with us to get early access to these features!
Join our Telegram community to stay updated on the latest features and announcements.
Easily deploy the template to Vercel with the button below. You will need to set the required environment variables in the Vercel dashboard.
- Clone the repository and navigate to the project folder:
git clone https://github.com/crossmint/fintech-starter-app.git && cd fintech-starter-app- Install all dependencies:
npm install
# or
yarn install
# or
pnpm install
# or
bun install- Set up the environment variables:
cp .env.template .env- Login to the Crossmint staging console and get the client API key from the overview page:
NEXT_PUBLIC_CROSSMINT_CLIENT_API_KEY=your_client_side_API_key- Run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun devThis app includes a comprehensive DeFi strategies integration featuring:
Deploy and interact with Yearn V3 vaults following the ERC-4626 standard:
# Query available Yearn V3 vaults on Base
pnpm yearn:queryFeatures:
- ✅ ERC-4626 Compliant: Standardized deposit/withdrawal functions
- ✅ MaxLoss Protection: Configurable slippage protection (default 1%)
- ✅ Real-time Pricing: Transparent on-chain share conversion
- ✅ User Balance Tracking: Live vault position monitoring
- ✅ Transaction Management: Full state tracking with Basescan links
Quick Start:
- Run
pnpm yearn:queryto find available vaults - Copy vault address from output
- Update
app/strategies/page.tsxwith vault address - Users can now deposit/withdraw directly from the UI
Documentation:
- Quick Start Guide - Get started in 3 steps
- Integration Guide - Complete technical reference
- Deployment Checklist - Production activation guide
Deploy custom ERC-4626 vaults backed by Aave's Base USDC reserve:
- Configure performance fees
- Set revenue sharing with partners
- Automated yield routing
- Transparent on-chain reporting
Premium strategies protected by Unlock Protocol NFT memberships:
- Kalani Vault Automation: Multi-strategy orchestration for Creative Bank members
- Role-based Access: Different tiers unlock different strategies
- Membership Management: Integrated NFT-based authentication
Visit /strategies in your app to see all available DeFi products.
This application currently supports the following chains:
base- Base mainnet (production)base-sepolia- Base Sepolia testnet (development/testing)
To switch between chains:
- Update the chain environment variable in your
.envfile:
# For testnet/development
NEXT_PUBLIC_CHAIN_ID=base-sepolia
# For production
NEXT_PUBLIC_CHAIN_ID=base- Important: Make sure to update the USDC contract address for the chain you're using:
# For Base mainnet
NEXT_PUBLIC_USDC_MINT=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
# For Base Sepolia testnet
NEXT_PUBLIC_USDC_MINT=0x036CbD53842c5426634e7929541eC2318f3dCF7eNote:
- In production (
NODE_ENV=production), the app will always use Base mainnet regardless of theNEXT_PUBLIC_CHAIN_IDsetting. This ensures mainnet-only operations in production. - In development, if
NEXT_PUBLIC_CHAIN_IDis not set or contains an invalid value, the app will default tobase-sepoliafor safety.
This starter app is designed for rapid prototyping and testing in a staging environment. To move to production you'll need to:
- Login to the Crossmint production console and create a client side API key with the following scopes:
users.create,users.read,wallets.read,wallets.create,wallets:transactions.create,wallets:transactions.sign,wallets:transactions.read,wallets:balance.read,wallets.fund. - Set the production environment variables:
Note: The app automatically enforces Base mainnet when
NODE_ENV=production NEXT_PUBLIC_CHAIN_ID=base NEXT_PUBLIC_USDC_MINT=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
NODE_ENV=production, but settingNEXT_PUBLIC_CHAIN_ID=baseis recommended for clarity. - Customize your email template for login and signup in the Crossmint console under the Settings tab in the Branding section.
- For using onramp in production reach out to us on Telegram.
- Enable withdrawals by following the Coinbase API configuration steps below.
Withdrawals are powered by Coinbase and require proper API configuration. For enabling withdrawals you'll need to:
- Create a Coinbase developer account
- Create a Server API Key with the following permissions:
wallet:addresses:readwallet:withdrawals:createwallet:transactions:read
- Add the following environment variables to your
.envfile:COINBASE_API_KEY_ID=your_coinbase_api_key_id_here COINBASE_API_KEY_SECRET=your_coinbase_api_key_secret_here - In the Onramp configuration add your domain to the domain allowlist
Create a .env file in your project root with the following variables:
# Crossmint Configuration (Required)
NEXT_PUBLIC_CROSSMINT_CLIENT_API_KEY=your_crossmint_client_api_key_here
# Chain Configuration (Required)
# Supported values: base, base-sepolia
NEXT_PUBLIC_CHAIN_ID=base-sepolia
NEXT_PUBLIC_USDC_MINT=0x036CbD53842c5426634e7929541eC2318f3dCF7e
# Coinbase Onramp/Offramp Configuration (Required for Deposits and Withdrawals)
COINBASE_API_KEY_ID=your_coinbase_api_key_id_here
COINBASE_API_KEY_SECRET=your_coinbase_api_key_secret_hereUSDC Contract Addresses:
- Base Mainnet:
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 - Base Sepolia Testnet:
0x036CbD53842c5426634e7929541eC2318f3dCF7e
